---
openapi: 3.0.3
info:
  title: Elasticsearch API
  license:
    name: Apache 2.0
    url: https://github.com/elastic/elasticsearch-specification/blob/main/LICENSE
  version: ''
  description: |
    Elasticsearch provides REST APIs that are used by the UI components and can be called directly to configure and access Elasticsearch features.
    ## Documentation source and versions
    This documentation is derived from the `main` branch of the [elasticsearch-specification](https://github.com/elastic/elasticsearch-specification) repository. It is provided under license [Attribution-NonCommercial-NoDerivatives 4.0 International](https://creativecommons.org/licenses/by-nc-nd/4.0/).
    This documentation contains work-in-progress information for future Elastic Stack releases.
  x-doc-license:
    name: Attribution-NonCommercial-NoDerivatives 4.0 International
    url: https://creativecommons.org/licenses/by-nc-nd/4.0/
  x-feedbackLink:
    label: Feedback
    url: https://github.com/elastic/docs-content/issues/new?assignees=&labels=feedback%2Ccommunity&projects=&template=api-feedback.yaml&title=%5BFeedback%5D%3A+
security:
- apiKeyAuth: []
- basicAuth: []
- bearerAuth: []
tags:
- name: autoscaling
  x-displayName: Autoscaling
  description: 'The autoscaling APIs enable you to create and manage autoscaling policies
    and retrieve information about autoscaling capacity. Autoscaling adjusts resources
    based on demand. A deployment can use autoscaling to scale resources as needed,
    ensuring sufficient capacity to meet workload requirements.

    '
  externalDocs:
    url: https://www.elastic.co/docs/deploy-manage/autoscaling
    description: Learn more about autoscaling.
- name: analytics
  x-displayName: Behavioral analytics
  description: 'The behavioral analytics APIs let you create and manage analytics
    collections and view their data. Use them to analyze users’ search and click behavior,
    improve result relevance, and identify content gaps.

    '
- name: cat
  x-displayName: Compact and aligned text (CAT)
  description: |
    The compact and aligned text (CAT) APIs aim are intended only for human consumption using the Kibana console or command line. They are not intended for use by applications. For application consumption, it's recommend to use a corresponding JSON API.
    All the cat commands accept a query string parameter `help` to see all the headers and info they provide, and the `/_cat` command alone lists all the available commands.
- name: cluster
  x-displayName: Cluster
  description: 'The cluster APIs enable you to retrieve information about your infrastructure
    on cluster, node, or shard level. You can manage cluster settings and voting configuration
    exceptions, collect node statistics and retrieve node information.

    '
  externalDocs:
    url: https://www.elastic.co/docs/deploy-manage/distributed-architecture/discovery-cluster-formation/cluster-state-overview
    description: Learn more about the cluster state.
- name: health_report
  x-displayName: Cluster - Health
  description: 'The cluster - health API provides you a report with the health status
    of an Elasticsearch cluster.

    '
- name: connector
  x-displayName: Connector
  description: |
    The connector and sync jobs APIs provide a convenient way to create and manage Elastic connectors and sync jobs in an internal index.
    Connectors are Elasticsearch integrations for syncing content from third-party data sources, which can be deployed on Elastic Cloud or hosted on your own infrastructure.
    This API provides an alternative to relying solely on Kibana UI for connector and sync job management. The API comes with a set of validations and assertions to ensure that the state representation in the internal index remains valid.
    This API requires the `manage_connector` privilege or, for read-only endpoints, the `monitor_connector` privilege.
  externalDocs:
    url: https://www.elastic.co/docs/reference/search-connectors/api-tutorial
    description: Check out the connector API tutorial.
- name: ccr
  x-displayName: Cross-cluster replication
  description: 'The cross-cluster replication (CCR) APIs let you run replication operations,
    such as creating and managing follower indices or auto-follow patterns. Use CCR
    to replicate indices across clusters to maintain search availability during outages,
    reduce indexing impact, and lower search latency by serving requests closer to
    users.

    '
  externalDocs:
    description: Learn more about cross-cluster replication.
    url: https://www.elastic.co/docs/deploy-manage/tools/cross-cluster-replication
- name: data stream
  x-displayName: Data stream
  description: 'The data stream APIs enable you to create and manage data streams
    and data stream lifecycles. A data stream lets you store append-only time series
    data across multiple indices while giving you a single named resource for requests.
    Data streams are well-suited for logs, events, metrics, and other continuously
    generated data.

    '
  externalDocs:
    description: Learn more about data streams.
    url: https://www.elastic.co/docs/manage-data/data-store/data-streams
- name: document
  x-displayName: Document
  description: 'The document APIs enable you to create and manage documents in an
    Elasticsearch index.

    '
  externalDocs:
    description: Learn more about reading and writing documents.
    url: https://www.elastic.co/docs/deploy-manage/distributed-architecture/reading-and-writing-documents
- name: enrich
  x-displayName: Enrich
  description: 'The enrich APIs enable you to manage enrich policies. An enrich policy
    is a set of configuration options used to add the right enrich data to the right
    incoming documents.

    '
  externalDocs:
    url: https://www.elastic.co/docs/manage-data/ingest/transform-enrich/data-enrichment
    description: Learn more about data enrichment.
- name: eql
  x-displayName: EQL
  description: 'Event Query Language (EQL) is a query language for event-based time
    series data, such as logs, metrics, and traces.

    '
  externalDocs:
    url: https://www.elastic.co/docs/explore-analyze/query-filter/languages/eql
    description: Learn more about EQL search.
- name: esql
  x-displayName: ES|QL
  description: 'The Elasticsearch Query Language (ES|QL) provides a powerful way to
    filter, transform, and analyze data stored in Elasticsearch, and in the future
    in other runtimes.

    '
  externalDocs:
    url: https://www.elastic.co/docs/explore-analyze/query-filter/languages/esql
    description: Learn more about ES|QL.
- name: features
  x-displayName: Features
  description: 'The feature APIs enable you to introspect and manage features provided
    by Elasticsearch and Elasticsearch plugins.

    '
  externalDocs:
    url: https://www.elastic.co/docs/deploy-manage/tools/snapshot-and-restore#feature-state
    description: Learn more about feature states.
- name: fleet
  x-displayName: Fleet
  description: 'The Fleet APIs support Fleet’s use of Elasticsearch as a data store
    for internal agent and action data.

    '
  externalDocs:
    url: https://www.elastic.co/docs/reference/fleet
    description: Learn more about Fleet.
- name: graph
  x-displayName: Graph explore
  description: 'The graph explore API enables you to extract and summarize information
    about the documents and terms in an Elasticsearch data stream or index.

    '
  externalDocs:
    url: https://www.elastic.co/docs/explore-analyze/visualize/graph
    description: Get started with Graph.
- name: indices
  x-displayName: Index
  description: 'Index APIs enable you to manage individual indices, index settings,
    aliases, mappings, and index templates.

    '
  externalDocs:
    url: https://www.elastic.co/docs/manage-data/data-store/index-basics
    description: Learn more about indices.
- name: ilm
  x-displayName: Index lifecycle management
  description: 'The index lifecycle management APIs enable you to set up policies
    to automatically manage the index lifecycle.

    '
  externalDocs:
    url: https://www.elastic.co/docs/manage-data/lifecycle/index-lifecycle-management
    description: Learn more about managing the index lifecycle.
- name: inference
  x-displayName: Inference
  description: 'Inference APIs enable you to use certain services, such as built-in
    machine learning models (ELSER, E5), models uploaded through Eland, Cohere, OpenAI,
    Azure, Google AI Studio or Hugging Face. For built-in models and models uploaded
    through Eland, the inference APIs offer an alternative way to use and manage trained
    models. However, if you do not plan to use the inference APIs to use these models
    or if you want to use non-NLP models, use the machine learning trained model APIs.

    '
  externalDocs:
    url: https://www.elastic.co/docs/explore-analyze/elastic-inference/inference-api
    description: Learn about default inference endpoints, adaptive allocations, and
      chunking.
- name: info
  x-displayName: Info
  description: 'The info API provides basic build, version, and cluster information.

    '
- name: ingest
  x-displayName: Ingest
  description: Ingest APIs enable you to manage tasks and resources related to ingest
    pipelines and processors.
  externalDocs:
    url: https://www.elastic.co/docs/manage-data/ingest
    description: Learn more about ingesting data.
- name: license
  x-displayName: Licensing
  description: Licensing APIs enable you to manage your licenses.
  externalDocs:
    url: https://www.elastic.co/subscriptions
    description: For more information about the different types of licenses, refer
      to Elastic subscriptions.
- name: logstash
  x-displayName: Logstash
  description: 'Logstash APIs enable you to manage pipelines that are used by Logstash
    Central Management.

    '
  externalDocs:
    url: https://www.elastic.co/docs/reference/logstash/logstash-centralized-pipeline-management
    description: Learn more about centralized pipeline management.
- name: ml
  x-displayName: Machine learning
  description: 'The machine learning APIs enable you to retrieve information related
    to the Elastic Stack machine learning features.

    '
  externalDocs:
    url: https://www.elastic.co/docs/explore-analyze/machine-learning
    description: Learn more about machine learning.
- name: ml anomaly
  x-displayName: Machine learning anomaly detection
  description: 'The machine learning anomaly detection APIs enable you to perform
    anomaly detection activities.

    '
  externalDocs:
    url: https://www.elastic.co/docs/explore-analyze/machine-learning/anomaly-detection/ml-ad-finding-anomalies
    description: Learn more about finding anomalies.
- name: ml data frame
  x-displayName: Machine learning data frame analytics
  description: 'The machine learning data frame analytics APIs enable you to perform
    data frame analytics activities.

    '
  externalDocs:
    url: https://www.elastic.co/docs/explore-analyze/machine-learning/data-frame-analytics/ml-dfa-overview
    description: Learn more about data frame analytics.
- name: ml trained model
  x-displayName: Machine learning trained model
  description: 'The machine learning trained models APIs enable you to perform model
    management operations.

    '
  externalDocs:
    url: https://www.elastic.co/docs/explore-analyze/machine-learning/nlp/ml-nlp-overview
    description: Learn more about natural language processing.
- name: migration
  x-displayName: Migration
  description: 'The migration APIs power Kibana''s Upgrade Assistant feature.

    '
  externalDocs:
    url: https://www.elastic.co/docs/deploy-manage/upgrade/prepare-to-upgrade/upgrade-assistant
    description: Learn more about Kibana's Upgrade Assistant.
- name: monitoring
  x-displayName: Monitoring
  externalDocs:
    url: https://www.elastic.co/docs/deploy-manage/monitor
    description: Learn more about monitoring.
- name: shutdown
  x-displayName: Node lifecycle
  description: 'The node lifecycle APIs enable you to prepare nodes for temporary
    or permanent shutdown, monitor the shutdown status, and enable a previously shut-down
    node to resume normal operations.

    '
- name: project
  x-displayName: Project
  description: 'The project APIs enable you to get project tags and manage your project
    routing expressions.

    '
- name: query_rules
  x-displayName: Query rules
  description: |
    Query rules enable you to configure per-query rules that are applied at query time to queries that match the specific rule. Query rules are organized into rulesets, collections of query rules that are matched against incoming queries. Query rules are applied using the rule query.
    If a query matches one or more rules in the ruleset, the query is re-written to apply the rules before searching. This allows pinning documents for only queries that match a specific term. Alternatively, you can use the [Query Rules UI](https://www.elastic.co/docs/solutions/search/query-rules-ui) to manage query rules.
  externalDocs:
    url: https://www.elastic.co/docs/reference/elasticsearch/rest-apis/searching-with-query-rules
    description: Learn more about searching with query rules.
- name: rollup
  x-displayName: Rollup
  description: 'The rollup APIs enable you to create, manage, and retrieve information
    about rollup jobs.

    '
  externalDocs:
    url: https://www.elastic.co/docs/manage-data/lifecycle/rollup
    description: Learn more about rollup.
- name: script
  x-displayName: Script
  description: 'Use the script support APIs to get a list of supported script contexts
    and languages. Use the stored script APIs to manage stored scripts and search
    templates.

    '
  externalDocs:
    url: https://www.elastic.co/docs/explore-analyze/scripting
    description: Learn more about scripting.
- name: search
  x-displayName: Search
  description: 'The search APIs enable you to search and aggregate data stored in
    Elasticsearch indices and data streams.

    '
  externalDocs:
    url: https://www.elastic.co/docs/explore-analyze
    description: Learn more about searching.
- name: search_application
  x-displayName: Search application
  description: 'The search application APIs enable you to manage tasks and resources
    related to Search Applications.

    '
  externalDocs:
    url: https://www.elastic.co/docs/solutions/search/search-applications
    description: Learn more about search applications.
- name: searchable_snapshots
  x-displayName: Searchable snapshots
  description: 'The searchable snapshots APIs enable you to perform searchable snapshots
    operations.

    '
  externalDocs:
    url: https://www.elastic.co/docs/deploy-manage/tools/snapshot-and-restore/searchable-snapshots
    description: Learn more about searchable snapshots.
- name: security
  x-displayName: Security
  description: 'The security APIs enable you to perform security activities, and add,
    update, retrieve, and remove application privileges, role mappings, and roles.
    You can also create and update API keys and create and invalidate bearer tokens.

    '
  externalDocs:
    url: https://www.elastic.co/docs/deploy-manage/security
    description: Learn more about security.
- name: snapshot
  x-displayName: Snapshot and restore
  description: 'Snapshot and restore APIs enable you to set up snapshot repositories,
    manage snapshot backups, and restore snapshots to a running cluster.

    '
  externalDocs:
    url: https://www.elastic.co/docs/deploy-manage/tools/snapshot-and-restore
    description: Learn more about snapshot and restore operations.
- name: slm
  x-displayName: Snapshot lifecycle management
  description: 'Snapshot lifecycle management (SLM) APIs enable you to set up policies
    to automatically take snapshots and control how long they are retained.

    '
  externalDocs:
    url: https://www.elastic.co/docs/deploy-manage/tools/snapshot-and-restore/create-snapshots
    description: Learn more about creating a snapshot.
- name: sql
  x-displayName: SQL
  description: 'Elasticsearch''s SQL APIs enable you to run SQL queries on Elasticsearch
    indices and data streams.

    '
  externalDocs:
    url: https://www.elastic.co/docs/explore-analyze/query-filter/languages/sql
    description: Check out the overview and tutorials for the Elasticsearch SQL features.
- name: streams
  x-displayName: Streams
- name: synonyms
  x-displayName: Synonyms
  description: 'The synonyms management API provides a convenient way to define and
    manage synonyms in an internal system index. Related synonyms can be grouped in
    a "synonyms set". Create as many synonym sets as you need.

    '
  externalDocs:
    url: https://www.elastic.co/docs/solutions/search/full-text/search-with-synonyms
    description: Learn more about synonyms.
- name: tasks
  x-displayName: Task management
  description: 'The task management APIs enable you to retrieve information about
    tasks or cancel tasks running in a cluster.

    '
  externalDocs:
    url: https://www.elastic.co/docs/troubleshoot/elasticsearch/task-queue-backlog
    description: Check out the troubleshooting the Task Management API.
- name: text_structure
  x-displayName: Text structure
  description: 'The text structure APIs enable you to find the structure of a text
    field in an Elasticsearch index.

    '
- name: transform
  x-displayName: Transform
  description: 'The transform APIs enable you to create and manage transforms.

    '
  externalDocs:
    url: https://www.elastic.co/docs/explore-analyze/transforms
    description: Learn more about transforms.
- name: xpack
  x-displayName: Usage
  description: 'The usage API provides usage information about the installed X-Pack
    features.

    '
- name: watcher
  x-displayName: Watcher
  description: 'You can use Watcher to watch for changes or anomalies in your data
    and perform the necessary actions in response.

    '
  externalDocs:
    url: https://www.elastic.co/docs/explore-analyze/alerts-cases/watcher
    description: Learn more about Watcher.
paths:
  "/_async_search/{id}":
    get:
      tags:
      - search
      summary: Get async search results
      description: |-
        Retrieve the results of a previously submitted asynchronous search request.
        If the Elasticsearch security features are enabled, access to the results of a specific async search is restricted to the user or API key that submitted it.
      operationId: async-search-get
      parameters:
      - in: path
        name: id
        description: A unique identifier for the async search.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: keep_alive
        description: |-
          The length of time that the async search should be available in the cluster.
          When not specified, the `keep_alive` set with the corresponding submit async request will be used.
          Otherwise, it is possible to override the value and extend the validity of the request.
          When this period expires, the search, if still running, is cancelled.
          If the search is completed, its saved results are deleted.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: typed_keys
        description: Specify whether aggregation and suggester names should be prefixed
          by their respective types in the response
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: wait_for_completion_timeout
        description: |-
          Specifies to wait for the search to be completed up until the provided timeout.
          Final results will be returned if available before the timeout expires, otherwise the currently available results will be returned once the timeout expires.
          By default no timeout is set meaning that the currently available results will be returned without any additional wait.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: return_intermediate_results
        description: |-
          Specifies whether the response should contain intermediate results if the query is still running when the wait_for_completion_timeout
          expires or if no wait_for_completion_timeout is specified.
          If true and the search is still running, the search response
          will include any hits and partial aggregations that are available.
          If false and the search is still running, the search response will not include any hits (but possibly include
          total hits) nor will include any partial aggregations.
          When not specified, the intermediate results are returned for running queries.
        deprecated: false
        schema:
          type: boolean
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/async_search._types.AsyncSearchDocumentResponseBase"
              examples:
                AsyncSearchGetResponseExample1:
                  description: A succesful response from `GET /_async_search/FmRldE8zREVEUzA2ZVpUeGs2ejJFUFEaMkZ5QTVrSTZSaVN3WlNFVmtlWHJsdzoxMDc=`.
                  value: "{\n  \"id\" : \"FmRldE8zREVEUzA2ZVpUeGs2ejJFUFEaMkZ5QTVrSTZSaVN3WlNFVmtlWHJsdzoxMDc=\",\n
                    \ \"is_partial\" : false, \n  \"is_running\" : false, \n  \"start_time_in_millis\"
                    : 1583945890986,\n  \"expiration_time_in_millis\" : 1584377890986,
                    \n  \"completion_time_in_millis\" : 1583945903130, \n  \"response\"
                    : {\n    \"took\" : 12144,\n    \"timed_out\" : false,\n    \"num_reduce_phases\"
                    : 46, \n    \"_shards\" : {\n      \"total\" : 562,\n      \"successful\"
                    : 188, \n      \"skipped\" : 0,\n      \"failed\" : 0\n    },\n
                    \   \"hits\" : {\n      \"total\" : {\n        \"value\" : 456433,\n
                    \       \"relation\" : \"eq\"\n      },\n      \"max_score\" :
                    null,\n      \"hits\" : [ ]\n    },\n    \"aggregations\" : {
                    \n      \"sale_date\" :  {\n        \"buckets\" : []\n      }\n
                    \   }\n  }\n}"
      x-state: Generally available; Added in 7.7.0
      x-codeSamples:
      - lang: Console
        source: 'GET /_async_search/FmRldE8zREVEUzA2ZVpUeGs2ejJFUFEaMkZ5QTVrSTZSaVN3WlNFVmtlWHJsdzoxMDc=

          '
      - lang: Python
        source: |-
          resp = client.async_search.get(
              id="FmRldE8zREVEUzA2ZVpUeGs2ejJFUFEaMkZ5QTVrSTZSaVN3WlNFVmtlWHJsdzoxMDc=",
          )
      - lang: JavaScript
        source: |-
          const response = await client.asyncSearch.get({
            id: "FmRldE8zREVEUzA2ZVpUeGs2ejJFUFEaMkZ5QTVrSTZSaVN3WlNFVmtlWHJsdzoxMDc=",
          });
      - lang: Ruby
        source: |-
          response = client.async_search.get(
            id: "FmRldE8zREVEUzA2ZVpUeGs2ejJFUFEaMkZ5QTVrSTZSaVN3WlNFVmtlWHJsdzoxMDc="
          )
      - lang: PHP
        source: |-
          $resp = $client->asyncSearch()->get([
              "id" => "FmRldE8zREVEUzA2ZVpUeGs2ejJFUFEaMkZ5QTVrSTZSaVN3WlNFVmtlWHJsdzoxMDc=",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_async_search/FmRldE8zREVEUzA2ZVpUeGs2ejJFUFEaMkZ5QTVrSTZSaVN3WlNFVmtlWHJsdzoxMDc="'
      - lang: Java
        source: |
          client.asyncSearch().get(g -> g
              .id("FmRldE8zREVEUzA2ZVpUeGs2ejJFUFEaMkZ5QTVrSTZSaVN3WlNFVmtlWHJsdzoxMDc=")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    delete:
      tags:
      - search
      summary: Delete an async search
      description: |-
        If the asynchronous search is still running, it is cancelled.
        Otherwise, the saved search results are deleted.
        If the Elasticsearch security features are enabled, the deletion of a specific async search is restricted to: the authenticated user that submitted the original search request; users that have the `cancel_task` cluster privilege.
      operationId: async-search-delete
      parameters:
      - in: path
        name: id
        description: A unique identifier for the async search.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
      x-state: Generally available; Added in 7.7.0
      x-codeSamples:
      - lang: Console
        source: 'DELETE /_async_search/FmRldE8zREVEUzA2ZVpUeGs2ejJFUFEaMkZ5QTVrSTZSaVN3WlNFVmtlWHJsdzoxMDc=

          '
      - lang: Python
        source: |-
          resp = client.async_search.delete(
              id="FmRldE8zREVEUzA2ZVpUeGs2ejJFUFEaMkZ5QTVrSTZSaVN3WlNFVmtlWHJsdzoxMDc=",
          )
      - lang: JavaScript
        source: |-
          const response = await client.asyncSearch.delete({
            id: "FmRldE8zREVEUzA2ZVpUeGs2ejJFUFEaMkZ5QTVrSTZSaVN3WlNFVmtlWHJsdzoxMDc=",
          });
      - lang: Ruby
        source: |-
          response = client.async_search.delete(
            id: "FmRldE8zREVEUzA2ZVpUeGs2ejJFUFEaMkZ5QTVrSTZSaVN3WlNFVmtlWHJsdzoxMDc="
          )
      - lang: PHP
        source: |-
          $resp = $client->asyncSearch()->delete([
              "id" => "FmRldE8zREVEUzA2ZVpUeGs2ejJFUFEaMkZ5QTVrSTZSaVN3WlNFVmtlWHJsdzoxMDc=",
          ]);
      - lang: curl
        source: 'curl -X DELETE -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_async_search/FmRldE8zREVEUzA2ZVpUeGs2ejJFUFEaMkZ5QTVrSTZSaVN3WlNFVmtlWHJsdzoxMDc="'
      - lang: Java
        source: |
          client.asyncSearch().delete(d -> d
              .id("FmRldE8zREVEUzA2ZVpUeGs2ejJFUFEaMkZ5QTVrSTZSaVN3WlNFVmtlWHJsdzoxMDc=")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_async_search/status/{id}":
    get:
      tags:
      - search
      summary: Get the async search status
      description: |
        Get the status of a previously submitted async search request given its identifier, without retrieving search results.
        If the Elasticsearch security features are enabled, the access to the status of a specific async search is restricted to:

        * The user or API key that submitted the original async search request.
        * Users that have the `monitor` cluster privilege or greater privileges.

        ## Required authorization

        * Cluster privileges: `monitor`
      operationId: async-search-status
      parameters:
      - in: path
        name: id
        description: A unique identifier for the async search.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: keep_alive
        description: |-
          The length of time that the async search needs to be available.
          Ongoing async searches and any saved search results are deleted after this period.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/async_search.status.StatusResponseBase"
              examples:
                AsyncSearchStatusResponseExample1:
                  summary: An active async search
                  description: A succesful response from `GET /_async_search/status/FmRldE8zREVEUzA2ZVpUeGs2ejJFUFEaMkZ5QTVrSTZSaVN3WlNFVmtlWHJsdzoxMDc=`,
                    which retrieves the status of a previously submitted async search
                    without the results.
                  value: "{\n  \"id\" : \"FmRldE8zREVEUzA2ZVpUeGs2ejJFUFEaMkZ5QTVrSTZSaVN3WlNFVmtlWHJsdzoxMDc=\",\n
                    \ \"is_running\" : true,\n  \"is_partial\" : true,\n  \"start_time_in_millis\"
                    : 1583945890986,\n  \"expiration_time_in_millis\" : 1584377890986,\n
                    \ \"_shards\" : {\n      \"total\" : 562,\n      \"successful\"
                    : 188, \n      \"skipped\" : 0,\n      \"failed\" : 0\n  }\n}"
                AsyncSearchStatusResponseExample2:
                  summary: A completed async search
                  description: 'A succesful response from `GET /_async_search/status/FmRldE8zREVEUzA2ZVpUeGs2ejJFUFEaMkZ5QTVrSTZSaVN3WlNFVmtlWHJsdzoxMDc=`
                    for an async search that has completed. The status response has
                    an additional `completion_status` field that shows the status
                    code of the completed async search.

                    '
                  value: "{\n  \"id\" : \"FmRldE8zREVEUzA2ZVpUeGs2ejJFUFEaMkZ5QTVrSTZSaVN3WlNFVmtlWHJsdzoxMDc=\",\n
                    \ \"is_running\" : false,\n  \"is_partial\" : false,\n  \"start_time_in_millis\"
                    : 1583945890986,\n  \"expiration_time_in_millis\" : 1584377890986,\n
                    \ \"_shards\" : {\n      \"total\" : 562,\n      \"successful\"
                    : 562,\n      \"skipped\" : 0,\n      \"failed\" : 0\n  },\n\"completion_status\"
                    : 200 \n}"
                AsyncSearchStatusResponseExample3:
                  summary: A failed async search
                  description: 'A response from `GET /_async_search/status/FmRldE8zREVEUzA2ZVpUeGs2ejJFUFEaMkZ5QTVrSTZSaVN3WlNFVmtlWHJsdzoxMDc=`
                    for an async search that has completed with an error. The status
                    response has an additional `completion_status` field that shows
                    the status code of the completed async search.

                    '
                  value: "{\n  \"id\" : \"FmRldE8zREVEUzA2ZVpUeGs2ejJFUFEaMkZ5QTVrSTZSaVN3WlNFVmtlWHJsdzoxMDc=\",\n
                    \ \"is_running\" : false,\n  \"is_partial\" : true,\n  \"start_time_in_millis\"
                    : 1583945890986,\n  \"expiration_time_in_millis\" : 1584377890986,\n
                    \ \"_shards\" : {\n      \"total\" : 562,\n      \"successful\"
                    : 450,\n      \"skipped\" : 0,\n      \"failed\" : 112\n  },\n\"completion_status\"
                    : 503 \n}"
      x-state: Generally available; Added in 7.11.0
      x-codeSamples:
      - lang: Console
        source: 'GET /_async_search/status/FmRldE8zREVEUzA2ZVpUeGs2ejJFUFEaMkZ5QTVrSTZSaVN3WlNFVmtlWHJsdzoxMDc=

          '
      - lang: Python
        source: |-
          resp = client.async_search.status(
              id="FmRldE8zREVEUzA2ZVpUeGs2ejJFUFEaMkZ5QTVrSTZSaVN3WlNFVmtlWHJsdzoxMDc=",
          )
      - lang: JavaScript
        source: |-
          const response = await client.asyncSearch.status({
            id: "FmRldE8zREVEUzA2ZVpUeGs2ejJFUFEaMkZ5QTVrSTZSaVN3WlNFVmtlWHJsdzoxMDc=",
          });
      - lang: Ruby
        source: |-
          response = client.async_search.status(
            id: "FmRldE8zREVEUzA2ZVpUeGs2ejJFUFEaMkZ5QTVrSTZSaVN3WlNFVmtlWHJsdzoxMDc="
          )
      - lang: PHP
        source: |-
          $resp = $client->asyncSearch()->status([
              "id" => "FmRldE8zREVEUzA2ZVpUeGs2ejJFUFEaMkZ5QTVrSTZSaVN3WlNFVmtlWHJsdzoxMDc=",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_async_search/status/FmRldE8zREVEUzA2ZVpUeGs2ejJFUFEaMkZ5QTVrSTZSaVN3WlNFVmtlWHJsdzoxMDc="'
      - lang: Java
        source: |
          client.asyncSearch().status(s -> s
              .id("FmRldE8zREVEUzA2ZVpUeGs2ejJFUFEaMkZ5QTVrSTZSaVN3WlNFVmtlWHJsdzoxMDc=")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/{index}/_async_search":
    post:
      tags:
      - search
      summary: 'Run an async search

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_async_search</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/{index}/_async_search</span>\n
        \                     </div>\n                    \n\nWhen the primary sort
        of the results is an indexed field, shards get sorted based on minimum and
        maximum value that they hold for that field. Partial results become available
        following the sort criteria that was requested.\n\nWarning: Asynchronous search
        does not support scroll or search requests that include only the suggest section.\n\nBy
        default, Elasticsearch does not allow you to store an async search response
        larger than 10Mb and an attempt to do this results in an error.\nThe maximum
        allowed size for a stored async search response can be set by changing the
        `search.max_async_search_response_size` cluster level setting."
      operationId: async-search-submit
      parameters:
      - "$ref": "#/components/parameters/async_search.submit-index"
      - "$ref": "#/components/parameters/async_search.submit-wait_for_completion_timeout"
      - "$ref": "#/components/parameters/async_search.submit-keep_alive"
      - "$ref": "#/components/parameters/async_search.submit-keep_on_completion"
      - "$ref": "#/components/parameters/async_search.submit-allow_no_indices"
      - "$ref": "#/components/parameters/async_search.submit-allow_partial_search_results"
      - "$ref": "#/components/parameters/async_search.submit-analyzer"
      - "$ref": "#/components/parameters/async_search.submit-analyze_wildcard"
      - "$ref": "#/components/parameters/async_search.submit-batched_reduce_size"
      - "$ref": "#/components/parameters/async_search.submit-ccs_minimize_roundtrips"
      - "$ref": "#/components/parameters/async_search.submit-default_operator"
      - "$ref": "#/components/parameters/async_search.submit-df"
      - "$ref": "#/components/parameters/async_search.submit-docvalue_fields"
      - "$ref": "#/components/parameters/async_search.submit-expand_wildcards"
      - "$ref": "#/components/parameters/async_search.submit-explain"
      - "$ref": "#/components/parameters/async_search.submit-ignore_throttled"
      - "$ref": "#/components/parameters/async_search.submit-ignore_unavailable"
      - "$ref": "#/components/parameters/async_search.submit-lenient"
      - "$ref": "#/components/parameters/async_search.submit-max_concurrent_shard_requests"
      - "$ref": "#/components/parameters/async_search.submit-preference"
      - "$ref": "#/components/parameters/async_search.submit-request_cache"
      - "$ref": "#/components/parameters/async_search.submit-routing"
      - "$ref": "#/components/parameters/async_search.submit-search_type"
      - "$ref": "#/components/parameters/async_search.submit-stats"
      - "$ref": "#/components/parameters/async_search.submit-stored_fields"
      - "$ref": "#/components/parameters/async_search.submit-suggest_field"
      - "$ref": "#/components/parameters/async_search.submit-suggest_mode"
      - "$ref": "#/components/parameters/async_search.submit-suggest_size"
      - "$ref": "#/components/parameters/async_search.submit-suggest_text"
      - "$ref": "#/components/parameters/async_search.submit-terminate_after"
      - "$ref": "#/components/parameters/async_search.submit-timeout"
      - "$ref": "#/components/parameters/async_search.submit-track_total_hits"
      - "$ref": "#/components/parameters/async_search.submit-track_scores"
      - "$ref": "#/components/parameters/async_search.submit-typed_keys"
      - "$ref": "#/components/parameters/async_search.submit-rest_total_hits_as_int"
      - "$ref": "#/components/parameters/async_search.submit-version"
      - "$ref": "#/components/parameters/async_search.submit-_source"
      - "$ref": "#/components/parameters/async_search.submit-_source_excludes"
      - "$ref": "#/components/parameters/async_search.submit-_source_includes"
      - "$ref": "#/components/parameters/async_search.submit-seq_no_primary_term"
      - "$ref": "#/components/parameters/async_search.submit-q"
      - "$ref": "#/components/parameters/async_search.submit-size"
      - "$ref": "#/components/parameters/async_search.submit-from"
      - "$ref": "#/components/parameters/async_search.submit-sort"
      requestBody:
        "$ref": "#/components/requestBodies/async_search.submit"
      responses:
        '200':
          "$ref": "#/components/responses/async_search.submit-200"
      x-state: Generally available; Added in 7.7.0
      x-codeSamples:
      - lang: Console
        source: |-
          POST /sales*/_async_search?size=0
          {
            "sort": [
              { "date": { "order": "asc" } }
            ],
            "aggs": {
              "sale_date": {
                "date_histogram": {
                  "field": "date",
                  "calendar_interval": "1d"
                }
              }
            }
          }
      - lang: Python
        source: |-
          resp = client.async_search.submit(
              index="sales*",
              size="0",
              sort=[
                  {
                      "date": {
                          "order": "asc"
                      }
                  }
              ],
              aggs={
                  "sale_date": {
                      "date_histogram": {
                          "field": "date",
                          "calendar_interval": "1d"
                      }
                  }
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.asyncSearch.submit({
            index: "sales*",
            size: 0,
            sort: [
              {
                date: {
                  order: "asc",
                },
              },
            ],
            aggs: {
              sale_date: {
                date_histogram: {
                  field: "date",
                  calendar_interval: "1d",
                },
              },
            },
          });
      - lang: Ruby
        source: |-
          response = client.async_search.submit(
            index: "sales*",
            size: "0",
            body: {
              "sort": [
                {
                  "date": {
                    "order": "asc"
                  }
                }
              ],
              "aggs": {
                "sale_date": {
                  "date_histogram": {
                    "field": "date",
                    "calendar_interval": "1d"
                  }
                }
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->asyncSearch()->submit([
              "index" => "sales*",
              "size" => "0",
              "body" => [
                  "sort" => array(
                      [
                          "date" => [
                              "order" => "asc",
                          ],
                      ],
                  ),
                  "aggs" => [
                      "sale_date" => [
                          "date_histogram" => [
                              "field" => "date",
                              "calendar_interval" => "1d",
                          ],
                      ],
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"sort":[{"date":{"order":"asc"}}],"aggs":{"sale_date":{"date_histogram":{"field":"date","calendar_interval":"1d"}}}}''
          "$ELASTICSEARCH_URL/sales*/_async_search?size=0"'
      - lang: Java
        source: |
          client.asyncSearch().submit(s -> s
              .aggregations("sale_date", a -> a
                  .dateHistogram(d -> d
                      .calendarInterval(CalendarInterval.Day)
                      .field("date")
                  )
              )
              .index("sales*")
              .size(0)
              .sort(so -> so
                  .field(f -> f
                      .field("date")
                      .order(SortOrder.Asc)
                  )
              )
          ,Void.class);
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/{index}/_bulk":
    put:
      tags:
      - document
      summary: 'Bulk index or delete documents

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_bulk</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb put\">PUT</span>\n                      <span class=\"operation-path\">/_bulk</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/{index}/_bulk</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb put\">PUT</span>\n                      <span class=\"operation-path\">/{index}/_bulk</span>\n
        \                     </div>\n                    \n\nPerform multiple `index`,
        `create`, `delete`, and `update` actions in a single request.\nThis reduces
        overhead and can greatly increase indexing speed.\n\nIf the Elasticsearch
        security features are enabled, you must have the following index privileges
        for the target data stream, index, or index alias:\n\n* To use the `create`
        action, you must have the `create_doc`, `create`, `index`, or `write` index
        privilege. Data streams support only the `create` action.\n* To use the `index`
        action, you must have the `create`, `index`, or `write` index privilege.\n*
        To use the `delete` action, you must have the `delete` or `write` index privilege.\n*
        To use the `update` action, you must have the `index` or `write` index privilege.\n*
        To automatically create a data stream or index with a bulk API request, you
        must have the `auto_configure`, `create_index`, or `manage` index privilege.\n*
        To make the result of a bulk operation visible to search using the `refresh`
        parameter, you must have the `maintenance` or `manage` index privilege.\n\nAutomatic
        data stream creation requires a matching index template with data stream enabled.\n\nThe
        actions are specified in the request body using a newline delimited JSON (NDJSON)
        structure:\n\n```\naction_and_meta_data\\n\noptional_source\\n\naction_and_meta_data\\n\noptional_source\\n\n....\naction_and_meta_data\\n\noptional_source\\n\n```\n\nThe
        `index` and `create` actions expect a source on the next line and have the
        same semantics as the `op_type` parameter in the standard index API.\nA `create`
        action fails if a document with the same ID already exists in the target\nAn
        `index` action adds or replaces a document as necessary.\n\nNOTE: Data streams
        support only the `create` action.\nTo update or delete a document in a data
        stream, you must target the backing index containing the document.\n\nAn `update`
        action expects that the partial doc, upsert, and script and its options are
        specified on the next line.\n\nA `delete` action does not expect a source
        on the next line and has the same semantics as the standard delete API.\n\nNOTE:
        The final line of data must end with a newline character (`\\n`).\nEach newline
        character may be preceded by a carriage return (`\\r`).\nWhen sending NDJSON
        data to the `_bulk` endpoint, use a `Content-Type` header of `application/json`
        or `application/x-ndjson`.\nBecause this format uses literal newline characters
        (`\\n`) as delimiters, make sure that the JSON actions and sources are not
        pretty printed.\n\nIf you provide a target in the request path, it is used
        for any actions that don't explicitly specify an `_index` argument.\n\nA note
        on the format: the idea here is to make processing as fast as possible.\nAs
        some of the actions are redirected to other shards on other nodes, only `action_meta_data`
        is parsed on the receiving node side.\n\nClient libraries using this protocol
        should try and strive to do something similar on the client side, and reduce
        buffering as much as possible.\n\nThere is no \"correct\" number of actions
        to perform in a single bulk request.\nExperiment with different settings to
        find the optimal size for your particular workload.\nNote that Elasticsearch
        limits the maximum size of a HTTP request to 100mb by default so clients must
        ensure that no request exceeds this size.\nIt is not possible to index a single
        document that exceeds the size limit, so you must pre-process any such documents
        into smaller pieces before sending them to Elasticsearch.\nFor instance, split
        documents into pages or chapters before indexing them, or store raw binary
        data in a system outside Elasticsearch and replace the raw data with a link
        to the external system in the documents that you send to Elasticsearch.\n\n**Client
        suppport for bulk requests**\n\nSome of the officially supported clients provide
        helpers to assist with bulk requests and reindexing:\n\n* Go: Check out `esutil.BulkIndexer`\n*
        Perl: Check out `Search::Elasticsearch::Client::5_0::Bulk` and `Search::Elasticsearch::Client::5_0::Scroll`\n*
        Python: Check out `elasticsearch.helpers.*`\n* JavaScript: Check out `client.helpers.*`\n*
        Java: Check out `co.elastic.clients.elasticsearch._helpers.bulk.BulkIngester`\n*
        .NET: Check out `BulkAllObservable`\n* PHP: Check out bulk indexing.\n* Ruby:
        Check out `Elasticsearch::Helpers::BulkHelper`\n\n**Submitting bulk requests
        with cURL**\n\nIf you're providing text file input to `curl`, you must use
        the `--data-binary` flag instead of plain `-d`.\nThe latter doesn't preserve
        newlines. For example:\n\n```\n$ cat requests\n{ \"index\" : { \"_index\"
        : \"test\", \"_id\" : \"1\" } }\n{ \"field1\" : \"value1\" }\n$ curl -s -H
        \"Content-Type: application/x-ndjson\" -XPOST localhost:9200/_bulk --data-binary
        \"@requests\"; echo\n{\"took\":7, \"errors\": false, \"items\":[{\"index\":{\"_index\":\"test\",\"_id\":\"1\",\"_version\":1,\"result\":\"created\",\"forced_refresh\":false}}]}\n```\n\n**Optimistic
        concurrency control**\n\nEach `index` and `delete` action within a bulk API
        call may include the `if_seq_no` and `if_primary_term` parameters in their
        respective action and meta data lines.\nThe `if_seq_no` and `if_primary_term`
        parameters control how operations are run, based on the last modification
        to existing documents. See Optimistic concurrency control for more details.\n\n**Versioning**\n\nEach
        bulk item can include the version value using the `version` field.\nIt automatically
        follows the behavior of the index or delete operation based on the `_version`
        mapping.\nIt also support the `version_type`.\n\n**Routing**\n\nEach bulk
        item can include the routing value using the `routing` field.\nIt automatically
        follows the behavior of the index or delete operation based on the `_routing`
        mapping.\n\nNOTE: Data streams do not support custom routing unless they were
        created with the `allow_custom_routing` setting enabled in the template.\n\n**Wait
        for active shards**\n\nWhen making bulk calls, you can set the `wait_for_active_shards`
        parameter to require a minimum number of shard copies to be active before
        starting to process the bulk request.\n\n**Refresh**\n\nControl when the changes
        made by this request are visible to search.\n\nNOTE: Only the shards that
        receive the bulk request will be affected by refresh.\nImagine a `_bulk?refresh=wait_for`
        request with three documents in it that happen to be routed to different shards
        in an index with five shards.\nThe request will only wait for those three
        shards to refresh.\nThe other two shards that make up the index do not participate
        in the `_bulk` request at all.\n\nYou might want to disable the refresh interval
        temporarily to improve indexing throughput for large bulk requests.\nRefer
        to the linked documentation for step-by-step instructions using the index
        settings API."
      externalDocs:
        url: https://www.elastic.co/docs/deploy-manage/production-guidance/optimize-performance/indexing-speed#disable-refresh-interval
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/docs-bulk.html
      operationId: bulk
      parameters:
      - "$ref": "#/components/parameters/bulk-index"
      - "$ref": "#/components/parameters/bulk-include_source_on_error"
      - "$ref": "#/components/parameters/bulk-list_executed_pipelines"
      - "$ref": "#/components/parameters/bulk-pipeline"
      - "$ref": "#/components/parameters/bulk-refresh"
      - "$ref": "#/components/parameters/bulk-routing"
      - "$ref": "#/components/parameters/bulk-_source"
      - "$ref": "#/components/parameters/bulk-_source_excludes"
      - "$ref": "#/components/parameters/bulk-_source_includes"
      - "$ref": "#/components/parameters/bulk-timeout"
      - "$ref": "#/components/parameters/bulk-wait_for_active_shards"
      - "$ref": "#/components/parameters/bulk-require_alias"
      - "$ref": "#/components/parameters/bulk-require_data_stream"
      requestBody:
        "$ref": "#/components/requestBodies/bulk"
      responses:
        '200':
          "$ref": "#/components/responses/bulk-200"
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: |-
          POST _bulk
          { "index" : { "_index" : "test", "_id" : "1" } }
          { "field1" : "value1" }
          { "delete" : { "_index" : "test", "_id" : "2" } }
          { "create" : { "_index" : "test", "_id" : "3" } }
          { "field1" : "value3" }
          { "update" : {"_id" : "1", "_index" : "test"} }
          { "doc" : {"field2" : "value2"} }
      - lang: Python
        source: |-
          resp = client.bulk(
              operations=[
                  {
                      "index": {
                          "_index": "test",
                          "_id": "1"
                      }
                  },
                  {
                      "field1": "value1"
                  },
                  {
                      "delete": {
                          "_index": "test",
                          "_id": "2"
                      }
                  },
                  {
                      "create": {
                          "_index": "test",
                          "_id": "3"
                      }
                  },
                  {
                      "field1": "value3"
                  },
                  {
                      "update": {
                          "_id": "1",
                          "_index": "test"
                      }
                  },
                  {
                      "doc": {
                          "field2": "value2"
                      }
                  }
              ],
          )
      - lang: JavaScript
        source: |-
          const response = await client.bulk({
            operations: [
              {
                index: {
                  _index: "test",
                  _id: "1",
                },
              },
              {
                field1: "value1",
              },
              {
                delete: {
                  _index: "test",
                  _id: "2",
                },
              },
              {
                create: {
                  _index: "test",
                  _id: "3",
                },
              },
              {
                field1: "value3",
              },
              {
                update: {
                  _id: "1",
                  _index: "test",
                },
              },
              {
                doc: {
                  field2: "value2",
                },
              },
            ],
          });
      - lang: Ruby
        source: |-
          response = client.bulk(
            body: [
              {
                "index": {
                  "_index": "test",
                  "_id": "1"
                }
              },
              {
                "field1": "value1"
              },
              {
                "delete": {
                  "_index": "test",
                  "_id": "2"
                }
              },
              {
                "create": {
                  "_index": "test",
                  "_id": "3"
                }
              },
              {
                "field1": "value3"
              },
              {
                "update": {
                  "_id": "1",
                  "_index": "test"
                }
              },
              {
                "doc": {
                  "field2": "value2"
                }
              }
            ]
          )
      - lang: PHP
        source: |-
          $resp = $client->bulk([
              "body" => array(
                  [
                      "index" => [
                          "_index" => "test",
                          "_id" => "1",
                      ],
                  ],
                  [
                      "field1" => "value1",
                  ],
                  [
                      "delete" => [
                          "_index" => "test",
                          "_id" => "2",
                      ],
                  ],
                  [
                      "create" => [
                          "_index" => "test",
                          "_id" => "3",
                      ],
                  ],
                  [
                      "field1" => "value3",
                  ],
                  [
                      "update" => [
                          "_id" => "1",
                          "_index" => "test",
                      ],
                  ],
                  [
                      "doc" => [
                          "field2" => "value2",
                      ],
                  ],
              ),
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/x-ndjson" -d $''{"index":{"_index":"test","_id":"1"}}\n{"field1":"value1"}\n{"delete":{"_index":"test","_id":"2"}}\n{"create":{"_index":"test","_id":"3"}}\n{"field1":"value3"}\n{"update":{"_id":"1","_index":"test"}}\n{"doc":{"field2":"value2"}}\n''
          "$ELASTICSEARCH_URL/_bulk"'
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_cat/aliases/{name}":
    get:
      tags:
      - cat
      summary: 'Get aliases

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_cat/aliases</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_cat/aliases/{name}</span>\n
        \                     </div>\n                    \n\nGet the cluster's index
        aliases, including filter and routing information.\nThis API does not return
        data stream aliases.\n\nIMPORTANT: CAT APIs are only intended for human consumption
        using the command line or the Kibana console. They are not intended for use
        by applications. For application consumption, use the aliases API.\n\n## Required
        authorization\n\n* Index privileges: `view_index_metadata`\n"
      operationId: cat-aliases
      parameters:
      - "$ref": "#/components/parameters/cat.aliases-name"
      - "$ref": "#/components/parameters/cat.aliases-h"
      - "$ref": "#/components/parameters/cat.aliases-s"
      - "$ref": "#/components/parameters/cat.aliases-expand_wildcards"
      - "$ref": "#/components/parameters/cat.aliases-master_timeout"
      responses:
        '200':
          "$ref": "#/components/responses/cat.aliases-200"
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'GET _cat/aliases?format=json&v=true

          '
      - lang: Python
        source: |-
          resp = client.cat.aliases(
              format="json",
              v=True,
          )
      - lang: JavaScript
        source: |-
          const response = await client.cat.aliases({
            format: "json",
            v: "true",
          });
      - lang: Ruby
        source: |-
          response = client.cat.aliases(
            format: "json",
            v: "true"
          )
      - lang: PHP
        source: |-
          $resp = $client->cat()->aliases([
              "format" => "json",
              "v" => "true",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_cat/aliases?format=json&v=true"'
      - lang: Java
        source: 'client.cat().aliases();

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_cat/allocation/{node_id}":
    get:
      tags:
      - cat
      summary: 'Get shard allocation information

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_cat/allocation</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_cat/allocation/{node_id}</span>\n
        \                     </div>\n                    \n\nGet a snapshot of the
        number of shards allocated to each data node and their disk space.\n\nIMPORTANT:
        CAT APIs are only intended for human consumption using the command line or
        Kibana console. They are not intended for use by applications.\n\n## Required
        authorization\n\n* Cluster privileges: `monitor`\n"
      operationId: cat-allocation
      parameters:
      - "$ref": "#/components/parameters/cat.allocation-node_id"
      - "$ref": "#/components/parameters/cat.allocation-h"
      - "$ref": "#/components/parameters/cat.allocation-s"
      - "$ref": "#/components/parameters/cat.allocation-local"
      - "$ref": "#/components/parameters/cat.allocation-master_timeout"
      responses:
        '200':
          "$ref": "#/components/responses/cat.allocation-200"
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'GET /_cat/allocation?v=true&format=json

          '
      - lang: Python
        source: |-
          resp = client.cat.allocation(
              v=True,
              format="json",
          )
      - lang: JavaScript
        source: |-
          const response = await client.cat.allocation({
            v: "true",
            format: "json",
          });
      - lang: Ruby
        source: |-
          response = client.cat.allocation(
            v: "true",
            format: "json"
          )
      - lang: PHP
        source: |-
          $resp = $client->cat()->allocation([
              "v" => "true",
              "format" => "json",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_cat/allocation?v=true&format=json"'
      - lang: Java
        source: 'client.cat().allocation();

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_cat/circuit_breaker/{circuit_breaker_patterns}":
    get:
      tags:
      - cat
      summary: 'Get circuit breakers statistics

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_cat/circuit_breaker</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_cat/circuit_breaker/{circuit_breaker_patterns}</span>\n
        \                     </div>\n                    \n\nIMPORTANT: CAT APIs
        are only intended for human consumption using the command line or Kibana console.
        They are not intended for use by applications.\n\n## Required authorization\n\n*
        Cluster privileges: `monitor`\n"
      operationId: cat-circuit-breaker
      parameters:
      - "$ref": "#/components/parameters/cat.circuit_breaker-circuit_breaker_patterns"
      - "$ref": "#/components/parameters/cat.circuit_breaker-h"
      - "$ref": "#/components/parameters/cat.circuit_breaker-s"
      - "$ref": "#/components/parameters/cat.circuit_breaker-local"
      - "$ref": "#/components/parameters/cat.circuit_breaker-master_timeout"
      responses:
        '200':
          "$ref": "#/components/responses/cat.circuit_breaker-200"
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'GET /_cat/circuit_breaker?v=true&format=json

          '
      - lang: Python
        source: |-
          resp = client.cat.circuit_breaker(
              v=True,
              format="json",
          )
      - lang: JavaScript
        source: |-
          const response = await client.cat.circuitBreaker({
            v: "true",
            format: "json",
          });
      - lang: Ruby
        source: |-
          response = client.cat.circuit_breaker(
            v: "true",
            format: "json"
          )
      - lang: PHP
        source: |-
          $resp = $client->cat()->circuitBreaker([
              "v" => "true",
              "format" => "json",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_cat/circuit_breaker?v=true&format=json"'
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_cat/component_templates/{name}":
    get:
      tags:
      - cat
      summary: 'Get component templates

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_cat/component_templates</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_cat/component_templates/{name}</span>\n
        \                     </div>\n                    \n\nGet information about
        component templates in a cluster.\nComponent templates are building blocks
        for constructing index templates that specify index mappings, settings, and
        aliases.\n\nIMPORTANT: CAT APIs are only intended for human consumption using
        the command line or Kibana console.\nThey are not intended for use by applications.
        For application consumption, use the get component template API.\n\n## Required
        authorization\n\n* Cluster privileges: `monitor`\n"
      operationId: cat-component-templates
      parameters:
      - "$ref": "#/components/parameters/cat.component_templates-name"
      - "$ref": "#/components/parameters/cat.component_templates-h"
      - "$ref": "#/components/parameters/cat.component_templates-s"
      - "$ref": "#/components/parameters/cat.component_templates-local"
      - "$ref": "#/components/parameters/cat.component_templates-master_timeout"
      responses:
        '200':
          "$ref": "#/components/responses/cat.component_templates-200"
      x-state: Generally available; Added in 5.1.0
      x-codeSamples:
      - lang: Console
        source: 'GET _cat/component_templates/my-template-*?v=true&s=name&format=json

          '
      - lang: Python
        source: |-
          resp = client.cat.component_templates(
              name="my-template-*",
              v=True,
              s="name",
              format="json",
          )
      - lang: JavaScript
        source: |-
          const response = await client.cat.componentTemplates({
            name: "my-template-*",
            v: "true",
            s: "name",
            format: "json",
          });
      - lang: Ruby
        source: |-
          response = client.cat.component_templates(
            name: "my-template-*",
            v: "true",
            s: "name",
            format: "json"
          )
      - lang: PHP
        source: |-
          $resp = $client->cat()->componentTemplates([
              "name" => "my-template-*",
              "v" => "true",
              "s" => "name",
              "format" => "json",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_cat/component_templates/my-template-*?v=true&s=name&format=json"'
      - lang: Java
        source: 'client.cat().componentTemplates();

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_cat/count/{index}":
    get:
      tags:
      - cat
      summary: 'Get a document count

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_cat/count</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_cat/count</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_cat/count/{index}</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_cat/count/{index}</span>\n
        \                     </div>\n                    \n\nGet quick access to
        a document count for a data stream, an index, or an entire cluster.\nThe document
        count only includes live documents, not deleted documents which have not yet
        been removed by the merge process.\n\nIMPORTANT: CAT APIs are only intended
        for human consumption using the command line or Kibana console.\nThey are
        not intended for use by applications. For application consumption, use the
        count API.\n\nNOTE: Starting in Elasticsearch 9.3.0, this endpoint also supports
        the `POST` method. This is primarily intended for project routing in serverless
        environments.\n\n## Required authorization\n\n* Index privileges: `read`\n"
      operationId: cat-count
      parameters:
      - "$ref": "#/components/parameters/cat.count-index"
      - "$ref": "#/components/parameters/cat.count-h"
      - "$ref": "#/components/parameters/cat.count-s"
      requestBody:
        "$ref": "#/components/requestBodies/cat.count"
      responses:
        '200':
          "$ref": "#/components/responses/cat.count-200"
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'GET /_cat/count/my-index-000001?v=true&format=json

          '
      - lang: Python
        source: |-
          resp = client.cat.count(
              index="my-index-000001",
              v=True,
              format="json",
          )
      - lang: JavaScript
        source: |-
          const response = await client.cat.count({
            index: "my-index-000001",
            v: "true",
            format: "json",
          });
      - lang: Ruby
        source: |-
          response = client.cat.count(
            index: "my-index-000001",
            v: "true",
            format: "json"
          )
      - lang: PHP
        source: |-
          $resp = $client->cat()->count([
              "index" => "my-index-000001",
              "v" => "true",
              "format" => "json",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_cat/count/my-index-000001?v=true&format=json"'
      - lang: Java
        source: 'client.cat().count();

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_cat/fielddata/{fields}":
    get:
      tags:
      - cat
      summary: 'Get field data cache information

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_cat/fielddata</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_cat/fielddata/{fields}</span>\n
        \                     </div>\n                    \n\nGet the amount of heap
        memory currently used by the field data cache on every data node in the cluster.\n\nIMPORTANT:
        cat APIs are only intended for human consumption using the command line or
        Kibana console.\nThey are not intended for use by applications. For application
        consumption, use the nodes stats API.\n\n## Required authorization\n\n* Cluster
        privileges: `monitor`\n"
      operationId: cat-fielddata
      parameters:
      - "$ref": "#/components/parameters/cat.fielddata-fields"
      - "$ref": "#/components/parameters/cat.fielddata-fields_"
      - "$ref": "#/components/parameters/cat.fielddata-h"
      - "$ref": "#/components/parameters/cat.fielddata-s"
      responses:
        '200':
          "$ref": "#/components/responses/cat.fielddata-200"
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'GET /_cat/fielddata?v=true&fields=body&format=json

          '
      - lang: Python
        source: |-
          resp = client.cat.fielddata(
              v=True,
              fields="body",
              format="json",
          )
      - lang: JavaScript
        source: |-
          const response = await client.cat.fielddata({
            v: "true",
            fields: "body",
            format: "json",
          });
      - lang: Ruby
        source: |-
          response = client.cat.fielddata(
            v: "true",
            fields: "body",
            format: "json"
          )
      - lang: PHP
        source: |-
          $resp = $client->cat()->fielddata([
              "v" => "true",
              "fields" => "body",
              "format" => "json",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_cat/fielddata?v=true&fields=body&format=json"'
      - lang: Java
        source: 'client.cat().fielddata();

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_cat/health":
    get:
      tags:
      - cat
      summary: Get the cluster health status
      description: |
        IMPORTANT: CAT APIs are only intended for human consumption using the command line or Kibana console.
        They are not intended for use by applications. For application consumption, use the cluster health API.
        This API is often used to check malfunctioning clusters.
        To help you track cluster health alongside log files and alerting systems, the API returns timestamps in two formats:
        `HH:MM:SS`, which is human-readable but includes no date information;
        `Unix epoch time`, which is machine-sortable and includes date information.
        The latter format is useful for cluster recoveries that take multiple days.
        You can use the cat health API to verify cluster health across multiple nodes.
        You also can use the API to track the recovery of a large cluster over a longer period of time.

        ## Required authorization

        * Cluster privileges: `monitor`
      operationId: cat-health
      parameters:
      - in: query
        name: ts
        description: If true, returns `HH:MM:SS` and Unix epoch timestamps.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: h
        description: |+
          A comma-separated list of columns names to display. It supports simple wildcards.

          Supported values include:
            - `epoch` (or `t`, `time`): The number of seconds since 1970-01-01 00:00:00.
            - `timestamp` (or `ts`, `hms`, `hhmmss`): The time in HH:MM:SS format.
            - `cluster` (or `cl`): The cluster name.
            - `status` (or `st`): The health status.
            - `node.total` (or `nt`, `nodeTotal`): The total number of nodes that can store data.
            - `node.data` (or `nd`, `nodeData`): The number of nodes that can store data.
            - `shards` (or `t`, `sh`, `shards.total`, `shardsTotal`): The total number of shards.
            - `pri` (or `p`, `shards.primary`, `shardsPrimary`): The number of primary shards.
            - `relo` (or `r`, `shards.relocating`, `shardsRelocating`): The number of relocating nodes.
            - `init` (or `i`, `shards.initializing`, `shardsInitializing`): The number of initializing nodes.
            - `unassign` (or `u`, `shards.unassigned`, `shardsUnassigned`): The number of unassigned shards.
            - `unassign.pri` (or `up`, `shards.unassigned.primary`, `shardsUnassignedPrimary`): The number of unassigned primary shards.
            - `pending_tasks` (or `pt`, `pendingTasks`): The number of pending tasks.
            - `max_task_wait_time` (or `mtwt`, `maxTaskWaitTime`): The wait time of the longest pending task.
            - `active_shards_percent` (or `asp`, `activeShardsPercent`): The percentage of active shards.

        deprecated: false
        schema:
          "$ref": "#/components/schemas/cat._types.CatHealthColumns"
        style: form
      - in: query
        name: s
        description: |-
          List of columns that determine how the table should be sorted.
          Sorting defaults to ascending and can be changed by setting `:asc`
          or `:desc` as a suffix to the column name.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Names"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  "$ref": "#/components/schemas/cat.health.HealthRecord"
              examples:
                CatHealthResponseExample1:
                  description: 'A successful response from `GET /_cat/health?v=true&format=json`.
                    By default, it returns `HH:MM:SS` and Unix epoch timestamps.

                    '
                  value: |-
                    [
                      {
                        "epoch": "1475871424",
                        "timestamp": "16:17:04",
                        "cluster": "elasticsearch",
                        "status": "green",
                        "node.total": "1",
                        "node.data": "1",
                        "shards": "1",
                        "pri": "1",
                        "relo": "0",
                        "init": "0",
                        "unassign": "0",
                        "unassign.pri": "0",
                        "pending_tasks": "0",
                        "max_task_wait_time": "-",
                        "active_shards_percent": "100.0%"
                      }
                    ]
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'GET /_cat/health?v=true&format=json

          '
      - lang: Python
        source: |-
          resp = client.cat.health(
              v=True,
              format="json",
          )
      - lang: JavaScript
        source: |-
          const response = await client.cat.health({
            v: "true",
            format: "json",
          });
      - lang: Ruby
        source: |-
          response = client.cat.health(
            v: "true",
            format: "json"
          )
      - lang: PHP
        source: |-
          $resp = $client->cat()->health([
              "v" => "true",
              "format" => "json",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_cat/health?v=true&format=json"'
      - lang: Java
        source: 'client.cat().health();

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_cat":
    get:
      tags:
      - cat
      summary: Get CAT help
      description: Get help for the CAT APIs.
      operationId: cat-help
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
      x-state: Generally available
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_cat/indices/{index}":
    get:
      tags:
      - cat
      summary: 'Get index information

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_cat/indices</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_cat/indices/{index}</span>\n
        \                     </div>\n                    \n\nGet high-level information
        about indices in a cluster, including backing indices for data streams.\n\nUse
        this request to get the following information for each index in a cluster:\n-
        shard count\n- document count\n- deleted document count\n- primary store size\n-
        total store size of all shards, including shard replicas\n\nThese metrics
        are retrieved directly from Lucene, which Elasticsearch uses internally to
        power indexing and search. As a result, all document counts include hidden
        nested documents.\nTo get an accurate count of Elasticsearch documents, use
        the cat count or count APIs.\n\nCAT APIs are only intended for human consumption
        using the command line or Kibana console.\nThey are not intended for use by
        applications. For application consumption, use an index endpoint.\n\n## Required
        authorization\n\n* Index privileges: `monitor`\n* Cluster privileges: `monitor`\n"
      operationId: cat-indices
      parameters:
      - "$ref": "#/components/parameters/cat.indices-index"
      - "$ref": "#/components/parameters/cat.indices-expand_wildcards"
      - "$ref": "#/components/parameters/cat.indices-health"
      - "$ref": "#/components/parameters/cat.indices-include_unloaded_segments"
      - "$ref": "#/components/parameters/cat.indices-pri"
      - "$ref": "#/components/parameters/cat.indices-master_timeout"
      - "$ref": "#/components/parameters/cat.indices-h"
      - "$ref": "#/components/parameters/cat.indices-s"
      responses:
        '200':
          "$ref": "#/components/responses/cat.indices-200"
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'GET /_cat/indices/my-index-*?v=true&s=index&format=json

          '
      - lang: Python
        source: |-
          resp = client.cat.indices(
              index="my-index-*",
              v=True,
              s="index",
              format="json",
          )
      - lang: JavaScript
        source: |-
          const response = await client.cat.indices({
            index: "my-index-*",
            v: "true",
            s: "index",
            format: "json",
          });
      - lang: Ruby
        source: |-
          response = client.cat.indices(
            index: "my-index-*",
            v: "true",
            s: "index",
            format: "json"
          )
      - lang: PHP
        source: |-
          $resp = $client->cat()->indices([
              "index" => "my-index-*",
              "v" => "true",
              "s" => "index",
              "format" => "json",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_cat/indices/my-index-*?v=true&s=index&format=json"'
      - lang: Java
        source: 'client.cat().indices();

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_cat/master":
    get:
      tags:
      - cat
      summary: Get master node information
      description: |
        Get information about the master node, including the ID, bound IP address, and name.

        IMPORTANT: cat APIs are only intended for human consumption using the command line or Kibana console. They are not intended for use by applications. For application consumption, use the nodes info API.

        ## Required authorization

        * Cluster privileges: `monitor`
      operationId: cat-master
      parameters:
      - in: query
        name: h
        description: |+
          A comma-separated list of columns names to display. It supports simple wildcards.

          Supported values include:
            - `id`: The node ID.
            - `host` (or `h`): The host name of the node.
            - `ip`: The IP address of the node.
            - `node` (or `n`): The node name.

        deprecated: false
        schema:
          "$ref": "#/components/schemas/cat._types.CatMasterColumns"
        style: form
      - in: query
        name: s
        description: |-
          List of columns that determine how the table should be sorted.
          Sorting defaults to ascending and can be changed by setting `:asc`
          or `:desc` as a suffix to the column name.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Names"
        style: form
      - in: query
        name: local
        description: |-
          If `true`, the request computes the list of selected nodes from the
          local cluster state. If `false` the list of selected nodes are computed
          from the cluster state of the master node. In both cases the coordinating
          node will send requests for further information to each selected node.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: master_timeout
        description: Period to wait for a connection to the master node.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  "$ref": "#/components/schemas/cat.master.MasterRecord"
              examples:
                CatMasterResponseExample1:
                  description: 'A successful response from `GET /_cat/master?v=true&format=json`.

                    '
                  value: |-
                    [
                      {
                        "id": "YzWoH_2BT-6UjVGDyPdqYg",
                        "host": "127.0.0.1",
                        "ip": "127.0.0.1",
                        "node": "YzWoH_2"
                      }
                    ]
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'GET /_cat/master?v=true&format=json

          '
      - lang: Python
        source: |-
          resp = client.cat.master(
              v=True,
              format="json",
          )
      - lang: JavaScript
        source: |-
          const response = await client.cat.master({
            v: "true",
            format: "json",
          });
      - lang: Ruby
        source: |-
          response = client.cat.master(
            v: "true",
            format: "json"
          )
      - lang: PHP
        source: |-
          $resp = $client->cat()->master([
              "v" => "true",
              "format" => "json",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_cat/master?v=true&format=json"'
      - lang: Java
        source: 'client.cat().master();

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_cat/ml/data_frame/analytics/{id}":
    get:
      tags:
      - cat
      summary: 'Get data frame analytics jobs

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_cat/ml/data_frame/analytics</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_cat/ml/data_frame/analytics/{id}</span>\n
        \                     </div>\n                    \n\nGet configuration and
        usage information about data frame analytics jobs.\n\nIMPORTANT: CAT APIs
        are only intended for human consumption using the Kibana\nconsole or command
        line. They are not intended for use by applications. For\napplication consumption,
        use the get data frame analytics jobs statistics API.\n\n## Required authorization\n\n*
        Cluster privileges: `monitor_ml`\n"
      operationId: cat-ml-data-frame-analytics
      parameters:
      - "$ref": "#/components/parameters/cat.ml_data_frame_analytics-id"
      - "$ref": "#/components/parameters/cat.ml_data_frame_analytics-allow_no_match"
      - "$ref": "#/components/parameters/cat.ml_data_frame_analytics-h"
      - "$ref": "#/components/parameters/cat.ml_data_frame_analytics-s"
      responses:
        '200':
          "$ref": "#/components/responses/cat.ml_data_frame_analytics-200"
      x-state: Generally available; Added in 7.7.0
      x-codeSamples:
      - lang: Console
        source: 'GET _cat/ml/data_frame/analytics?v=true&format=json

          '
      - lang: Python
        source: |-
          resp = client.cat.ml_data_frame_analytics(
              v=True,
              format="json",
          )
      - lang: JavaScript
        source: |-
          const response = await client.cat.mlDataFrameAnalytics({
            v: "true",
            format: "json",
          });
      - lang: Ruby
        source: |-
          response = client.cat.ml_data_frame_analytics(
            v: "true",
            format: "json"
          )
      - lang: PHP
        source: |-
          $resp = $client->cat()->mlDataFrameAnalytics([
              "v" => "true",
              "format" => "json",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_cat/ml/data_frame/analytics?v=true&format=json"'
      - lang: Java
        source: 'client.cat().mlDataFrameAnalytics();

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_cat/ml/datafeeds/{datafeed_id}":
    get:
      tags:
      - cat
      summary: 'Get datafeeds

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_cat/ml/datafeeds</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_cat/ml/datafeeds/{datafeed_id}</span>\n
        \                     </div>\n                    \n\nGet configuration and
        usage information about datafeeds.\nThis API returns a maximum of 10,000 datafeeds.\nIf
        the Elasticsearch security features are enabled, you must have `monitor_ml`,
        `monitor`, `manage_ml`, or `manage`\ncluster privileges to use this API.\n\nIMPORTANT:
        CAT APIs are only intended for human consumption using the Kibana\nconsole
        or command line. They are not intended for use by applications. For\napplication
        consumption, use the get datafeed statistics API.\n\n## Required authorization\n\n*
        Cluster privileges: `monitor_ml`\n"
      operationId: cat-ml-datafeeds
      parameters:
      - "$ref": "#/components/parameters/cat.ml_datafeeds-datafeed_id"
      - "$ref": "#/components/parameters/cat.ml_datafeeds-allow_no_match"
      - "$ref": "#/components/parameters/cat.ml_datafeeds-h"
      - "$ref": "#/components/parameters/cat.ml_datafeeds-s"
      responses:
        '200':
          "$ref": "#/components/responses/cat.ml_datafeeds-200"
      x-state: Generally available; Added in 7.7.0
      x-codeSamples:
      - lang: Console
        source: 'GET _cat/ml/datafeeds?v=true&format=json

          '
      - lang: Python
        source: |-
          resp = client.cat.ml_datafeeds(
              v=True,
              format="json",
          )
      - lang: JavaScript
        source: |-
          const response = await client.cat.mlDatafeeds({
            v: "true",
            format: "json",
          });
      - lang: Ruby
        source: |-
          response = client.cat.ml_datafeeds(
            v: "true",
            format: "json"
          )
      - lang: PHP
        source: |-
          $resp = $client->cat()->mlDatafeeds([
              "v" => "true",
              "format" => "json",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_cat/ml/datafeeds?v=true&format=json"'
      - lang: Java
        source: 'client.cat().mlDatafeeds();

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_cat/ml/anomaly_detectors/{job_id}":
    get:
      tags:
      - cat
      summary: 'Get anomaly detection jobs

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_cat/ml/anomaly_detectors</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_cat/ml/anomaly_detectors/{job_id}</span>\n
        \                     </div>\n                    \n\nGet configuration and
        usage information for anomaly detection jobs.\nThis API returns a maximum
        of 10,000 jobs.\nIf the Elasticsearch security features are enabled, you must
        have `monitor_ml`,\n`monitor`, `manage_ml`, or `manage` cluster privileges
        to use this API.\n\nIMPORTANT: CAT APIs are only intended for human consumption
        using the Kibana\nconsole or command line. They are not intended for use by
        applications. For\napplication consumption, use the get anomaly detection
        job statistics API.\n\n## Required authorization\n\n* Cluster privileges:
        `monitor_ml`\n"
      operationId: cat-ml-jobs
      parameters:
      - "$ref": "#/components/parameters/cat.ml_jobs-job_id"
      - "$ref": "#/components/parameters/cat.ml_jobs-allow_no_match"
      - "$ref": "#/components/parameters/cat.ml_jobs-h"
      - "$ref": "#/components/parameters/cat.ml_jobs-s"
      responses:
        '200':
          "$ref": "#/components/responses/cat.ml_jobs-200"
      x-state: Generally available; Added in 7.7.0
      x-codeSamples:
      - lang: Console
        source: 'GET _cat/ml/anomaly_detectors?h=id,s,dpr,mb&v=true&format=json

          '
      - lang: Python
        source: |-
          resp = client.cat.ml_jobs(
              h="id,s,dpr,mb",
              v=True,
              format="json",
          )
      - lang: JavaScript
        source: |-
          const response = await client.cat.mlJobs({
            h: "id,s,dpr,mb",
            v: "true",
            format: "json",
          });
      - lang: Ruby
        source: |-
          response = client.cat.ml_jobs(
            h: "id,s,dpr,mb",
            v: "true",
            format: "json"
          )
      - lang: PHP
        source: |-
          $resp = $client->cat()->mlJobs([
              "h" => "id,s,dpr,mb",
              "v" => "true",
              "format" => "json",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_cat/ml/anomaly_detectors?h=id,s,dpr,mb&v=true&format=json"'
      - lang: Java
        source: 'client.cat().mlJobs();

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_cat/ml/trained_models/{model_id}":
    get:
      tags:
      - cat
      summary: 'Get trained models

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_cat/ml/trained_models</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_cat/ml/trained_models/{model_id}</span>\n
        \                     </div>\n                    \n\nGet configuration and
        usage information about inference trained models.\n\nIMPORTANT: CAT APIs are
        only intended for human consumption using the Kibana\nconsole or command line.
        They are not intended for use by applications. For\napplication consumption,
        use the get trained models statistics API.\n\n## Required authorization\n\n*
        Cluster privileges: `monitor_ml`\n"
      operationId: cat-ml-trained-models
      parameters:
      - "$ref": "#/components/parameters/cat.ml_trained_models-model_id"
      - "$ref": "#/components/parameters/cat.ml_trained_models-allow_no_match"
      - "$ref": "#/components/parameters/cat.ml_trained_models-h"
      - "$ref": "#/components/parameters/cat.ml_trained_models-s"
      - "$ref": "#/components/parameters/cat.ml_trained_models-from"
      - "$ref": "#/components/parameters/cat.ml_trained_models-size"
      responses:
        '200':
          "$ref": "#/components/responses/cat.ml_trained_models-200"
      x-state: Generally available; Added in 7.7.0
      x-codeSamples:
      - lang: Console
        source: 'GET _cat/ml/trained_models?v=true&format=json

          '
      - lang: Python
        source: |-
          resp = client.cat.ml_trained_models(
              v=True,
              format="json",
          )
      - lang: JavaScript
        source: |-
          const response = await client.cat.mlTrainedModels({
            v: "true",
            format: "json",
          });
      - lang: Ruby
        source: |-
          response = client.cat.ml_trained_models(
            v: "true",
            format: "json"
          )
      - lang: PHP
        source: |-
          $resp = $client->cat()->mlTrainedModels([
              "v" => "true",
              "format" => "json",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_cat/ml/trained_models?v=true&format=json"'
      - lang: Java
        source: 'client.cat().mlTrainedModels();

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_cat/nodeattrs":
    get:
      tags:
      - cat
      summary: Get node attribute information
      description: |
        Get information about custom node attributes.
        IMPORTANT: cat APIs are only intended for human consumption using the command line or Kibana console. They are not intended for use by applications. For application consumption, use the nodes info API.

        ## Required authorization

        * Cluster privileges: `monitor`
      operationId: cat-nodeattrs
      parameters:
      - in: query
        name: h
        description: |+
          A comma-separated list of columns names to display. It supports simple wildcards.

          Supported values include:
            - `node`: The node name.
            - `id` (or `id`, `nodeId`): The unique node ID.
            - `pid` (or `p`): The process ID.
            - `host` (or `h`): The host name.
            - `ip` (or `i`): The IP address.
            - `port` (or `po`): The bound transport port.
            - `attr` (or `attr.name`): The attribute description.
            - `value` (or `attr.value`): The attribute value.

        deprecated: false
        schema:
          "$ref": "#/components/schemas/cat._types.CatNodeattrsColumns"
        style: form
      - in: query
        name: s
        description: |-
          List of columns that determine how the table should be sorted.
          Sorting defaults to ascending and can be changed by setting `:asc`
          or `:desc` as a suffix to the column name.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Names"
        style: form
      - in: query
        name: local
        description: |-
          If `true`, the request computes the list of selected nodes from the
          local cluster state. If `false` the list of selected nodes are computed
          from the cluster state of the master node. In both cases the coordinating
          node will send requests for further information to each selected node.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: master_timeout
        description: Period to wait for a connection to the master node.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  "$ref": "#/components/schemas/cat.nodeattrs.NodeAttributesRecord"
              examples:
                CatNodeAttributesResponseExample1:
                  summary: Default columns
                  description: 'A successful response from `GET /_cat/nodeattrs?v=true&format=json`.
                    The `node`, `host`, and `ip` columns provide basic information
                    about each node. The `attr` and `value` columns return custom
                    node attributes, one per line.

                    '
                  value: |-
                    [
                      {
                        "node": "node-0",
                        "host": "127.0.0.1",
                        "ip": "127.0.0.1",
                        "attr": "testattr",
                        "value": "test"
                      }
                    ]
                CatNodeAttributesResponseExample2:
                  summary: Explicit columns
                  description: 'A successful response from `GET /_cat/nodeattrs?v=true&h=name,pid,attr,value`.
                    It returns the `name`, `pid`, `attr`, and `value` columns.

                    '
                  value: |-
                    [
                      {
                        "name": "node-0",
                        "pid": "19566",
                        "attr": "testattr",
                        "value": "test"
                      }
                    ]
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'GET /_cat/nodeattrs?v=true&format=json

          '
      - lang: Python
        source: |-
          resp = client.cat.nodeattrs(
              v=True,
              format="json",
          )
      - lang: JavaScript
        source: |-
          const response = await client.cat.nodeattrs({
            v: "true",
            format: "json",
          });
      - lang: Ruby
        source: |-
          response = client.cat.nodeattrs(
            v: "true",
            format: "json"
          )
      - lang: PHP
        source: |-
          $resp = $client->cat()->nodeattrs([
              "v" => "true",
              "format" => "json",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_cat/nodeattrs?v=true&format=json"'
      - lang: Java
        source: 'client.cat().nodeattrs();

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_cat/nodes":
    get:
      tags:
      - cat
      summary: Get node information
      description: |
        Get information about the nodes in a cluster.
        IMPORTANT: cat APIs are only intended for human consumption using the command line or Kibana console. They are not intended for use by applications. For application consumption, use the nodes info API.

        ## Required authorization

        * Cluster privileges: `monitor`
      operationId: cat-nodes
      parameters:
      - in: query
        name: full_id
        description: If `true`, return the full node ID. If `false`, return the shortened
          node ID.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: include_unloaded_segments
        description: If true, the response includes information from segments that
          are not loaded into memory.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: h
        description: |+
          A comma-separated list of columns names to display.
          It supports simple wildcards.

          Supported values include:
            - `build` (or `b`): The Elasticsearch build hash. For example: `5c03844`.
            - `completion.size` (or `cs`, `completionSize`): The size of completion. For example: `0b`.
            - `cpu`: The percentage of recent system CPU used.
            - `disk.avail` (or `d`, `disk`, `diskAvail`): The available disk space. For example: `198.4gb`.
            - `disk.total` (or `dt`, `diskTotal`): The total disk space. For example: `458.3gb`.
            - `disk.used` (or `du`, `diskUsed`): The used disk space. For example: `259.8gb`.
            - `disk.used_percent` (or `dup`, `diskUsedPercent`): The percentage of disk space used.
            - `fielddata.evictions` (or `fe`, `fielddataEvictions`): The number of fielddata cache evictions.
            - `fielddata.memory_size` (or `fm`, `fielddataMemory`): The fielddata cache memory used. For example: `0b`.
            - `file_desc.current` (or `fdc`, `fileDescriptorCurrent`): The number of file descriptors used.
            - `file_desc.max` (or `fdm`, `fileDescriptorMax`): The maximum number of file descriptors.
            - `file_desc.percent` (or `fdp`, `fileDescriptorPercent`): The percentage of file descriptors used.
            - `flush.total` (or `ft`, `flushTotal`): The number of flushes.
            - `flush.total_time` (or `ftt`, `flushTotalTime`): The amount of time spent in flush.
            - `get.current` (or `gc`, `getCurrent`): The number of current get operations.
            - `get.exists_time` (or `geti`, `getExistsTime`): The time spent in successful get operations. For example: `14ms`.
            - `get.exists_total` (or `geto`, `getExistsTotal`): The number of successful get operations.
            - `get.missing_time` (or `gmti`, `getMissingTime`): The time spent in failed get operations. For example: `0s`.
            - `get.missing_total` (or `gmto`, `getMissingTotal`): The number of failed get operations.
            - `get.time` (or `gti`, `getTime`): The amount of time spent in get operations. For example: `14ms`.
            - `get.total` (or `gto`, `getTotal`): The number of get operations.
            - `heap.current` (or `hc`, `heapCurrent`): The used heap size. For example: `311.2mb`.
            - `heap.max` (or `hm`, `heapMax`): The total heap size. For example: `4gb`.
            - `heap.percent` (or `hp`, `heapPercent`): The used percentage of total allocated Elasticsearch JVM heap.
          This value reflects only the Elasticsearch process running within the operating system and is the most direct indicator of its JVM, heap, or memory resource performance.
            - `http_address` (or `http`): The bound HTTP address.
            - `id` (or `nodeId`): The identifier for the node.
            - `indexing.delete_current` (or `idc`, `indexingDeleteCurrent`): The number of current deletion operations.
            - `indexing.delete_time` (or `idti`, `indexingDeleteTime`): The time spent in deletion operations. For example: `2ms`.
            - `indexing.delete_total` (or `idto`, `indexingDeleteTotal`): The number of deletion operations.
            - `indexing.index_current` (or `iic`, `indexingIndexCurrent`): The number of current indexing operations.
            - `indexing.index_failed` (or `iif`, `indexingIndexFailed`): The number of failed indexing operations.
            - `indexing.index_failed_due_to_version_conflict` (or `iifvc`, `indexingIndexFailedDueToVersionConflict`): The number of indexing operations that failed due to version conflict.
            - `indexing.index_time` (or `iiti`, `indexingIndexTime`): The time spent in indexing operations. For example: `134ms`.
            - `indexing.index_total` (or `iito`, `indexingIndexTotal`): The number of indexing operations.
            - `ip` (or `i`): The IP address.
            - `jdk` (or `j`): The Java version. For example: `1.8.0`.
            - `load_1m` (or `l`): The most recent load average. For example: `0.22`.
            - `load_5m` (or `l`): The load average for the last five minutes. For example: `0.78`.
            - `load_15m` (or `l`): The load average for the last fifteen minutes. For example: `1.24`.
            - `available_processors` (or `ap`): The number of available processors (logical CPU cores available to the JVM).
            - `mappings.total_count` (or `mtc`, `mappingsTotalCount`): The number of mappings, including runtime and object fields.
            - `mappings.total_estimated_overhead_in_bytes` (or `mteo`, `mappingsTotalEstimatedOverheadInBytes`): The estimated heap overhead, in bytes, of mappings on this node, which allows for 1KiB of heap for every mapped field.
            - `master` (or `m`): Indicates whether the node is the elected master node.
          Returned values include `*` (elected master) and `-` (not elected master).
            - `merges.current` (or `mc`, `mergesCurrent`): The number of current merge operations.
            - `merges.current_docs` (or `mcd`, `mergesCurrentDocs`): The number of current merging documents.
            - `merges.current_size` (or `mcs`, `mergesCurrentSize`): The size of current merges. For example: `0b`.
            - `merges.total` (or `mt`, `mergesTotal`): The number of completed merge operations.
            - `merges.total_docs` (or `mtd`, `mergesTotalDocs`): The number of merged documents.
            - `merges.total_size` (or `mts`, `mergesTotalSize`): The total size of merges. For example: `0b`.
            - `merges.total_time` (or `mtt`, `mergesTotalTime`): The time spent merging documents. For example: `0s`.
            - `name` (or `n`): The node name.
            - `node.role` (or `r`, `role`, `nodeRole`): The roles of the node.
          Returned values include `c` (cold node), `d` (data node), `f` (frozen node), `h` (hot node), `i` (ingest node), `l` (machine learning node), `m` (master-eligible node), `r` (remote cluster client node), `s` (content node), `t` (transform node), `v` (voting-only node), `w` (warm node), and `-` (coordinating node only).
          For example, `dim` indicates a master-eligible data and ingest node.
            - `pid` (or `p`): The process identifier.
            - `port` (or `po`): The bound transport port number.
            - `query_cache.memory_size` (or `qcm`, `queryCacheMemory`): The used query cache memory. For example: `0b`.
            - `query_cache.evictions` (or `qce`, `queryCacheEvictions`): The number of query cache evictions.
            - `query_cache.hit_count` (or `qchc`, `queryCacheHitCount`): The query cache hit count.
            - `query_cache.miss_count` (or `qcmc`, `queryCacheMissCount`): The query cache miss count.
            - `ram.current` (or `rc`, `ramCurrent`): The used total memory. For example: `513.4mb`.
            - `ram.max` (or `rm`, `ramMax`): The total memory. For example: `2.9gb`.
            - `ram.percent` (or `rp`, `ramPercent`): The used percentage of the total operating system memory.
          This reflects all processes running on the operating system instead of only Elasticsearch and is not guaranteed to correlate to its performance.
            - `refresh.total` (or `rto`, `refreshTotal`): The number of refresh operations.
            - `refresh.time` (or `rti`, `refreshTime`): The time spent in refresh operations. For example: `91ms`.
            - `request_cache.memory_size` (or `rcm`, `requestCacheMemory`): The used request cache memory. For example: `0b`.
            - `request_cache.evictions` (or `rce`, `requestCacheEvictions`): The number of request cache evictions.
            - `request_cache.hit_count` (or `rchc`, `requestCacheHitCount`): The request cache hit count.
            - `request_cache.miss_count` (or `rcmc`, `requestCacheMissCount`): The request cache miss count.
            - `script.compilations` (or `scrcc`, `scriptCompilations`): The number of total script compilations.
            - `script.cache_evictions` (or `scrce`, `scriptCacheEvictions`): The number of total compiled scripts evicted from cache.
            - `search.fetch_current` (or `sfc`, `searchFetchCurrent`): The number of current fetch phase operations.
            - `search.fetch_time` (or `sfti`, `searchFetchTime`): The time spent in fetch phase. For example: `37ms`.
            - `search.fetch_total` (or `sfto`, `searchFetchTotal`): The number of fetch operations.
            - `search.open_contexts` (or `so`, `searchOpenContexts`): The number of open search contexts.
            - `search.query_current` (or `sqc`, `searchQueryCurrent`): The number of current query phase operations.
            - `search.query_time` (or `sqti`, `searchQueryTime`): The time spent in query phase. For example: `43ms`.
            - `search.query_total` (or `sqto`, `searchQueryTotal`): The number of query operations.
            - `search.scroll_current` (or `scc`, `searchScrollCurrent`): The number of open scroll contexts.
            - `search.scroll_time` (or `scti`, `searchScrollTime`): The amount of time scroll contexts were held open. For example: `2m`.
            - `search.scroll_total` (or `scto`, `searchScrollTotal`): The number of completed scroll contexts.
            - `segments.count` (or `sc`, `segmentsCount`): The number of segments.
            - `segments.fixed_bitset_memory` (or `sfbm`, `fixedBitsetMemory`): The memory used by fixed bit sets for nested object field types and type filters for types referred in join fields.
          For example: `1.0kb`.
            - `segments.index_writer_memory` (or `siwm`, `segmentsIndexWriterMemory`): The memory used by the index writer. For example: `18mb`.
            - `segments.memory` (or `sm`, `segmentsMemory`): The memory used by segments. For example: `1.4kb`.
            - `segments.version_map_memory` (or `svmm`, `segmentsVersionMapMemory`): The memory used by the version map. For example: `1.0kb`.
            - `shard_stats.total_count` (or `sstc`, `shards`, `shardStatsTotalCount`): The number of shards assigned.
            - `suggest.current` (or `suc`, `suggestCurrent`): The number of current suggest operations.
            - `suggest.time` (or `suti`, `suggestTime`): The time spent in suggest operations.
            - `suggest.total` (or `suto`, `suggestTotal`): The number of suggest operations.
            - `uptime` (or `u`): The amount of node uptime. For example: `17.3m`.
            - `version` (or `v`): The Elasticsearch version. For example: `9.0.0`.

        deprecated: false
        schema:
          "$ref": "#/components/schemas/cat._types.CatNodeColumns"
        style: form
      - in: query
        name: s
        description: |-
          A comma-separated list of column names or aliases that determines the sort order.
          Sorting defaults to ascending and can be changed by setting `:asc`
          or `:desc` as a suffix to the column name.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Names"
        style: form
      - in: query
        name: master_timeout
        description: The period to wait for a connection to the master node.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  "$ref": "#/components/schemas/cat.nodes.NodesRecord"
              examples:
                CatNodesResponseExample1:
                  summary: Default columns
                  description: 'A successful response from `GET /_cat/nodes?v=true&format=json`.
                    The `ip`, `heap.percent`, `ram.percent`, `cpu`, and `load_*` columns
                    provide the IP addresses and performance information of each node.
                    The `node.role`, `master`, and `name` columns provide information
                    useful for monitoring an entire cluster, particularly large ones.

                    '
                  value: |-
                    [
                      {
                        "ip": "127.0.0.1",
                        "heap.percent": "65",
                        "ram.percent": "99",
                        "cpu": "42",
                        "load_1m": "3.07",
                        "load_5m": null,
                        "load_15m": null,
                        "node.role": "cdfhilmrstw",
                        "master": "*",
                        "name": "mJw06l1"
                      }
                    ]
                CatNodesResponseExample2:
                  summary: Explicit columns
                  description: 'A successful response from `GET /_cat/nodes?v=true&h=id,ip,port,v,m&format=json`.
                    It returns the `id`, `ip`, `port`, `v` (version), and `m` (master)
                    columns.

                    '
                  value: |-
                    [
                      {
                        "id": "veJR",
                        "ip": "127.0.0.1",
                        "port": "59938",
                        "v": "9.0.0",
                        "m": "*"
                      }
                    ]
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'GET /_cat/nodes?v=true&h=id,ip,port,v,m&format=json

          '
      - lang: Python
        source: |-
          resp = client.cat.nodes(
              v=True,
              h="id,ip,port,v,m",
              format="json",
          )
      - lang: JavaScript
        source: |-
          const response = await client.cat.nodes({
            v: "true",
            h: "id,ip,port,v,m",
            format: "json",
          });
      - lang: Ruby
        source: |-
          response = client.cat.nodes(
            v: "true",
            h: "id,ip,port,v,m",
            format: "json"
          )
      - lang: PHP
        source: |-
          $resp = $client->cat()->nodes([
              "v" => "true",
              "h" => "id,ip,port,v,m",
              "format" => "json",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_cat/nodes?v=true&h=id,ip,port,v,m&format=json"'
      - lang: Java
        source: 'client.cat().nodes();

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_cat/pending_tasks":
    get:
      tags:
      - cat
      summary: Get pending task information
      description: |
        Get information about cluster-level changes that have not yet taken effect.
        IMPORTANT: cat APIs are only intended for human consumption using the command line or Kibana console. They are not intended for use by applications. For application consumption, use the pending cluster tasks API.

        ## Required authorization

        * Cluster privileges: `monitor`
      operationId: cat-pending-tasks
      parameters:
      - in: query
        name: h
        description: |+
          A comma-separated list of columns names to display. It supports simple wildcards.

          Supported values include:
            - `insertOrder` (or `o`): The task insertion order.
            - `timeInQueue` (or `t`): How long the task has been in the queue.
            - `priority` (or `p`): The task priority.
            - `source` (or `s`): The task source.

        deprecated: false
        schema:
          "$ref": "#/components/schemas/cat._types.CatPendingTasksColumns"
        style: form
      - in: query
        name: s
        description: |-
          List of columns that determine how the table should be sorted.
          Sorting defaults to ascending and can be changed by setting `:asc`
          or `:desc` as a suffix to the column name.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Names"
        style: form
      - in: query
        name: local
        description: |-
          If `true`, the request computes the list of selected nodes from the
          local cluster state. If `false` the list of selected nodes are computed
          from the cluster state of the master node. In both cases the coordinating
          node will send requests for further information to each selected node.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: master_timeout
        description: Period to wait for a connection to the master node.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  "$ref": "#/components/schemas/cat.pending_tasks.PendingTasksRecord"
              examples:
                CatPendingTasksResponseExample1:
                  description: 'A successful response from `GET /_cat/pending_tasks?v=true&h=insertOrder,timeInQueue,priority,source&format=json`.

                    '
                  value: |-
                    [
                      { "insertOrder": "1685", "timeInQueue": "855ms", "priority": "HIGH", "source": "update-mapping [foo][t]"},
                        { "insertOrder": "1686", "timeInQueue": "843ms", "priority": "HIGH", "source": "update-mapping [foo][t]"},
                        { "insertOrder": "1693", "timeInQueue": "753ms", "priority": "HIGH", "source": "refresh-mapping [foo][[t]]"},
                        { "insertOrder": "1688", "timeInQueue": "816ms", "priority": "HIGH", "source": "update-mapping [foo][t]"},
                        { "insertOrder": "1689", "timeInQueue": "802ms", "priority": "HIGH", "source": "update-mapping [foo][t]"},
                        { "insertOrder": "1690", "timeInQueue": "787ms", "priority": "HIGH", "source": "update-mapping [foo][t]"},
                        { "insertOrder": "1691", "timeInQueue": "773ms", "priority": "HIGH", "source": "update-mapping [foo][t]"}
                    ]
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'GET /_cat/pending_tasks?v=true&h=insertOrder,timeInQueue,priority,source&format=json

          '
      - lang: Python
        source: |-
          resp = client.cat.pending_tasks(
              v=True,
              h="insertOrder,timeInQueue,priority,source",
              format="json",
          )
      - lang: JavaScript
        source: |-
          const response = await client.cat.pendingTasks({
            v: "true",
            h: "insertOrder,timeInQueue,priority,source",
            format: "json",
          });
      - lang: Ruby
        source: |-
          response = client.cat.pending_tasks(
            v: "true",
            h: "insertOrder,timeInQueue,priority,source",
            format: "json"
          )
      - lang: PHP
        source: |-
          $resp = $client->cat()->pendingTasks([
              "v" => "true",
              "h" => "insertOrder,timeInQueue,priority,source",
              "format" => "json",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_cat/pending_tasks?v=true&h=insertOrder,timeInQueue,priority,source&format=json"'
      - lang: Java
        source: 'client.cat().pendingTasks();

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_cat/plugins":
    get:
      tags:
      - cat
      summary: Get plugin information
      description: |
        Get a list of plugins running on each node of a cluster.
        IMPORTANT: cat APIs are only intended for human consumption using the command line or Kibana console. They are not intended for use by applications. For application consumption, use the nodes info API.

        ## Required authorization

        * Cluster privileges: `monitor`
      operationId: cat-plugins
      parameters:
      - in: query
        name: h
        description: |+
          A comma-separated list of columns names to display. It supports simple wildcards.

          Supported values include:
            - `id`: The unique node ID.
            - `name` (or `n`): The node name.
            - `component` (or `c`): The component.
            - `version` (or `v`): The component version.
            - `description` (or `d`): The plugin details.

        deprecated: false
        schema:
          "$ref": "#/components/schemas/cat._types.CatPluginsColumns"
        style: form
      - in: query
        name: s
        description: |-
          List of columns that determine how the table should be sorted.
          Sorting defaults to ascending and can be changed by setting `:asc`
          or `:desc` as a suffix to the column name.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Names"
        style: form
      - in: query
        name: include_bootstrap
        description: Include bootstrap plugins in the response
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: local
        description: |-
          If `true`, the request computes the list of selected nodes from the
          local cluster state. If `false` the list of selected nodes are computed
          from the cluster state of the master node. In both cases the coordinating
          node will send requests for further information to each selected node.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: master_timeout
        description: Period to wait for a connection to the master node.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  "$ref": "#/components/schemas/cat.plugins.PluginsRecord"
              examples:
                CatPluginsResponseExample1:
                  description: 'A successful response from `GET /_cat/plugins?v=true&s=component&h=name,component,version,description&format=json`.

                    '
                  value: |-
                    [
                      { "name": "U7321H6", "component": "analysis-icu", "version": "8.17.0", "description": "The ICU Analysis plugin integrates the Lucene ICU module into Elasticsearch, adding ICU-related analysis components."},
                      {"name": "U7321H6", "component": "analysis-kuromoji",   "verison":  "8.17.0", description: "The Japanese (kuromoji) Analysis plugin integrates Lucene kuromoji analysis module into elasticsearch."},
                      {"name" "U7321H6", "component": "analysis-nori", "version":         "8.17.0", "description": "The Korean (nori) Analysis plugin integrates Lucene nori analysis module into elasticsearch."},
                      {"name": "U7321H6", "component": "analysis-phonetic",   "verison":  "8.17.0", "description": "The Phonetic Analysis plugin integrates phonetic token filter analysis with elasticsearch."},
                      {"name": "U7321H6", "component": "analysis-smartcn",   "verison":  "8.17.0", "description": "Smart Chinese Analysis plugin integrates Lucene Smart Chinese analysis module into elasticsearch."},
                      {"name": "U7321H6", "component": "analysis-stempel",   "verison":  "8.17.0", "description": "The Stempel (Polish) Analysis plugin integrates Lucene stempel (polish) analysis module into elasticsearch."},
                      {"name": "U7321H6", "component": "analysis-ukrainian",   "verison":  "8.17.0", "description": "The Ukrainian Analysis plugin integrates the Lucene UkrainianMorfologikAnalyzer into elasticsearch."},
                      {"name": "U7321H6", "component": "discovery-azure-classic",   "verison":  "8.17.0", "description": "The Azure Classic Discovery plugin allows to use Azure Classic API for the unicast discovery mechanism"},
                      {"name": "U7321H6", "component": "discovery-ec2",   "verison":  "8.17.0", "description": "The EC2 discovery plugin allows to use AWS API for the unicast discovery mechanism."},
                      {"name": "U7321H6", "component": "discovery-gce",   "verison":  "8.17.0", "description": "The Google Compute Engine (GCE) Discovery plugin allows to use GCE API for the unicast discovery mechanism."},
                      {"name": "U7321H6", "component": "mapper-annotated-text",   "verison":  "8.17.0", "description": "The Mapper Annotated_text plugin adds support for text fields with markup used to inject annotation tokens into the index."},
                      {"name": "U7321H6", "component": "mapper-murmur3",   "verison":  "8.17.0", "description": "The Mapper Murmur3 plugin allows to compute hashes of a field's values at index-time and to store them in the index."},
                      {"name": "U7321H6", "component": "mapper-size",   "verison":  "8.17.0", "description": "The Mapper Size plugin allows document to record their uncompressed size at index time."},
                      {"name": "U7321H6", "component": "store-smb",   "verison":  "8.17.0", "description": "The Store SMB plugin adds support for SMB stores."}
                    ]
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'GET /_cat/plugins?v=true&s=component&h=name,component,version,description&format=json

          '
      - lang: Python
        source: |-
          resp = client.cat.plugins(
              v=True,
              s="component",
              h="name,component,version,description",
              format="json",
          )
      - lang: JavaScript
        source: |-
          const response = await client.cat.plugins({
            v: "true",
            s: "component",
            h: "name,component,version,description",
            format: "json",
          });
      - lang: Ruby
        source: |-
          response = client.cat.plugins(
            v: "true",
            s: "component",
            h: "name,component,version,description",
            format: "json"
          )
      - lang: PHP
        source: |-
          $resp = $client->cat()->plugins([
              "v" => "true",
              "s" => "component",
              "h" => "name,component,version,description",
              "format" => "json",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_cat/plugins?v=true&s=component&h=name,component,version,description&format=json"'
      - lang: Java
        source: 'client.cat().plugins();

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_cat/recovery/{index}":
    get:
      tags:
      - cat
      summary: 'Get shard recovery information

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_cat/recovery</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_cat/recovery/{index}</span>\n
        \                     </div>\n                    \n\nGet information about
        ongoing and completed shard recoveries.\nShard recovery is the process of
        initializing a shard copy, such as restoring a primary shard from a snapshot
        or syncing a replica shard from a primary shard. When a shard recovery completes,
        the recovered shard is available for search and indexing.\nFor data streams,
        the API returns information about the stream’s backing indices.\nIMPORTANT:
        cat APIs are only intended for human consumption using the command line or
        Kibana console. They are not intended for use by applications. For application
        consumption, use the index recovery API.\n\n## Required authorization\n\n*
        Index privileges: `monitor`\n* Cluster privileges: `monitor`\n"
      operationId: cat-recovery
      parameters:
      - "$ref": "#/components/parameters/cat.recovery-index"
      - "$ref": "#/components/parameters/cat.recovery-active_only"
      - "$ref": "#/components/parameters/cat.recovery-detailed"
      - "$ref": "#/components/parameters/cat.recovery-index_"
      - "$ref": "#/components/parameters/cat.recovery-h"
      - "$ref": "#/components/parameters/cat.recovery-s"
      responses:
        '200':
          "$ref": "#/components/responses/cat.recovery-200"
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'GET _cat/recovery?v=true&format=json

          '
      - lang: Python
        source: |-
          resp = client.cat.recovery(
              v=True,
              format="json",
          )
      - lang: JavaScript
        source: |-
          const response = await client.cat.recovery({
            v: "true",
            format: "json",
          });
      - lang: Ruby
        source: |-
          response = client.cat.recovery(
            v: "true",
            format: "json"
          )
      - lang: PHP
        source: |-
          $resp = $client->cat()->recovery([
              "v" => "true",
              "format" => "json",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_cat/recovery?v=true&format=json"'
      - lang: Java
        source: 'client.cat().recovery();

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_cat/repositories":
    get:
      tags:
      - cat
      summary: Get snapshot repository information
      description: |
        Get a list of snapshot repositories for a cluster.
        IMPORTANT: cat APIs are only intended for human consumption using the command line or Kibana console. They are not intended for use by applications. For application consumption, use the get snapshot repository API.

        ## Required authorization

        * Cluster privileges: `monitor_snapshot`
      operationId: cat-repositories
      parameters:
      - in: query
        name: h
        description: List of columns to appear in the response. Supports simple wildcards.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Names"
        style: form
      - in: query
        name: s
        description: |-
          List of columns that determine how the table should be sorted.
          Sorting defaults to ascending and can be changed by setting `:asc`
          or `:desc` as a suffix to the column name.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Names"
        style: form
      - in: query
        name: local
        description: |-
          If `true`, the request computes the list of selected nodes from the
          local cluster state. If `false` the list of selected nodes are computed
          from the cluster state of the master node. In both cases the coordinating
          node will send requests for further information to each selected node.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: master_timeout
        description: Period to wait for a connection to the master node.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  "$ref": "#/components/schemas/cat.repositories.RepositoriesRecord"
              examples:
                CatRepositoriesResponseExample1:
                  description: 'A successful response from `GET /_cat/repositories?v=true&format=json`.

                    '
                  value: |-
                    [
                      {
                        "id": "repo1",
                        "type": "fs"
                      },
                      {
                        "id": "repo2",
                        "type": "s3"
                      }
                    ]
      x-state: Generally available; Added in 2.1.0
      x-codeSamples:
      - lang: Console
        source: 'GET /_cat/repositories?v=true&format=json

          '
      - lang: Python
        source: |-
          resp = client.cat.repositories(
              v=True,
              format="json",
          )
      - lang: JavaScript
        source: |-
          const response = await client.cat.repositories({
            v: "true",
            format: "json",
          });
      - lang: Ruby
        source: |-
          response = client.cat.repositories(
            v: "true",
            format: "json"
          )
      - lang: PHP
        source: |-
          $resp = $client->cat()->repositories([
              "v" => "true",
              "format" => "json",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_cat/repositories?v=true&format=json"'
      - lang: Java
        source: 'client.cat().repositories();

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_cat/segments/{index}":
    get:
      tags:
      - cat
      summary: 'Get segment information

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_cat/segments</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_cat/segments/{index}</span>\n
        \                     </div>\n                    \n\nGet low-level information
        about the Lucene segments in index shards.\nFor data streams, the API returns
        information about the backing indices.\nIMPORTANT: cat APIs are only intended
        for human consumption using the command line or Kibana console. They are not
        intended for use by applications. For application consumption, use the index
        segments API.\n\n## Required authorization\n\n* Index privileges: `monitor`\n*
        Cluster privileges: `monitor`\n"
      operationId: cat-segments
      parameters:
      - "$ref": "#/components/parameters/cat.segments-index"
      - "$ref": "#/components/parameters/cat.segments-h"
      - "$ref": "#/components/parameters/cat.segments-s"
      - "$ref": "#/components/parameters/cat.segments-local"
      - "$ref": "#/components/parameters/cat.segments-master_timeout"
      - "$ref": "#/components/parameters/cat.segments-expand_wildcards"
      - "$ref": "#/components/parameters/cat.segments-allow_no_indices"
      - "$ref": "#/components/parameters/cat.segments-ignore_throttled"
      - "$ref": "#/components/parameters/cat.segments-ignore_unavailable"
      - "$ref": "#/components/parameters/cat.segments-allow_closed"
      responses:
        '200':
          "$ref": "#/components/responses/cat.segments-200"
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'GET /_cat/segments?v=true&format=json

          '
      - lang: Python
        source: |-
          resp = client.cat.segments(
              v=True,
              format="json",
          )
      - lang: JavaScript
        source: |-
          const response = await client.cat.segments({
            v: "true",
            format: "json",
          });
      - lang: Ruby
        source: |-
          response = client.cat.segments(
            v: "true",
            format: "json"
          )
      - lang: PHP
        source: |-
          $resp = $client->cat()->segments([
              "v" => "true",
              "format" => "json",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_cat/segments?v=true&format=json"'
      - lang: Java
        source: 'client.cat().segments();

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_cat/shards/{index}":
    get:
      tags:
      - cat
      summary: 'Get shard information

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_cat/shards</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_cat/shards/{index}</span>\n
        \                     </div>\n                    \n\nGet information about
        the shards in a cluster.\nFor data streams, the API returns information about
        the backing indices.\nIMPORTANT: cat APIs are only intended for human consumption
        using the command line or Kibana console. They are not intended for use by
        applications.\n\n## Required authorization\n\n* Index privileges: `monitor`\n*
        Cluster privileges: `monitor`\n"
      operationId: cat-shards
      parameters:
      - "$ref": "#/components/parameters/cat.shards-index"
      - "$ref": "#/components/parameters/cat.shards-h"
      - "$ref": "#/components/parameters/cat.shards-s"
      - "$ref": "#/components/parameters/cat.shards-master_timeout"
      responses:
        '200':
          "$ref": "#/components/responses/cat.shards-200"
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'GET _cat/shards?format=json

          '
      - lang: Python
        source: |-
          resp = client.cat.shards(
              format="json",
          )
      - lang: JavaScript
        source: |-
          const response = await client.cat.shards({
            format: "json",
          });
      - lang: Ruby
        source: |-
          response = client.cat.shards(
            format: "json"
          )
      - lang: PHP
        source: |-
          $resp = $client->cat()->shards([
              "format" => "json",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_cat/shards?format=json"'
      - lang: Java
        source: 'client.cat().shards();

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_cat/snapshots/{repository}":
    get:
      tags:
      - cat
      summary: 'Get snapshot information

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_cat/snapshots</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_cat/snapshots/{repository}</span>\n
        \                     </div>\n                    \n\nGet information about
        the snapshots stored in one or more repositories.\nA snapshot is a backup
        of an index or running Elasticsearch cluster.\nIMPORTANT: cat APIs are only
        intended for human consumption using the command line or Kibana console. They
        are not intended for use by applications. For application consumption, use
        the get snapshot API.\n\n## Required authorization\n\n* Cluster privileges:
        `monitor_snapshot`\n"
      operationId: cat-snapshots
      parameters:
      - "$ref": "#/components/parameters/cat.snapshots-repository"
      - "$ref": "#/components/parameters/cat.snapshots-ignore_unavailable"
      - "$ref": "#/components/parameters/cat.snapshots-h"
      - "$ref": "#/components/parameters/cat.snapshots-s"
      - "$ref": "#/components/parameters/cat.snapshots-master_timeout"
      responses:
        '200':
          "$ref": "#/components/responses/cat.snapshots-200"
      x-state: Generally available; Added in 2.1.0
      x-codeSamples:
      - lang: Console
        source: 'GET /_cat/snapshots/repo1?v=true&s=id&format=json

          '
      - lang: Python
        source: |-
          resp = client.cat.snapshots(
              repository="repo1",
              v=True,
              s="id",
              format="json",
          )
      - lang: JavaScript
        source: |-
          const response = await client.cat.snapshots({
            repository: "repo1",
            v: "true",
            s: "id",
            format: "json",
          });
      - lang: Ruby
        source: |-
          response = client.cat.snapshots(
            repository: "repo1",
            v: "true",
            s: "id",
            format: "json"
          )
      - lang: PHP
        source: |-
          $resp = $client->cat()->snapshots([
              "repository" => "repo1",
              "v" => "true",
              "s" => "id",
              "format" => "json",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_cat/snapshots/repo1?v=true&s=id&format=json"'
      - lang: Java
        source: 'client.cat().snapshots();

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_cat/tasks":
    get:
      tags:
      - cat
      summary: Get task information
      description: |
        Get information about tasks currently running in the cluster.
        IMPORTANT: cat APIs are only intended for human consumption using the command line or Kibana console. They are not intended for use by applications. For application consumption, use the task management API.

        ## Required authorization

        * Cluster privileges: `monitor`
      operationId: cat-tasks
      parameters:
      - in: query
        name: actions
        description: The task action names, which are used to limit the response.
        deprecated: false
        schema:
          type: array
          items:
            type: string
        style: form
      - in: query
        name: detailed
        description: If `true`, the response includes detailed information about shard
          recoveries.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: nodes
        description: Unique node identifiers, which are used to limit the response.
        deprecated: false
        schema:
          type: array
          items:
            type: string
        style: form
      - in: query
        name: parent_task_id
        description: The parent task identifier, which is used to limit the response.
        deprecated: false
        schema:
          type: string
        style: form
      - in: query
        name: h
        description: |+
          A comma-separated list of columns names to display. It supports simple wildcards.

          Supported values include:
            - `id`: The ID of the task with the node.
            - `action` (or `ac`): The task action.
            - `task_id` (or `ti`): The unique task ID.
            - `parent_task_id` (or `pti`): The parent task ID.
            - `type` (or `ty`): The task type.
            - `start_time` (or `start`): The start time in milliseconds.
            - `timestamp` (or `ts`, `hms`, `hhmmss`): The start time in HH:MM:SS.
            - `running_time_ns` (or `time`): The running time in nanoseconds.
            - `running_time` (or `time`): The running time.
            - `node_id` (or `ni`): The unique node ID.
            - `ip` (or `i`): The IP address.
            - `port` (or `po`): The bound transport port.
            - `node` (or `n`): The node name.
            - `version` (or `v`): The Elasticsearch version.
            - `x_opaque_id` (or `x`): The X-Opaque-ID header.

        deprecated: false
        schema:
          "$ref": "#/components/schemas/cat._types.CatTasksColumns"
        style: form
      - in: query
        name: s
        description: |-
          List of columns that determine how the table should be sorted.
          Sorting defaults to ascending and can be changed by setting `:asc`
          or `:desc` as a suffix to the column name.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Names"
        style: form
      - in: query
        name: timeout
        description: |-
          Period to wait for a response.
          If no response is received before the timeout expires, the request fails and returns an error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: wait_for_completion
        description: If `true`, the request blocks until the task has completed.
        deprecated: false
        schema:
          type: boolean
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  "$ref": "#/components/schemas/cat.tasks.TasksRecord"
              examples:
                CatTasksResponseExample1:
                  description: A successful response from `GET _cat/tasks?v=true&format=json`.
                  value: |-
                    [
                      {
                        "action": "cluster:monitor/tasks/lists[n]",
                        "task_id": "oTUltX4IQMOUUVeiohTt8A:124",
                        "parent_task_id": "oTUltX4IQMOUUVeiohTt8A:123",
                        "type": "direct",
                        "start_time": "1458585884904",
                        "timestamp": "01:48:24",
                        "running_time": "44.1micros",
                        "ip": "127.0.0.1:9300",
                        "node": "oTUltX4IQMOUUVeiohTt8A"
                      },
                      {
                        "action": "cluster:monitor/tasks/lists",
                        "task_id": "oTUltX4IQMOUUVeiohTt8A:123",
                        "parent_task_id": "-",
                        "type": "transport",
                        "start_time": "1458585884904",
                        "timestamp": "01:48:24",
                        "running_time": "186.2micros",
                        "ip": "127.0.0.1:9300",
                        "node": "oTUltX4IQMOUUVeiohTt8A"
                      }
                    ]
      x-state: Technical preview; Added in 5.0.0
      x-codeSamples:
      - lang: Console
        source: 'GET _cat/tasks?v=true&format=json

          '
      - lang: Python
        source: |-
          resp = client.cat.tasks(
              v=True,
              format="json",
          )
      - lang: JavaScript
        source: |-
          const response = await client.cat.tasks({
            v: "true",
            format: "json",
          });
      - lang: Ruby
        source: |-
          response = client.cat.tasks(
            v: "true",
            format: "json"
          )
      - lang: PHP
        source: |-
          $resp = $client->cat()->tasks([
              "v" => "true",
              "format" => "json",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_cat/tasks?v=true&format=json"'
      - lang: Java
        source: 'client.cat().tasks();

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_cat/templates/{name}":
    get:
      tags:
      - cat
      summary: 'Get index template information

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_cat/templates</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_cat/templates/{name}</span>\n
        \                     </div>\n                    \n\nGet information about
        the index templates in a cluster.\nYou can use index templates to apply index
        settings and field mappings to new indices at creation.\nIMPORTANT: cat APIs
        are only intended for human consumption using the command line or Kibana console.
        They are not intended for use by applications. For application consumption,
        use the get index template API.\n\n## Required authorization\n\n* Cluster
        privileges: `monitor`\n"
      operationId: cat-templates
      parameters:
      - "$ref": "#/components/parameters/cat.templates-name"
      - "$ref": "#/components/parameters/cat.templates-h"
      - "$ref": "#/components/parameters/cat.templates-s"
      - "$ref": "#/components/parameters/cat.templates-local"
      - "$ref": "#/components/parameters/cat.templates-master_timeout"
      responses:
        '200':
          "$ref": "#/components/responses/cat.templates-200"
      x-state: Generally available; Added in 5.2.0
      x-codeSamples:
      - lang: Console
        source: 'GET _cat/templates/my-template-*?v=true&s=name&format=json

          '
      - lang: Python
        source: |-
          resp = client.cat.templates(
              name="my-template-*",
              v=True,
              s="name",
              format="json",
          )
      - lang: JavaScript
        source: |-
          const response = await client.cat.templates({
            name: "my-template-*",
            v: "true",
            s: "name",
            format: "json",
          });
      - lang: Ruby
        source: |-
          response = client.cat.templates(
            name: "my-template-*",
            v: "true",
            s: "name",
            format: "json"
          )
      - lang: PHP
        source: |-
          $resp = $client->cat()->templates([
              "name" => "my-template-*",
              "v" => "true",
              "s" => "name",
              "format" => "json",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_cat/templates/my-template-*?v=true&s=name&format=json"'
      - lang: Java
        source: 'client.cat().templates();

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_cat/thread_pool/{thread_pool_patterns}":
    get:
      tags:
      - cat
      summary: 'Get thread pool statistics

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_cat/thread_pool</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_cat/thread_pool/{thread_pool_patterns}</span>\n
        \                     </div>\n                    \n\nGet thread pool statistics
        for each node in a cluster.\nReturned information includes all built-in thread
        pools and custom thread pools.\nIMPORTANT: cat APIs are only intended for
        human consumption using the command line or Kibana console. They are not intended
        for use by applications. For application consumption, use the nodes info API.\n\n##
        Required authorization\n\n* Cluster privileges: `monitor`\n"
      operationId: cat-thread-pool
      parameters:
      - "$ref": "#/components/parameters/cat.thread_pool-thread_pool_patterns"
      - "$ref": "#/components/parameters/cat.thread_pool-h"
      - "$ref": "#/components/parameters/cat.thread_pool-s"
      - "$ref": "#/components/parameters/cat.thread_pool-local"
      - "$ref": "#/components/parameters/cat.thread_pool-master_timeout"
      responses:
        '200':
          "$ref": "#/components/responses/cat.thread_pool-200"
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'GET /_cat/thread_pool?format=json

          '
      - lang: Python
        source: |-
          resp = client.cat.thread_pool(
              format="json",
          )
      - lang: JavaScript
        source: |-
          const response = await client.cat.threadPool({
            format: "json",
          });
      - lang: Ruby
        source: |-
          response = client.cat.thread_pool(
            format: "json"
          )
      - lang: PHP
        source: |-
          $resp = $client->cat()->threadPool([
              "format" => "json",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_cat/thread_pool?format=json"'
      - lang: Java
        source: 'client.cat().threadPool();

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_cat/transforms/{transform_id}":
    get:
      tags:
      - cat
      summary: 'Get transform information

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_cat/transforms</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_cat/transforms/{transform_id}</span>\n
        \                     </div>\n                    \n\nGet configuration and
        usage information about transforms.\n\nCAT APIs are only intended for human
        consumption using the Kibana\nconsole or command line. They are not intended
        for use by applications. For\napplication consumption, use the get transform
        statistics API.\n\n## Required authorization\n\n* Cluster privileges: `monitor_transform`\n"
      operationId: cat-transforms
      parameters:
      - "$ref": "#/components/parameters/cat.transforms-transform_id"
      - "$ref": "#/components/parameters/cat.transforms-allow_no_match"
      - "$ref": "#/components/parameters/cat.transforms-from"
      - "$ref": "#/components/parameters/cat.transforms-h"
      - "$ref": "#/components/parameters/cat.transforms-s"
      - "$ref": "#/components/parameters/cat.transforms-size"
      responses:
        '200':
          "$ref": "#/components/responses/cat.transforms-200"
      x-state: Generally available; Added in 7.7.0
      x-codeSamples:
      - lang: Console
        source: 'GET /_cat/transforms?v=true&format=json

          '
      - lang: Python
        source: |-
          resp = client.cat.transforms(
              v=True,
              format="json",
          )
      - lang: JavaScript
        source: |-
          const response = await client.cat.transforms({
            v: "true",
            format: "json",
          });
      - lang: Ruby
        source: |-
          response = client.cat.transforms(
            v: "true",
            format: "json"
          )
      - lang: PHP
        source: |-
          $resp = $client->cat()->transforms([
              "v" => "true",
              "format" => "json",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_cat/transforms?v=true&format=json"'
      - lang: Java
        source: 'client.cat().transforms();

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_ccr/auto_follow/{name}":
    get:
      tags:
      - ccr
      summary: 'Get auto-follow patterns

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_ccr/auto_follow</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_ccr/auto_follow/{name}</span>\n
        \                     </div>\n                    \n\nGet cross-cluster replication
        auto-follow patterns.\n\n## Required authorization\n\n* Cluster privileges:
        `manage_ccr`\n"
      externalDocs:
        url: https://www.elastic.co/docs/deploy-manage/tools/cross-cluster-replication/manage-auto-follow-patterns
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/ccr-get-auto-follow-pattern.html
      operationId: ccr-get-auto-follow-pattern
      parameters:
      - "$ref": "#/components/parameters/ccr.get_auto_follow_pattern-name"
      - "$ref": "#/components/parameters/ccr.get_auto_follow_pattern-master_timeout"
      responses:
        '200':
          "$ref": "#/components/responses/ccr.get_auto_follow_pattern-200"
      x-state: Generally available; Added in 6.5.0
      x-codeSamples:
      - lang: Console
        source: 'GET /_ccr/auto_follow/my_auto_follow_pattern

          '
      - lang: Python
        source: |-
          resp = client.ccr.get_auto_follow_pattern(
              name="my_auto_follow_pattern",
          )
      - lang: JavaScript
        source: |-
          const response = await client.ccr.getAutoFollowPattern({
            name: "my_auto_follow_pattern",
          });
      - lang: Ruby
        source: |-
          response = client.ccr.get_auto_follow_pattern(
            name: "my_auto_follow_pattern"
          )
      - lang: PHP
        source: |-
          $resp = $client->ccr()->getAutoFollowPattern([
              "name" => "my_auto_follow_pattern",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_ccr/auto_follow/my_auto_follow_pattern"'
      - lang: Java
        source: |
          client.ccr().getAutoFollowPattern(g -> g
              .name("my_auto_follow_pattern")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    put:
      tags:
      - ccr
      summary: Create or update auto-follow patterns
      description: |-
        Create a collection of cross-cluster replication auto-follow patterns for a remote cluster.
        Newly created indices on the remote cluster that match any of the patterns are automatically configured as follower indices.
        Indices on the remote cluster that were created before the auto-follow pattern was created will not be auto-followed even if they match the pattern.

        This API can also be used to update auto-follow patterns.
        NOTE: Follower indices that were configured automatically before updating an auto-follow pattern will remain unchanged even if they do not match against the new patterns.
      externalDocs:
        url: https://www.elastic.co/docs/deploy-manage/tools/cross-cluster-replication/manage-auto-follow-patterns
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/ccr-put-auto-follow-pattern.html
      operationId: ccr-put-auto-follow-pattern
      parameters:
      - in: path
        name: name
        description: The name of the collection of auto-follow patterns.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Name"
        style: simple
      - in: query
        name: master_timeout
        description: Period to wait for a connection to the master node.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                remote_cluster:
                  description: The remote cluster containing the leader indices to
                    match against.
                  type: string
                follow_index_pattern:
                  description: The name of follower index. The template {{leader_index}}
                    can be used to derive the name of the follower index from the
                    name of the leader index. When following a data stream, use {{leader_index}};
                    CCR does not support changes to the names of a follower data stream’s
                    backing indices.
                  allOf:
                  - "$ref": "#/components/schemas/_types.IndexPattern"
                leader_index_patterns:
                  description: An array of simple index patterns to match against
                    indices in the remote cluster specified by the remote_cluster
                    field.
                  allOf:
                  - "$ref": "#/components/schemas/_types.IndexPatterns"
                leader_index_exclusion_patterns:
                  description: An array of simple index patterns that can be used
                    to exclude indices from being auto-followed. Indices in the remote
                    cluster whose names are matching one or more leader_index_patterns
                    and one or more leader_index_exclusion_patterns won’t be followed.
                  allOf:
                  - "$ref": "#/components/schemas/_types.IndexPatterns"
                max_outstanding_read_requests:
                  description: The maximum number of outstanding reads requests from
                    the remote cluster.
                  default: 12
                  type: number
                settings:
                  description: Settings to override from the leader index. Note that
                    certain settings can not be overrode (e.g., index.number_of_shards).
                  type: object
                  additionalProperties:
                    type: object
                max_outstanding_write_requests:
                  description: The maximum number of outstanding reads requests from
                    the remote cluster.
                  default: 9
                  type: number
                read_poll_timeout:
                  description: The maximum time to wait for new operations on the
                    remote cluster when the follower index is synchronized with the
                    leader index. When the timeout has elapsed, the poll for operations
                    will return to the follower so that it can update some statistics.
                    Then the follower will immediately attempt to read from the leader
                    again.
                  default: 1m
                  allOf:
                  - "$ref": "#/components/schemas/_types.Duration"
                max_read_request_operation_count:
                  description: The maximum number of operations to pull per read from
                    the remote cluster.
                  default: 5120
                  type: number
                max_read_request_size:
                  description: The maximum size in bytes of per read of a batch of
                    operations pulled from the remote cluster.
                  default: 32mb
                  allOf:
                  - "$ref": "#/components/schemas/_types.ByteSize"
                max_retry_delay:
                  description: The maximum time to wait before retrying an operation
                    that failed exceptionally. An exponential backoff strategy is
                    employed when retrying.
                  default: 500ms
                  allOf:
                  - "$ref": "#/components/schemas/_types.Duration"
                max_write_buffer_count:
                  description: The maximum number of operations that can be queued
                    for writing. When this limit is reached, reads from the remote
                    cluster will be deferred until the number of queued operations
                    goes below the limit.
                  default: 2147483647
                  type: number
                max_write_buffer_size:
                  description: The maximum total bytes of operations that can be queued
                    for writing. When this limit is reached, reads from the remote
                    cluster will be deferred until the total bytes of queued operations
                    goes below the limit.
                  default: 512mb
                  allOf:
                  - "$ref": "#/components/schemas/_types.ByteSize"
                max_write_request_operation_count:
                  description: The maximum number of operations per bulk write request
                    executed on the follower.
                  default: 5120
                  type: number
                max_write_request_size:
                  description: The maximum total bytes of operations per bulk write
                    request executed on the follower.
                  default: 9223372036854775807b
                  allOf:
                  - "$ref": "#/components/schemas/_types.ByteSize"
              required:
              - remote_cluster
            examples:
              PutAutoFollowPatternRequestExample1:
                description: 'Run `PUT /_ccr/auto_follow/my_auto_follow_pattern` to
                  creates an auto-follow pattern.

                  '
                value: |-
                  {
                    "remote_cluster" : "remote_cluster",
                    "leader_index_patterns" :
                    [
                      "leader_index*"
                    ],
                    "follow_index_pattern" : "{{leader_index}}-follower",
                    "settings": {
                      "index.number_of_replicas": 0
                    },
                    "max_read_request_operation_count" : 1024,
                    "max_outstanding_read_requests" : 16,
                    "max_read_request_size" : "1024k",
                    "max_write_request_operation_count" : 32768,
                    "max_write_request_size" : "16k",
                    "max_outstanding_write_requests" : 8,
                    "max_write_buffer_count" : 512,
                    "max_write_buffer_size" : "512k",
                    "max_retry_delay" : "10s",
                    "read_poll_timeout" : "30s"
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
              examples:
                PutAutoFollowPatternResponseExample1:
                  description: A successful response for creating an auto-follow pattern.
                  value: |-
                    {
                      "acknowledged": true
                    }
      x-state: Generally available; Added in 6.5.0
      x-codeSamples:
      - lang: Console
        source: |-
          PUT /_ccr/auto_follow/my_auto_follow_pattern
          {
            "remote_cluster" : "remote_cluster",
            "leader_index_patterns" :
            [
              "leader_index*"
            ],
            "follow_index_pattern" : "{{leader_index}}-follower",
            "settings": {
              "index.number_of_replicas": 0
            },
            "max_read_request_operation_count" : 1024,
            "max_outstanding_read_requests" : 16,
            "max_read_request_size" : "1024k",
            "max_write_request_operation_count" : 32768,
            "max_write_request_size" : "16k",
            "max_outstanding_write_requests" : 8,
            "max_write_buffer_count" : 512,
            "max_write_buffer_size" : "512k",
            "max_retry_delay" : "10s",
            "read_poll_timeout" : "30s"
          }
      - lang: Python
        source: |-
          resp = client.ccr.put_auto_follow_pattern(
              name="my_auto_follow_pattern",
              remote_cluster="remote_cluster",
              leader_index_patterns=[
                  "leader_index*"
              ],
              follow_index_pattern="{{leader_index}}-follower",
              settings={
                  "index.number_of_replicas": 0
              },
              max_read_request_operation_count=1024,
              max_outstanding_read_requests=16,
              max_read_request_size="1024k",
              max_write_request_operation_count=32768,
              max_write_request_size="16k",
              max_outstanding_write_requests=8,
              max_write_buffer_count=512,
              max_write_buffer_size="512k",
              max_retry_delay="10s",
              read_poll_timeout="30s",
          )
      - lang: JavaScript
        source: |-
          const response = await client.ccr.putAutoFollowPattern({
            name: "my_auto_follow_pattern",
            remote_cluster: "remote_cluster",
            leader_index_patterns: ["leader_index*"],
            follow_index_pattern: "{{leader_index}}-follower",
            settings: {
              "index.number_of_replicas": 0,
            },
            max_read_request_operation_count: 1024,
            max_outstanding_read_requests: 16,
            max_read_request_size: "1024k",
            max_write_request_operation_count: 32768,
            max_write_request_size: "16k",
            max_outstanding_write_requests: 8,
            max_write_buffer_count: 512,
            max_write_buffer_size: "512k",
            max_retry_delay: "10s",
            read_poll_timeout: "30s",
          });
      - lang: Ruby
        source: |-
          response = client.ccr.put_auto_follow_pattern(
            name: "my_auto_follow_pattern",
            body: {
              "remote_cluster": "remote_cluster",
              "leader_index_patterns": [
                "leader_index*"
              ],
              "follow_index_pattern": "{{leader_index}}-follower",
              "settings": {
                "index.number_of_replicas": 0
              },
              "max_read_request_operation_count": 1024,
              "max_outstanding_read_requests": 16,
              "max_read_request_size": "1024k",
              "max_write_request_operation_count": 32768,
              "max_write_request_size": "16k",
              "max_outstanding_write_requests": 8,
              "max_write_buffer_count": 512,
              "max_write_buffer_size": "512k",
              "max_retry_delay": "10s",
              "read_poll_timeout": "30s"
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->ccr()->putAutoFollowPattern([
              "name" => "my_auto_follow_pattern",
              "body" => [
                  "remote_cluster" => "remote_cluster",
                  "leader_index_patterns" => array(
                      "leader_index*",
                  ),
                  "follow_index_pattern" => "{{leader_index}}-follower",
                  "settings" => [
                      "index.number_of_replicas" => 0,
                  ],
                  "max_read_request_operation_count" => 1024,
                  "max_outstanding_read_requests" => 16,
                  "max_read_request_size" => "1024k",
                  "max_write_request_operation_count" => 32768,
                  "max_write_request_size" => "16k",
                  "max_outstanding_write_requests" => 8,
                  "max_write_buffer_count" => 512,
                  "max_write_buffer_size" => "512k",
                  "max_retry_delay" => "10s",
                  "read_poll_timeout" => "30s",
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"remote_cluster":"remote_cluster","leader_index_patterns":["leader_index*"],"follow_index_pattern":"{{leader_index}}-follower","settings":{"index.number_of_replicas":0},"max_read_request_operation_count":1024,"max_outstanding_read_requests":16,"max_read_request_size":"1024k","max_write_request_operation_count":32768,"max_write_request_size":"16k","max_outstanding_write_requests":8,"max_write_buffer_count":512,"max_write_buffer_size":"512k","max_retry_delay":"10s","read_poll_timeout":"30s"}''
          "$ELASTICSEARCH_URL/_ccr/auto_follow/my_auto_follow_pattern"'
      - lang: Java
        source: |
          client.ccr().putAutoFollowPattern(p -> p
              .followIndexPattern("{{leader_index}}-follower")
              .leaderIndexPatterns("leader_index*")
              .maxOutstandingReadRequests(16)
              .maxOutstandingWriteRequests(8)
              .maxReadRequestOperationCount(1024)
              .maxReadRequestSize("1024k")
              .maxRetryDelay(m -> m
                  .time("10s")
              )
              .maxWriteBufferCount(512)
              .maxWriteBufferSize("512k")
              .maxWriteRequestOperationCount(32768)
              .maxWriteRequestSize("16k")
              .name("my_auto_follow_pattern")
              .readPollTimeout(r -> r
                  .time("30s")
              )
              .remoteCluster("remote_cluster")
              .settings("index.number_of_replicas", JsonData.fromJson("0"))
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    delete:
      tags:
      - ccr
      summary: Delete auto-follow patterns
      description: |
        Delete a collection of cross-cluster replication auto-follow patterns.

        ## Required authorization

        * Cluster privileges: `manage_ccr`
      externalDocs:
        url: https://www.elastic.co/docs/deploy-manage/tools/cross-cluster-replication/manage-auto-follow-patterns
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/ccr-delete-auto-follow-pattern.html
      operationId: ccr-delete-auto-follow-pattern
      parameters:
      - in: path
        name: name
        description: The auto-follow pattern collection to delete.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Name"
        style: simple
      - in: query
        name: master_timeout
        description: |-
          The period to wait for a connection to the master node.
          If the master node is not available before the timeout expires, the request fails and returns an error.
          It can also be set to `-1` to indicate that the request should never timeout.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
              examples:
                DeleteAutoFollowPatternResponseExample1:
                  description: A successful response from `DELETE /_ccr/auto_follow/my_auto_follow_pattern`,
                    which deletes an auto-follow pattern.
                  value: |-
                    {
                      "acknowledged" : true
                    }
      x-state: Generally available; Added in 6.5.0
      x-codeSamples:
      - lang: Console
        source: 'DELETE /_ccr/auto_follow/my_auto_follow_pattern

          '
      - lang: Python
        source: |-
          resp = client.ccr.delete_auto_follow_pattern(
              name="my_auto_follow_pattern",
          )
      - lang: JavaScript
        source: |-
          const response = await client.ccr.deleteAutoFollowPattern({
            name: "my_auto_follow_pattern",
          });
      - lang: Ruby
        source: |-
          response = client.ccr.delete_auto_follow_pattern(
            name: "my_auto_follow_pattern"
          )
      - lang: PHP
        source: |-
          $resp = $client->ccr()->deleteAutoFollowPattern([
              "name" => "my_auto_follow_pattern",
          ]);
      - lang: curl
        source: 'curl -X DELETE -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_ccr/auto_follow/my_auto_follow_pattern"'
      - lang: Java
        source: |
          client.ccr().deleteAutoFollowPattern(d -> d
              .name("my_auto_follow_pattern")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/{index}/_ccr/follow":
    put:
      tags:
      - ccr
      summary: Create a follower
      description: |-
        Create a cross-cluster replication follower index that follows a specific leader index.
        When the API returns, the follower index exists and cross-cluster replication starts replicating operations from the leader index to the follower index.
      operationId: ccr-follow
      parameters:
      - in: path
        name: index
        description: The name of the follower index.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.IndexName"
        style: simple
      - in: query
        name: master_timeout
        description: Period to wait for a connection to the master node.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: wait_for_active_shards
        description: |-
          Specifies the number of shards to wait on being active before responding. This defaults to waiting on none of the shards to be
          active.
          A shard must be restored from the leader index before being active. Restoring a follower shard requires transferring all the
          remote Lucene segment files to the follower index.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.WaitForActiveShards"
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                data_stream_name:
                  description: If the leader index is part of a data stream, the name
                    to which the local data stream for the followed index should be
                    renamed.
                  type: string
                leader_index:
                  description: The name of the index in the leader cluster to follow.
                  allOf:
                  - "$ref": "#/components/schemas/_types.IndexName"
                max_outstanding_read_requests:
                  description: The maximum number of outstanding reads requests from
                    the remote cluster.
                  type: number
                max_outstanding_write_requests:
                  description: The maximum number of outstanding write requests on
                    the follower.
                  type: number
                max_read_request_operation_count:
                  description: The maximum number of operations to pull per read from
                    the remote cluster.
                  type: number
                max_read_request_size:
                  description: The maximum size in bytes of per read of a batch of
                    operations pulled from the remote cluster.
                  allOf:
                  - "$ref": "#/components/schemas/_types.ByteSize"
                max_retry_delay:
                  description: |-
                    The maximum time to wait before retrying an operation that failed exceptionally. An exponential backoff strategy is employed when
                    retrying.
                  allOf:
                  - "$ref": "#/components/schemas/_types.Duration"
                max_write_buffer_count:
                  description: |-
                    The maximum number of operations that can be queued for writing. When this limit is reached, reads from the remote cluster will be
                    deferred until the number of queued operations goes below the limit.
                  type: number
                max_write_buffer_size:
                  description: |-
                    The maximum total bytes of operations that can be queued for writing. When this limit is reached, reads from the remote cluster will
                    be deferred until the total bytes of queued operations goes below the limit.
                  allOf:
                  - "$ref": "#/components/schemas/_types.ByteSize"
                max_write_request_operation_count:
                  description: The maximum number of operations per bulk write request
                    executed on the follower.
                  type: number
                max_write_request_size:
                  description: The maximum total bytes of operations per bulk write
                    request executed on the follower.
                  allOf:
                  - "$ref": "#/components/schemas/_types.ByteSize"
                read_poll_timeout:
                  description: |-
                    The maximum time to wait for new operations on the remote cluster when the follower index is synchronized with the leader index.
                    When the timeout has elapsed, the poll for operations will return to the follower so that it can update some statistics.
                    Then the follower will immediately attempt to read from the leader again.
                  allOf:
                  - "$ref": "#/components/schemas/_types.Duration"
                remote_cluster:
                  description: The remote cluster containing the leader index.
                  type: string
                settings:
                  description: Settings to override from the leader index.
                  allOf:
                  - "$ref": "#/components/schemas/indices._types.IndexSettings"
              required:
              - leader_index
              - remote_cluster
            examples:
              CreateFollowIndexRequestExample1:
                description: Run `PUT /follower_index/_ccr/follow?wait_for_active_shards=1`
                  to create a follower index named `follower_index`.
                value: |-
                  {
                    "remote_cluster" : "remote_cluster",
                    "leader_index" : "leader_index",
                    "settings": {
                      "index.number_of_replicas": 0
                    },
                    "max_read_request_operation_count" : 1024,
                    "max_outstanding_read_requests" : 16,
                    "max_read_request_size" : "1024k",
                    "max_write_request_operation_count" : 32768,
                    "max_write_request_size" : "16k",
                    "max_outstanding_write_requests" : 8,
                    "max_write_buffer_count" : 512,
                    "max_write_buffer_size" : "512k",
                    "max_retry_delay" : "10s",
                    "read_poll_timeout" : "30s"
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  follow_index_created:
                    type: boolean
                  follow_index_shards_acked:
                    type: boolean
                  index_following_started:
                    type: boolean
                required:
                - follow_index_created
                - follow_index_shards_acked
                - index_following_started
              examples:
                CreateFollowIndexResponseExample1:
                  description: A successful response from `PUT /follower_index/_ccr/follow?wait_for_active_shards=1`.
                  value: |-
                    {
                      "follow_index_created" : true,
                      "follow_index_shards_acked" : true,
                      "index_following_started" : true
                    }
      x-state: Generally available; Added in 6.5.0
      x-codeSamples:
      - lang: Console
        source: |-
          PUT /follower_index/_ccr/follow?wait_for_active_shards=1
          {
            "remote_cluster" : "remote_cluster",
            "leader_index" : "leader_index",
            "settings": {
              "index.number_of_replicas": 0
            },
            "max_read_request_operation_count" : 1024,
            "max_outstanding_read_requests" : 16,
            "max_read_request_size" : "1024k",
            "max_write_request_operation_count" : 32768,
            "max_write_request_size" : "16k",
            "max_outstanding_write_requests" : 8,
            "max_write_buffer_count" : 512,
            "max_write_buffer_size" : "512k",
            "max_retry_delay" : "10s",
            "read_poll_timeout" : "30s"
          }
      - lang: Python
        source: |-
          resp = client.ccr.follow(
              index="follower_index",
              wait_for_active_shards="1",
              remote_cluster="remote_cluster",
              leader_index="leader_index",
              settings={
                  "index.number_of_replicas": 0
              },
              max_read_request_operation_count=1024,
              max_outstanding_read_requests=16,
              max_read_request_size="1024k",
              max_write_request_operation_count=32768,
              max_write_request_size="16k",
              max_outstanding_write_requests=8,
              max_write_buffer_count=512,
              max_write_buffer_size="512k",
              max_retry_delay="10s",
              read_poll_timeout="30s",
          )
      - lang: JavaScript
        source: |-
          const response = await client.ccr.follow({
            index: "follower_index",
            wait_for_active_shards: 1,
            remote_cluster: "remote_cluster",
            leader_index: "leader_index",
            settings: {
              "index.number_of_replicas": 0,
            },
            max_read_request_operation_count: 1024,
            max_outstanding_read_requests: 16,
            max_read_request_size: "1024k",
            max_write_request_operation_count: 32768,
            max_write_request_size: "16k",
            max_outstanding_write_requests: 8,
            max_write_buffer_count: 512,
            max_write_buffer_size: "512k",
            max_retry_delay: "10s",
            read_poll_timeout: "30s",
          });
      - lang: Ruby
        source: |-
          response = client.ccr.follow(
            index: "follower_index",
            wait_for_active_shards: "1",
            body: {
              "remote_cluster": "remote_cluster",
              "leader_index": "leader_index",
              "settings": {
                "index.number_of_replicas": 0
              },
              "max_read_request_operation_count": 1024,
              "max_outstanding_read_requests": 16,
              "max_read_request_size": "1024k",
              "max_write_request_operation_count": 32768,
              "max_write_request_size": "16k",
              "max_outstanding_write_requests": 8,
              "max_write_buffer_count": 512,
              "max_write_buffer_size": "512k",
              "max_retry_delay": "10s",
              "read_poll_timeout": "30s"
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->ccr()->follow([
              "index" => "follower_index",
              "wait_for_active_shards" => "1",
              "body" => [
                  "remote_cluster" => "remote_cluster",
                  "leader_index" => "leader_index",
                  "settings" => [
                      "index.number_of_replicas" => 0,
                  ],
                  "max_read_request_operation_count" => 1024,
                  "max_outstanding_read_requests" => 16,
                  "max_read_request_size" => "1024k",
                  "max_write_request_operation_count" => 32768,
                  "max_write_request_size" => "16k",
                  "max_outstanding_write_requests" => 8,
                  "max_write_buffer_count" => 512,
                  "max_write_buffer_size" => "512k",
                  "max_retry_delay" => "10s",
                  "read_poll_timeout" => "30s",
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"remote_cluster":"remote_cluster","leader_index":"leader_index","settings":{"index.number_of_replicas":0},"max_read_request_operation_count":1024,"max_outstanding_read_requests":16,"max_read_request_size":"1024k","max_write_request_operation_count":32768,"max_write_request_size":"16k","max_outstanding_write_requests":8,"max_write_buffer_count":512,"max_write_buffer_size":"512k","max_retry_delay":"10s","read_poll_timeout":"30s"}''
          "$ELASTICSEARCH_URL/follower_index/_ccr/follow?wait_for_active_shards=1"'
      - lang: Java
        source: |
          client.ccr().follow(f -> f
              .index("follower_index")
              .leaderIndex("leader_index")
              .maxOutstandingReadRequests(16L)
              .maxOutstandingWriteRequests(8)
              .maxReadRequestOperationCount(1024)
              .maxReadRequestSize("1024k")
              .maxRetryDelay(m -> m
                  .time("10s")
              )
              .maxWriteBufferCount(512)
              .maxWriteBufferSize("512k")
              .maxWriteRequestOperationCount(32768)
              .maxWriteRequestSize("16k")
              .readPollTimeout(r -> r
                  .time("30s")
              )
              .remoteCluster("remote_cluster")
              .settings(s -> s
                  .otherSettings("index.number_of_replicas", JsonData.fromJson("0"))
              )
              .waitForActiveShards(w -> w
                  .count(1)
              )
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/{index}/_ccr/info":
    get:
      tags:
      - ccr
      summary: Get follower information
      description: |
        Get information about all cross-cluster replication follower indices.
        For example, the results include follower index names, leader index names, replication options, and whether the follower indices are active or paused.

        ## Required authorization

        * Cluster privileges: `monitor`
      externalDocs:
        url: https://www.elastic.co/docs/deploy-manage/tools/cross-cluster-replication
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/ccr-get-follow-info.html
      operationId: ccr-follow-info
      parameters:
      - in: path
        name: index
        description: A comma-delimited list of follower index patterns.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Indices"
        style: simple
      - in: query
        name: master_timeout
        description: |-
          The period to wait for a connection to the master node.
          If the master node is not available before the timeout expires, the request fails and returns an error.
          It can also be set to `-1` to indicate that the request should never timeout.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  follower_indices:
                    type: array
                    items:
                      "$ref": "#/components/schemas/ccr.follow_info.FollowerIndex"
                required:
                - follower_indices
              examples:
                FollowInfoResponseExample1:
                  summary: An active follower index
                  description: A successful response from `GET /follower_index/_ccr/info`
                    when the follower index is active.
                  value: |-
                    {
                      "follower_indices": [
                        {
                          "follower_index": "follower_index",
                          "remote_cluster": "remote_cluster",
                          "leader_index": "leader_index",
                          "status": "active",
                          "parameters": {
                            "max_read_request_operation_count": 5120,
                            "max_read_request_size": "32mb",
                            "max_outstanding_read_requests": 12,
                            "max_write_request_operation_count": 5120,
                            "max_write_request_size": "9223372036854775807b",
                            "max_outstanding_write_requests": 9,
                            "max_write_buffer_count": 2147483647,
                            "max_write_buffer_size": "512mb",
                            "max_retry_delay": "500ms",
                            "read_poll_timeout": "1m"
                          }
                        }
                      ]
                    }
                FollowInfoResponseExample2:
                  summary: A paused follower index
                  description: A successful response from `GET /follower_index/_ccr/info`
                    when the follower index is paused.
                  value: |-
                    {
                      "follower_indices": [
                        {
                          "follower_index": "follower_index",
                          "remote_cluster": "remote_cluster",
                          "leader_index": "leader_index",
                          "status": "paused"
                        }
                      ]
                    }
      x-state: Generally available; Added in 6.7.0
      x-codeSamples:
      - lang: Console
        source: 'GET /follower_index/_ccr/info

          '
      - lang: Python
        source: |-
          resp = client.ccr.follow_info(
              index="follower_index",
          )
      - lang: JavaScript
        source: |-
          const response = await client.ccr.followInfo({
            index: "follower_index",
          });
      - lang: Ruby
        source: |-
          response = client.ccr.follow_info(
            index: "follower_index"
          )
      - lang: PHP
        source: |-
          $resp = $client->ccr()->followInfo([
              "index" => "follower_index",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/follower_index/_ccr/info"'
      - lang: Java
        source: |
          client.ccr().followInfo(f -> f
              .index("follower_index")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/{index}/_ccr/stats":
    get:
      tags:
      - ccr
      summary: Get follower stats
      description: |
        Get cross-cluster replication follower stats.
        The API returns shard-level stats about the "following tasks" associated with each shard for the specified indices.

        ## Required authorization

        * Cluster privileges: `monitor`
      externalDocs:
        url: https://www.elastic.co/docs/deploy-manage/tools/cross-cluster-replication
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/ccr-get-follow-stats.html
      operationId: ccr-follow-stats
      parameters:
      - in: path
        name: index
        description: A comma-delimited list of index patterns.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Indices"
        style: simple
      - in: query
        name: timeout
        description: |-
          The period to wait for a response.
          If no response is received before the timeout expires, the request fails and returns an error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  indices:
                    description: An array of follower index statistics.
                    type: array
                    items:
                      "$ref": "#/components/schemas/ccr._types.FollowIndexStats"
                required:
                - indices
              examples:
                FollowIndexStatsResponseExample1:
                  description: A successful response from `GET /follower_index/_ccr/stats`,
                    which retrieves follower stats.
                  value: |-
                    {
                      "indices" : [
                        {
                          "index" : "follower_index",
                          "total_global_checkpoint_lag" : 256,
                          "shards" : [
                            {
                              "remote_cluster" : "remote_cluster",
                              "leader_index" : "leader_index",
                              "follower_index" : "follower_index",
                              "shard_id" : 0,
                              "leader_global_checkpoint" : 1024,
                              "leader_max_seq_no" : 1536,
                              "follower_global_checkpoint" : 768,
                              "follower_max_seq_no" : 896,
                              "last_requested_seq_no" : 897,
                              "outstanding_read_requests" : 8,
                              "outstanding_write_requests" : 2,
                              "write_buffer_operation_count" : 64,
                              "follower_mapping_version" : 4,
                              "follower_settings_version" : 2,
                              "follower_aliases_version" : 8,
                              "total_read_time_millis" : 32768,
                              "total_read_remote_exec_time_millis" : 16384,
                              "successful_read_requests" : 32,
                              "failed_read_requests" : 0,
                              "operations_read" : 896,
                              "bytes_read" : 32768,
                              "total_write_time_millis" : 16384,
                              "write_buffer_size_in_bytes" : 1536,
                              "successful_write_requests" : 16,
                              "failed_write_requests" : 0,
                              "operations_written" : 832,
                              "read_exceptions" : [ ],
                              "time_since_last_read_millis" : 8
                            }
                          ]
                        }
                      ]
                    }
      x-state: Generally available; Added in 6.5.0
      x-codeSamples:
      - lang: Console
        source: 'GET /follower_index/_ccr/stats

          '
      - lang: Python
        source: |-
          resp = client.ccr.follow_stats(
              index="follower_index",
          )
      - lang: JavaScript
        source: |-
          const response = await client.ccr.followStats({
            index: "follower_index",
          });
      - lang: Ruby
        source: |-
          response = client.ccr.follow_stats(
            index: "follower_index"
          )
      - lang: PHP
        source: |-
          $resp = $client->ccr()->followStats([
              "index" => "follower_index",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/follower_index/_ccr/stats"'
      - lang: Java
        source: |
          client.ccr().followStats(f -> f
              .index("follower_index")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/{index}/_ccr/forget_follower":
    post:
      tags:
      - ccr
      summary: Forget a follower
      description: |-
        Remove the cross-cluster replication follower retention leases from the leader.

        A following index takes out retention leases on its leader index.
        These leases are used to increase the likelihood that the shards of the leader index retain the history of operations that the shards of the following index need to run replication.
        When a follower index is converted to a regular index by the unfollow API (either by directly calling the API or by index lifecycle management tasks), these leases are removed.
        However, removal of the leases can fail, for example when the remote cluster containing the leader index is unavailable.
        While the leases will eventually expire on their own, their extended existence can cause the leader index to hold more history than necessary and prevent index lifecycle management from performing some operations on the leader index.
        This API exists to enable manually removing the leases when the unfollow API is unable to do so.

        NOTE: This API does not stop replication by a following index. If you use this API with a follower index that is still actively following, the following index will add back retention leases on the leader.
        The only purpose of this API is to handle the case of failure to remove the following retention leases after the unfollow API is invoked.
      externalDocs:
        url: https://www.elastic.co/docs/deploy-manage/tools/cross-cluster-replication
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/ccr-post-forget-follower.html
      operationId: ccr-forget-follower
      parameters:
      - in: path
        name: index
        description: Name of the leader index for which specified follower retention
          leases should be removed
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.IndexName"
        style: simple
      - in: query
        name: timeout
        description: Period to wait for a response. If no response is received before
          the timeout expires, the request fails and returns an error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                follower_cluster:
                  type: string
                follower_index:
                  allOf:
                  - "$ref": "#/components/schemas/_types.IndexName"
                follower_index_uuid:
                  allOf:
                  - "$ref": "#/components/schemas/_types.Uuid"
                leader_remote_cluster:
                  type: string
            examples:
              ForgetFollowerIndexRequestExample1:
                description: Run `POST /<leader_index>/_ccr/forget_follower`.
                value: |-
                  {
                    "follower_cluster" : "<follower_cluster>",
                    "follower_index" : "<follower_index>",
                    "follower_index_uuid" : "<follower_index_uuid>",
                    "leader_remote_cluster" : "<leader_remote_cluster>"
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  _shards:
                    allOf:
                    - "$ref": "#/components/schemas/_types.ShardStatistics"
                required:
                - _shards
              examples:
                ForgetFollowerIndexResponseExample1:
                  description: 'A successful response for removing the follower retention
                    leases from the leader index.

                    '
                  value: |-
                    {
                      "_shards" : {
                        "total" : 1,
                        "successful" : 1,
                        "failed" : 0,
                        "failures" : [ ]
                      }
                    }
      x-state: Generally available; Added in 6.7.0
      x-codeSamples:
      - lang: Console
        source: |-
          POST /<leader_index>/_ccr/forget_follower
          {
            "follower_cluster" : "<follower_cluster>",
            "follower_index" : "<follower_index>",
            "follower_index_uuid" : "<follower_index_uuid>",
            "leader_remote_cluster" : "<leader_remote_cluster>"
          }
      - lang: Python
        source: |-
          resp = client.ccr.forget_follower(
              index="<leader_index>",
              follower_cluster="<follower_cluster>",
              follower_index="<follower_index>",
              follower_index_uuid="<follower_index_uuid>",
              leader_remote_cluster="<leader_remote_cluster>",
          )
      - lang: JavaScript
        source: |-
          const response = await client.ccr.forgetFollower({
            index: "<leader_index>",
            follower_cluster: "<follower_cluster>",
            follower_index: "<follower_index>",
            follower_index_uuid: "<follower_index_uuid>",
            leader_remote_cluster: "<leader_remote_cluster>",
          });
      - lang: Ruby
        source: |-
          response = client.ccr.forget_follower(
            index: "<leader_index>",
            body: {
              "follower_cluster": "<follower_cluster>",
              "follower_index": "<follower_index>",
              "follower_index_uuid": "<follower_index_uuid>",
              "leader_remote_cluster": "<leader_remote_cluster>"
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->ccr()->forgetFollower([
              "index" => "<leader_index>",
              "body" => [
                  "follower_cluster" => "<follower_cluster>",
                  "follower_index" => "<follower_index>",
                  "follower_index_uuid" => "<follower_index_uuid>",
                  "leader_remote_cluster" => "<leader_remote_cluster>",
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"follower_cluster":"<follower_cluster>","follower_index":"<follower_index>","follower_index_uuid":"<follower_index_uuid>","leader_remote_cluster":"<leader_remote_cluster>"}''
          "$ELASTICSEARCH_URL/<leader_index>/_ccr/forget_follower"'
      - lang: Java
        source: |
          client.ccr().forgetFollower(f -> f
              .followerCluster("<follower_cluster>")
              .followerIndex("<follower_index>")
              .followerIndexUuid("<follower_index_uuid>")
              .index("<leader_index>")
              .leaderRemoteCluster("<leader_remote_cluster>")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_ccr/auto_follow/{name}/pause":
    post:
      tags:
      - ccr
      summary: Pause an auto-follow pattern
      description: |
        Pause a cross-cluster replication auto-follow pattern.
        When the API returns, the auto-follow pattern is inactive.
        New indices that are created on the remote cluster and match the auto-follow patterns are ignored.

        You can resume auto-following with the resume auto-follow pattern API.
        When it resumes, the auto-follow pattern is active again and automatically configures follower indices for newly created indices on the remote cluster that match its patterns.
        Remote indices that were created while the pattern was paused will also be followed, unless they have been deleted or closed in the interim.

        ## Required authorization

        * Cluster privileges: `manage_ccr`
      externalDocs:
        url: https://www.elastic.co/docs/deploy-manage/tools/cross-cluster-replication/manage-auto-follow-patterns
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/ccr-pause-auto-follow-pattern.html
      operationId: ccr-pause-auto-follow-pattern
      parameters:
      - in: path
        name: name
        description: The name of the auto-follow pattern to pause.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Name"
        style: simple
      - in: query
        name: master_timeout
        description: |-
          The period to wait for a connection to the master node.
          If the master node is not available before the timeout expires, the request fails and returns an error.
          It can also be set to `-1` to indicate that the request should never timeout.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
              examples:
                PauseAutoFollowPatternResponseExample1:
                  description: A successful response from `POST /_ccr/auto_follow/my_auto_follow_pattern/pause`,
                    which pauses an auto-follow pattern.
                  value: |-
                    {
                      "acknowledged" : true
                    }
      x-state: Generally available; Added in 7.5.0
      x-codeSamples:
      - lang: Console
        source: 'POST /_ccr/auto_follow/my_auto_follow_pattern/pause

          '
      - lang: Python
        source: |-
          resp = client.ccr.pause_auto_follow_pattern(
              name="my_auto_follow_pattern",
          )
      - lang: JavaScript
        source: |-
          const response = await client.ccr.pauseAutoFollowPattern({
            name: "my_auto_follow_pattern",
          });
      - lang: Ruby
        source: |-
          response = client.ccr.pause_auto_follow_pattern(
            name: "my_auto_follow_pattern"
          )
      - lang: PHP
        source: |-
          $resp = $client->ccr()->pauseAutoFollowPattern([
              "name" => "my_auto_follow_pattern",
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_ccr/auto_follow/my_auto_follow_pattern/pause"'
      - lang: Java
        source: |
          client.ccr().pauseAutoFollowPattern(p -> p
              .name("my_auto_follow_pattern")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/{index}/_ccr/pause_follow":
    post:
      tags:
      - ccr
      summary: Pause a follower
      description: |
        Pause a cross-cluster replication follower index.
        The follower index will not fetch any additional operations from the leader index.
        You can resume following with the resume follower API.
        You can pause and resume a follower index to change the configuration of the following task.

        ## Required authorization

        * Cluster privileges: `manage_ccr`
      operationId: ccr-pause-follow
      parameters:
      - in: path
        name: index
        description: The name of the follower index.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.IndexName"
        style: simple
      - in: query
        name: master_timeout
        description: |-
          The period to wait for a connection to the master node.
          If the master node is not available before the timeout expires, the request fails and returns an error.
          It can also be set to `-1` to indicate that the request should never timeout.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
              examples:
                PauseFollowIndexResponseExample1:
                  description: A successful response from `POST /follower_index/_ccr/pause_follow`,
                    which pauses a follower index.
                  value: |-
                    {
                      "acknowledged" : true
                    }
      x-state: Generally available; Added in 6.5.0
      x-codeSamples:
      - lang: Console
        source: 'POST /follower_index/_ccr/pause_follow

          '
      - lang: Python
        source: |-
          resp = client.ccr.pause_follow(
              index="follower_index",
          )
      - lang: JavaScript
        source: |-
          const response = await client.ccr.pauseFollow({
            index: "follower_index",
          });
      - lang: Ruby
        source: |-
          response = client.ccr.pause_follow(
            index: "follower_index"
          )
      - lang: PHP
        source: |-
          $resp = $client->ccr()->pauseFollow([
              "index" => "follower_index",
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/follower_index/_ccr/pause_follow"'
      - lang: Java
        source: |
          client.ccr().pauseFollow(p -> p
              .index("follower_index")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_ccr/auto_follow/{name}/resume":
    post:
      tags:
      - ccr
      summary: Resume an auto-follow pattern
      description: |
        Resume a cross-cluster replication auto-follow pattern that was paused.
        The auto-follow pattern will resume configuring following indices for newly created indices that match its patterns on the remote cluster.
        Remote indices created while the pattern was paused will also be followed unless they have been deleted or closed in the interim.

        ## Required authorization

        * Cluster privileges: `manage_ccr`
      externalDocs:
        url: https://www.elastic.co/docs/deploy-manage/tools/cross-cluster-replication/manage-auto-follow-patterns
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/ccr-resume-auto-follow-pattern.html
      operationId: ccr-resume-auto-follow-pattern
      parameters:
      - in: path
        name: name
        description: The name of the auto-follow pattern to resume.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Name"
        style: simple
      - in: query
        name: master_timeout
        description: |-
          The period to wait for a connection to the master node.
          If the master node is not available before the timeout expires, the request fails and returns an error.
          It can also be set to `-1` to indicate that the request should never timeout.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
              examples:
                ResumeAutoFollowPatternResponseExample1:
                  description: 'A successful response `POST /_ccr/auto_follow/my_auto_follow_pattern/resume`,
                    which resumes an auto-follow pattern.

                    '
                  value: |-
                    {
                      "acknowledged" : true
                    }
      x-state: Generally available; Added in 7.5.0
      x-codeSamples:
      - lang: Console
        source: 'POST /_ccr/auto_follow/my_auto_follow_pattern/resume

          '
      - lang: Python
        source: |-
          resp = client.ccr.resume_auto_follow_pattern(
              name="my_auto_follow_pattern",
          )
      - lang: JavaScript
        source: |-
          const response = await client.ccr.resumeAutoFollowPattern({
            name: "my_auto_follow_pattern",
          });
      - lang: Ruby
        source: |-
          response = client.ccr.resume_auto_follow_pattern(
            name: "my_auto_follow_pattern"
          )
      - lang: PHP
        source: |-
          $resp = $client->ccr()->resumeAutoFollowPattern([
              "name" => "my_auto_follow_pattern",
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_ccr/auto_follow/my_auto_follow_pattern/resume"'
      - lang: Java
        source: |
          client.ccr().resumeAutoFollowPattern(r -> r
              .name("my_auto_follow_pattern")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/{index}/_ccr/resume_follow":
    post:
      tags:
      - ccr
      summary: Resume a follower
      description: |-
        Resume a cross-cluster replication follower index that was paused.
        The follower index could have been paused with the pause follower API.
        Alternatively it could be paused due to replication that cannot be retried due to failures during following tasks.
        When this API returns, the follower index will resume fetching operations from the leader index.
      externalDocs:
        url: https://www.elastic.co/docs/deploy-manage/tools/cross-cluster-replication
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/ccr-post-resume-follow.html
      operationId: ccr-resume-follow
      parameters:
      - in: path
        name: index
        description: Name of the follow index to resume following
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.IndexName"
        style: simple
      - in: query
        name: master_timeout
        description: Period to wait for a connection to the master node.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                max_outstanding_read_requests:
                  type: number
                max_outstanding_write_requests:
                  type: number
                max_read_request_operation_count:
                  type: number
                max_read_request_size:
                  type: string
                max_retry_delay:
                  allOf:
                  - "$ref": "#/components/schemas/_types.Duration"
                max_write_buffer_count:
                  type: number
                max_write_buffer_size:
                  type: string
                max_write_request_operation_count:
                  type: number
                max_write_request_size:
                  type: string
                read_poll_timeout:
                  allOf:
                  - "$ref": "#/components/schemas/_types.Duration"
            examples:
              ResumeFollowIndexRequestExample1:
                description: Run `POST /follower_index/_ccr/resume_follow` to resume
                  the follower index.
                value: |-
                  {
                    "max_read_request_operation_count" : 1024,
                    "max_outstanding_read_requests" : 16,
                    "max_read_request_size" : "1024k",
                    "max_write_request_operation_count" : 32768,
                    "max_write_request_size" : "16k",
                    "max_outstanding_write_requests" : 8,
                    "max_write_buffer_count" : 512,
                    "max_write_buffer_size" : "512k",
                    "max_retry_delay" : "10s",
                    "read_poll_timeout" : "30s"
                  }
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
              examples:
                ResumeFollowIndexResponseExample1:
                  description: A successful response from resuming a folower index.
                  value: |-
                    {
                      "acknowledged" : true
                    }
      x-state: Generally available; Added in 6.5.0
      x-codeSamples:
      - lang: Console
        source: |-
          POST /follower_index/_ccr/resume_follow
          {
            "max_read_request_operation_count" : 1024,
            "max_outstanding_read_requests" : 16,
            "max_read_request_size" : "1024k",
            "max_write_request_operation_count" : 32768,
            "max_write_request_size" : "16k",
            "max_outstanding_write_requests" : 8,
            "max_write_buffer_count" : 512,
            "max_write_buffer_size" : "512k",
            "max_retry_delay" : "10s",
            "read_poll_timeout" : "30s"
          }
      - lang: Python
        source: |-
          resp = client.ccr.resume_follow(
              index="follower_index",
              max_read_request_operation_count=1024,
              max_outstanding_read_requests=16,
              max_read_request_size="1024k",
              max_write_request_operation_count=32768,
              max_write_request_size="16k",
              max_outstanding_write_requests=8,
              max_write_buffer_count=512,
              max_write_buffer_size="512k",
              max_retry_delay="10s",
              read_poll_timeout="30s",
          )
      - lang: JavaScript
        source: |-
          const response = await client.ccr.resumeFollow({
            index: "follower_index",
            max_read_request_operation_count: 1024,
            max_outstanding_read_requests: 16,
            max_read_request_size: "1024k",
            max_write_request_operation_count: 32768,
            max_write_request_size: "16k",
            max_outstanding_write_requests: 8,
            max_write_buffer_count: 512,
            max_write_buffer_size: "512k",
            max_retry_delay: "10s",
            read_poll_timeout: "30s",
          });
      - lang: Ruby
        source: |-
          response = client.ccr.resume_follow(
            index: "follower_index",
            body: {
              "max_read_request_operation_count": 1024,
              "max_outstanding_read_requests": 16,
              "max_read_request_size": "1024k",
              "max_write_request_operation_count": 32768,
              "max_write_request_size": "16k",
              "max_outstanding_write_requests": 8,
              "max_write_buffer_count": 512,
              "max_write_buffer_size": "512k",
              "max_retry_delay": "10s",
              "read_poll_timeout": "30s"
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->ccr()->resumeFollow([
              "index" => "follower_index",
              "body" => [
                  "max_read_request_operation_count" => 1024,
                  "max_outstanding_read_requests" => 16,
                  "max_read_request_size" => "1024k",
                  "max_write_request_operation_count" => 32768,
                  "max_write_request_size" => "16k",
                  "max_outstanding_write_requests" => 8,
                  "max_write_buffer_count" => 512,
                  "max_write_buffer_size" => "512k",
                  "max_retry_delay" => "10s",
                  "read_poll_timeout" => "30s",
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"max_read_request_operation_count":1024,"max_outstanding_read_requests":16,"max_read_request_size":"1024k","max_write_request_operation_count":32768,"max_write_request_size":"16k","max_outstanding_write_requests":8,"max_write_buffer_count":512,"max_write_buffer_size":"512k","max_retry_delay":"10s","read_poll_timeout":"30s"}''
          "$ELASTICSEARCH_URL/follower_index/_ccr/resume_follow"'
      - lang: Java
        source: |
          client.ccr().resumeFollow(r -> r
              .index("follower_index")
              .maxOutstandingReadRequests(16L)
              .maxOutstandingWriteRequests(8L)
              .maxReadRequestOperationCount(1024L)
              .maxReadRequestSize("1024k")
              .maxRetryDelay(m -> m
                  .time("10s")
              )
              .maxWriteBufferCount(512L)
              .maxWriteBufferSize("512k")
              .maxWriteRequestOperationCount(32768L)
              .maxWriteRequestSize("16k")
              .readPollTimeout(re -> re
                  .time("30s")
              )
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_ccr/stats":
    get:
      tags:
      - ccr
      summary: Get cross-cluster replication stats
      description: |
        This API returns stats about auto-following and the same shard-level stats as the get follower stats API.

        ## Required authorization

        * Cluster privileges: `monitor`
      operationId: ccr-stats
      parameters:
      - in: query
        name: master_timeout
        description: |-
          The period to wait for a connection to the master node.
          If the master node is not available before the timeout expires, the request fails and returns an error.
          It can also be set to `-1` to indicate that the request should never timeout.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: timeout
        description: The period to wait for a response. If no response is received
          before the timeout expires, the request fails and returns an error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  auto_follow_stats:
                    description: Statistics for the auto-follow coordinator.
                    allOf:
                    - "$ref": "#/components/schemas/ccr.stats.AutoFollowStats"
                  follow_stats:
                    description: Shard-level statistics for follower indices.
                    allOf:
                    - "$ref": "#/components/schemas/ccr.stats.FollowStats"
                required:
                - auto_follow_stats
                - follow_stats
              examples:
                CcrStatsResponseExample1:
                  description: A successful response from `GET /_ccr/stats` that returns
                    cross-cluster replication stats.
                  value: |-
                    {
                      "auto_follow_stats" : {
                        "number_of_failed_follow_indices" : 0,
                        "number_of_failed_remote_cluster_state_requests" : 0,
                        "number_of_successful_follow_indices" : 1,
                        "recent_auto_follow_errors" : [],
                        "auto_followed_clusters" : []
                      },
                      "follow_stats" : {
                        "indices" : [
                          {
                            "index" : "follower_index",
                            "total_global_checkpoint_lag" : 256,
                            "shards" : [
                              {
                                "remote_cluster" : "remote_cluster",
                                "leader_index" : "leader_index",
                                "follower_index" : "follower_index",
                                "shard_id" : 0,
                                "leader_global_checkpoint" : 1024,
                                "leader_max_seq_no" : 1536,
                                "follower_global_checkpoint" : 768,
                                "follower_max_seq_no" : 896,
                                "last_requested_seq_no" : 897,
                                "outstanding_read_requests" : 8,
                                "outstanding_write_requests" : 2,
                                "write_buffer_operation_count" : 64,
                                "follower_mapping_version" : 4,
                                "follower_settings_version" : 2,
                                "follower_aliases_version" : 8,
                                "total_read_time_millis" : 32768,
                                "total_read_remote_exec_time_millis" : 16384,
                                "successful_read_requests" : 32,
                                "failed_read_requests" : 0,
                                "operations_read" : 896,
                                "bytes_read" : 32768,
                                "total_write_time_millis" : 16384,
                                "write_buffer_size_in_bytes" : 1536,
                                "successful_write_requests" : 16,
                                "failed_write_requests" : 0,
                                "operations_written" : 832,
                                "read_exceptions" : [ ],
                                "time_since_last_read_millis" : 8
                              }
                            ]
                          }
                        ]
                      }
                    }
      x-state: Generally available; Added in 6.5.0
      x-codeSamples:
      - lang: Console
        source: 'GET /_ccr/stats

          '
      - lang: Python
        source: resp = client.ccr.stats()
      - lang: JavaScript
        source: const response = await client.ccr.stats();
      - lang: Ruby
        source: response = client.ccr.stats
      - lang: PHP
        source: "$resp = $client->ccr()->stats();"
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_ccr/stats"'
      - lang: Java
        source: 'client.ccr().stats(s -> s);

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/{index}/_ccr/unfollow":
    post:
      tags:
      - ccr
      summary: Unfollow an index
      description: |
        Convert a cross-cluster replication follower index to a regular index.
        The API stops the following task associated with a follower index and removes index metadata and settings associated with cross-cluster replication.
        The follower index must be paused and closed before you call the unfollow API.

        > info
        > Currently cross-cluster replication does not support converting an existing regular index to a follower index. Converting a follower index to a regular index is an irreversible operation.

        ## Required authorization

        * Index privileges: `manage_follow_index`
      externalDocs:
        url: https://www.elastic.co/docs/deploy-manage/tools/cross-cluster-replication
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/ccr-post-unfollow.html
      operationId: ccr-unfollow
      parameters:
      - in: path
        name: index
        description: The name of the follower index.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.IndexName"
        style: simple
      - in: query
        name: master_timeout
        description: |-
          The period to wait for a connection to the master node.
          If the master node is not available before the timeout expires, the request fails and returns an error.
          It can also be set to `-1` to indicate that the request should never timeout.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
              examples:
                UnfollowIndexResponseExample1:
                  description: A successful response from `POST /follower_index/_ccr/unfollow`.
                  value: |-
                    {
                      "acknowledged" : true
                    }
      x-state: Generally available; Added in 6.5.0
      x-codeSamples:
      - lang: Console
        source: 'POST /follower_index/_ccr/unfollow

          '
      - lang: Python
        source: |-
          resp = client.ccr.unfollow(
              index="follower_index",
          )
      - lang: JavaScript
        source: |-
          const response = await client.ccr.unfollow({
            index: "follower_index",
          });
      - lang: Ruby
        source: |-
          response = client.ccr.unfollow(
            index: "follower_index"
          )
      - lang: PHP
        source: |-
          $resp = $client->ccr()->unfollow([
              "index" => "follower_index",
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/follower_index/_ccr/unfollow"'
      - lang: Java
        source: |
          client.ccr().unfollow(u -> u
              .index("follower_index")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_search/scroll/{scroll_id}":
    post:
      tags:
      - search
      summary: 'Run a scrolling search

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_search/scroll</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_search/scroll</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_search/scroll/{scroll_id}</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_search/scroll/{scroll_id}</span>\n
        \                     </div>\n                    \n\nIMPORTANT: The scroll
        API is no longer recommend for deep pagination. If you need to preserve the
        index state while paging through more than 10,000 hits, use the `search_after`
        parameter with a point in time (PIT).\n\nThe scroll API gets large sets of
        results from a single scrolling search request.\nTo get the necessary scroll
        ID, submit a search API request that includes an argument for the `scroll`
        query parameter.\nThe `scroll` parameter indicates how long Elasticsearch
        should retain the search context for the request.\nThe search response returns
        a scroll ID in the `_scroll_id` response body parameter.\nYou can then use
        the scroll ID with the scroll API to retrieve the next batch of results for
        the request.\nIf the Elasticsearch security features are enabled, the access
        to the results of a specific scroll ID is restricted to the user or API key
        that submitted the search.\n\nYou can also use the scroll API to specify a
        new scroll parameter that extends or shortens the retention period for the
        search context.\n\nIMPORTANT: Results from a scrolling search reflect the
        state of the index at the time of the initial search request. Subsequent indexing
        or document changes only affect later search and scroll requests.\n\n## Required
        authorization\n\n* Index privileges: `read`\n"
      externalDocs:
        url: https://www.elastic.co/docs/reference/elasticsearch/rest-apis/paginate-search-results#scroll-search-results
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/scroll-api.html
      operationId: scroll
      parameters:
      - "$ref": "#/components/parameters/scroll-scroll_id"
      - "$ref": "#/components/parameters/scroll-scroll"
      - "$ref": "#/components/parameters/scroll-scroll_id_"
      - "$ref": "#/components/parameters/scroll-rest_total_hits_as_int"
      requestBody:
        "$ref": "#/components/requestBodies/scroll"
      responses:
        '200':
          "$ref": "#/components/responses/scroll-200"
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: |-
          GET /_search/scroll
          {
            "scroll_id" : "DXF1ZXJ5QW5kRmV0Y2gBAAAAAAAAAD4WYm9laVYtZndUQlNsdDcwakFMNjU1QQ=="
          }
      - lang: Python
        source: |-
          resp = client.scroll(
              scroll_id="DXF1ZXJ5QW5kRmV0Y2gBAAAAAAAAAD4WYm9laVYtZndUQlNsdDcwakFMNjU1QQ==",
          )
      - lang: JavaScript
        source: |-
          const response = await client.scroll({
            scroll_id: "DXF1ZXJ5QW5kRmV0Y2gBAAAAAAAAAD4WYm9laVYtZndUQlNsdDcwakFMNjU1QQ==",
          });
      - lang: Ruby
        source: |-
          response = client.scroll(
            body: {
              "scroll_id": "DXF1ZXJ5QW5kRmV0Y2gBAAAAAAAAAD4WYm9laVYtZndUQlNsdDcwakFMNjU1QQ=="
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->scroll([
              "body" => [
                  "scroll_id" => "DXF1ZXJ5QW5kRmV0Y2gBAAAAAAAAAD4WYm9laVYtZndUQlNsdDcwakFMNjU1QQ==",
              ],
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"scroll_id":"DXF1ZXJ5QW5kRmV0Y2gBAAAAAAAAAD4WYm9laVYtZndUQlNsdDcwakFMNjU1QQ=="}''
          "$ELASTICSEARCH_URL/_search/scroll"'
      - lang: Java
        source: |
          client.scroll(s -> s
              .scrollId("DXF1ZXJ5QW5kRmV0Y2gBAAAAAAAAAD4WYm9laVYtZndUQlNsdDcwakFMNjU1QQ==")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    delete:
      tags:
      - search
      summary: 'Clear a scrolling search

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb delete\">DELETE</span>\n                      <span
        class=\"operation-path\">/_search/scroll</span>\n                      </div>\n
        \                   <div>\n                      <span class=\"operation-verb
        delete\">DELETE</span>\n                      <span class=\"operation-path\">/_search/scroll/{scroll_id}</span>\n
        \                     </div>\n                    \n\nClear the search context
        and results for a scrolling search."
      externalDocs:
        url: https://www.elastic.co/docs/reference/elasticsearch/rest-apis/paginate-search-results#scroll-search-results
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/clear-scroll-api.html
      operationId: clear-scroll
      parameters:
      - "$ref": "#/components/parameters/clear_scroll-scroll_id"
      requestBody:
        "$ref": "#/components/requestBodies/clear_scroll"
      responses:
        '200':
          "$ref": "#/components/responses/clear_scroll-200"
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: |-
          DELETE /_search/scroll
          {
            "scroll_id": "DXF1ZXJ5QW5kRmV0Y2gBAAAAAAAAAD4WYm9laVYtZndUQlNsdDcwakFMNjU1QQ=="
          }
      - lang: Python
        source: |-
          resp = client.clear_scroll(
              scroll_id="DXF1ZXJ5QW5kRmV0Y2gBAAAAAAAAAD4WYm9laVYtZndUQlNsdDcwakFMNjU1QQ==",
          )
      - lang: JavaScript
        source: |-
          const response = await client.clearScroll({
            scroll_id: "DXF1ZXJ5QW5kRmV0Y2gBAAAAAAAAAD4WYm9laVYtZndUQlNsdDcwakFMNjU1QQ==",
          });
      - lang: Ruby
        source: |-
          response = client.clear_scroll(
            body: {
              "scroll_id": "DXF1ZXJ5QW5kRmV0Y2gBAAAAAAAAAD4WYm9laVYtZndUQlNsdDcwakFMNjU1QQ=="
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->clearScroll([
              "body" => [
                  "scroll_id" => "DXF1ZXJ5QW5kRmV0Y2gBAAAAAAAAAD4WYm9laVYtZndUQlNsdDcwakFMNjU1QQ==",
              ],
          ]);
      - lang: curl
        source: 'curl -X DELETE -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"scroll_id":"DXF1ZXJ5QW5kRmV0Y2gBAAAAAAAAAD4WYm9laVYtZndUQlNsdDcwakFMNjU1QQ=="}''
          "$ELASTICSEARCH_URL/_search/scroll"'
      - lang: Java
        source: |
          client.clearScroll(c -> c
              .scrollId("DXF1ZXJ5QW5kRmV0Y2gBAAAAAAAAAD4WYm9laVYtZndUQlNsdDcwakFMNjU1QQ==")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_pit":
    delete:
      tags:
      - search
      summary: Close a point in time
      description: |-
        A point in time must be opened explicitly before being used in search requests.
        The `keep_alive` parameter tells Elasticsearch how long it should persist.
        A point in time is automatically closed when the `keep_alive` period has elapsed.
        However, keeping points in time has a cost; close them as soon as they are no longer required for search requests.
      operationId: close-point-in-time
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  description: The ID of the point-in-time.
                  allOf:
                  - "$ref": "#/components/schemas/_types.Id"
              required:
              - id
            examples:
              ClosePointInTimeRequestExample1:
                description: Run `DELETE /_pit` to close a point-in-time.
                value: |-
                  {
                    "id": "46ToAwMDaWR5BXV1aWQyKwZub2RlXzMAAAAAAAAAACoBYwADaWR4BXV1aWQxAgZub2RlXzEAAAAAAAAAAAEBYQADaWR5BXV1aWQyKgZub2RlXzIAAAAAAAAAAAwBYgACBXV1aWQyAAAFdXVpZDEAAQltYXRjaF9hbGw_gAAAAA=="
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  succeeded:
                    description: If `true`, all search contexts associated with the
                      point-in-time ID were successfully closed.
                    type: boolean
                  num_freed:
                    description: The number of search contexts that were successfully
                      closed.
                    type: number
                required:
                - succeeded
                - num_freed
              examples:
                ClosePointInTimeResponseExample1:
                  description: A successful response from `DELETE /_pit`.
                  value: "{\n  \"succeeded\": true, \n  \"num_freed\": 3     \n}"
      x-state: Generally available; Added in 7.10.0
      x-codeSamples:
      - lang: Console
        source: |-
          DELETE /_pit
          {
            "id": "46ToAwMDaWR5BXV1aWQyKwZub2RlXzMAAAAAAAAAACoBYwADaWR4BXV1aWQxAgZub2RlXzEAAAAAAAAAAAEBYQADaWR5BXV1aWQyKgZub2RlXzIAAAAAAAAAAAwBYgACBXV1aWQyAAAFdXVpZDEAAQltYXRjaF9hbGw_gAAAAA=="
          }
      - lang: Python
        source: |-
          resp = client.close_point_in_time(
              id="46ToAwMDaWR5BXV1aWQyKwZub2RlXzMAAAAAAAAAACoBYwADaWR4BXV1aWQxAgZub2RlXzEAAAAAAAAAAAEBYQADaWR5BXV1aWQyKgZub2RlXzIAAAAAAAAAAAwBYgACBXV1aWQyAAAFdXVpZDEAAQltYXRjaF9hbGw_gAAAAA==",
          )
      - lang: JavaScript
        source: |-
          const response = await client.closePointInTime({
            id: "46ToAwMDaWR5BXV1aWQyKwZub2RlXzMAAAAAAAAAACoBYwADaWR4BXV1aWQxAgZub2RlXzEAAAAAAAAAAAEBYQADaWR5BXV1aWQyKgZub2RlXzIAAAAAAAAAAAwBYgACBXV1aWQyAAAFdXVpZDEAAQltYXRjaF9hbGw_gAAAAA==",
          });
      - lang: Ruby
        source: |-
          response = client.close_point_in_time(
            body: {
              "id": "46ToAwMDaWR5BXV1aWQyKwZub2RlXzMAAAAAAAAAACoBYwADaWR4BXV1aWQxAgZub2RlXzEAAAAAAAAAAAEBYQADaWR5BXV1aWQyKgZub2RlXzIAAAAAAAAAAAwBYgACBXV1aWQyAAAFdXVpZDEAAQltYXRjaF9hbGw_gAAAAA=="
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->closePointInTime([
              "body" => [
                  "id" => "46ToAwMDaWR5BXV1aWQyKwZub2RlXzMAAAAAAAAAACoBYwADaWR4BXV1aWQxAgZub2RlXzEAAAAAAAAAAAEBYQADaWR5BXV1aWQyKgZub2RlXzIAAAAAAAAAAAwBYgACBXV1aWQyAAAFdXVpZDEAAQltYXRjaF9hbGw_gAAAAA==",
              ],
          ]);
      - lang: curl
        source: 'curl -X DELETE -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"id":"46ToAwMDaWR5BXV1aWQyKwZub2RlXzMAAAAAAAAAACoBYwADaWR4BXV1aWQxAgZub2RlXzEAAAAAAAAAAAEBYQADaWR5BXV1aWQyKgZub2RlXzIAAAAAAAAAAAwBYgACBXV1aWQyAAAFdXVpZDEAAQltYXRjaF9hbGw_gAAAAA=="}''
          "$ELASTICSEARCH_URL/_pit"'
      - lang: Java
        source: |
          client.closePointInTime(c -> c
              .id("46ToAwMDaWR5BXV1aWQyKwZub2RlXzMAAAAAAAAAACoBYwADaWR4BXV1aWQxAgZub2RlXzEAAAAAAAAAAAEBYQADaWR5BXV1aWQyKgZub2RlXzIAAAAAAAAAAAwBYgACBXV1aWQyAAAFdXVpZDEAAQltYXRjaF9hbGw_gAAAAA==")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_cluster/allocation/explain":
    post:
      tags:
      - cluster
      summary: 'Explain the shard allocations

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_cluster/allocation/explain</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_cluster/allocation/explain</span>\n
        \                     </div>\n                    \n\nGet explanations for
        shard allocations in the cluster.\nThis API accepts the current_node, index,
        primary and shard parameters in the request body or in query parameters, but
        not in both at the same time.\nFor unassigned shards, it provides an explanation
        for why the shard is unassigned.\nFor assigned shards, it provides an explanation
        for why the shard is remaining on its current node and has not moved or rebalanced
        to another node.\nThis API can be very useful when attempting to diagnose
        why a shard is unassigned or why a shard continues to remain on its current
        node when you might expect otherwise.\nRefer to the linked documentation for
        examples of how to troubleshoot allocation issues using this API."
      externalDocs:
        url: https://www.elastic.co/docs/troubleshoot/elasticsearch/cluster-allocation-api-examples
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/cluster-allocation-explain.html
      operationId: cluster-allocation-explain
      parameters:
      - "$ref": "#/components/parameters/cluster.allocation_explain-index"
      - "$ref": "#/components/parameters/cluster.allocation_explain-shard"
      - "$ref": "#/components/parameters/cluster.allocation_explain-primary"
      - "$ref": "#/components/parameters/cluster.allocation_explain-current_node"
      - "$ref": "#/components/parameters/cluster.allocation_explain-include_disk_info"
      - "$ref": "#/components/parameters/cluster.allocation_explain-include_yes_decisions"
      - "$ref": "#/components/parameters/cluster.allocation_explain-master_timeout"
      requestBody:
        "$ref": "#/components/requestBodies/cluster.allocation_explain"
      responses:
        '200':
          "$ref": "#/components/responses/cluster.allocation_explain-200"
      x-state: Generally available; Added in 5.0.0
      x-codeSamples:
      - lang: Console
        source: |-
          GET _cluster/allocation/explain
          {
            "index": "my-index-000001",
            "shard": 0,
            "primary": false,
            "current_node": "my-node"
          }
      - lang: Python
        source: |-
          resp = client.cluster.allocation_explain(
              index="my-index-000001",
              shard=0,
              primary=False,
              current_node="my-node",
          )
      - lang: JavaScript
        source: |-
          const response = await client.cluster.allocationExplain({
            index: "my-index-000001",
            shard: 0,
            primary: false,
            current_node: "my-node",
          });
      - lang: Ruby
        source: |-
          response = client.cluster.allocation_explain(
            body: {
              "index": "my-index-000001",
              "shard": 0,
              "primary": false,
              "current_node": "my-node"
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->cluster()->allocationExplain([
              "body" => [
                  "index" => "my-index-000001",
                  "shard" => 0,
                  "primary" => false,
                  "current_node" => "my-node",
              ],
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"index":"my-index-000001","shard":0,"primary":false,"current_node":"my-node"}''
          "$ELASTICSEARCH_URL/_cluster/allocation/explain"'
      - lang: Java
        source: |
          client.cluster().allocationExplain(a -> a
              .currentNode("my-node")
              .index("my-index-000001")
              .primary(false)
              .shard(0)
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_component_template/{name}":
    get:
      tags:
      - indices
      summary: 'Get component templates

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_component_template</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_component_template/{name}</span>\n
        \                     </div>\n                    \n\nGet information about
        component templates.\n\n## Required authorization\n\n* Cluster privileges:
        `manage_index_templates`\n"
      operationId: cluster-get-component-template
      parameters:
      - "$ref": "#/components/parameters/cluster.get_component_template-name"
      - "$ref": "#/components/parameters/cluster.get_component_template-flat_settings"
      - "$ref": "#/components/parameters/cluster.get_component_template-settings_filter"
      - "$ref": "#/components/parameters/cluster.get_component_template-include_defaults"
      - "$ref": "#/components/parameters/cluster.get_component_template-local"
      - "$ref": "#/components/parameters/cluster.get_component_template-master_timeout"
      responses:
        '200':
          "$ref": "#/components/responses/cluster.get_component_template-200"
      x-state: Generally available; Added in 7.8.0
      x-codeSamples:
      - lang: Console
        source: 'GET /_component_template/template_1

          '
      - lang: Python
        source: |-
          resp = client.cluster.get_component_template(
              name="template_1",
          )
      - lang: JavaScript
        source: |-
          const response = await client.cluster.getComponentTemplate({
            name: "template_1",
          });
      - lang: Ruby
        source: |-
          response = client.cluster.get_component_template(
            name: "template_1"
          )
      - lang: PHP
        source: |-
          $resp = $client->cluster()->getComponentTemplate([
              "name" => "template_1",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_component_template/template_1"'
      - lang: Java
        source: |
          client.cluster().getComponentTemplate(g -> g
              .name("template_1")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    post:
      tags:
      - indices
      summary: 'Create or update a component template

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb put\">PUT</span>\n                      <span class=\"operation-path\">/_component_template/{name}</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_component_template/{name}</span>\n
        \                     </div>\n                    \n\nComponent templates
        are building blocks for constructing index templates that specify index mappings,
        settings, and aliases.\n\nAn index template can be composed of multiple component
        templates.\nTo use a component template, specify it in an index template’s
        `composed_of` list.\nComponent templates are only applied to new data streams
        and indices as part of a matching index template.\n\nSettings and mappings
        specified directly in the index template or the create index request override
        any settings or mappings specified in a component template.\n\nComponent templates
        are only used during index creation.\nFor data streams, this includes data
        stream creation and the creation of a stream’s backing indices.\nChanges to
        component templates do not affect existing indices, including a stream’s backing
        indices.\n\nYou can use C-style `/* *\\/` block comments in component templates.\nYou
        can include comments anywhere in the request body except before the opening
        curly bracket.\n\n**Applying component templates**\n\nYou cannot directly
        apply a component template to a data stream or index.\nTo be applied, a component
        template must be included in an index template's `composed_of` list.\n\n##
        Required authorization\n\n* Cluster privileges: `manage_index_templates`\n"
      operationId: cluster-put-component-template
      parameters:
      - "$ref": "#/components/parameters/cluster.put_component_template-name"
      - "$ref": "#/components/parameters/cluster.put_component_template-create"
      - "$ref": "#/components/parameters/cluster.put_component_template-cause"
      - "$ref": "#/components/parameters/cluster.put_component_template-master_timeout"
      requestBody:
        "$ref": "#/components/requestBodies/cluster.put_component_template"
      responses:
        '200':
          "$ref": "#/components/responses/cluster.put_component_template-200"
      x-state: Generally available; Added in 7.8.0
      x-codeSamples:
      - lang: Console
        source: |-
          PUT _component_template/template_1
          {
            "template": {
              "settings": {
                "number_of_shards": 1
              },
              "mappings": {
                "_source": {
                  "enabled": false
                },
                "properties": {
                  "host_name": {
                    "type": "keyword"
                  },
                  "created_at": {
                    "type": "date",
                    "format": "EEE MMM dd HH:mm:ss Z yyyy"
                  }
                }
              }
            }
          }
      - lang: Python
        source: |-
          resp = client.cluster.put_component_template(
              name="template_1",
              template={
                  "settings": {
                      "number_of_shards": 1
                  },
                  "mappings": {
                      "_source": {
                          "enabled": False
                      },
                      "properties": {
                          "host_name": {
                              "type": "keyword"
                          },
                          "created_at": {
                              "type": "date",
                              "format": "EEE MMM dd HH:mm:ss Z yyyy"
                          }
                      }
                  }
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.cluster.putComponentTemplate({
            name: "template_1",
            template: {
              settings: {
                number_of_shards: 1,
              },
              mappings: {
                _source: {
                  enabled: false,
                },
                properties: {
                  host_name: {
                    type: "keyword",
                  },
                  created_at: {
                    type: "date",
                    format: "EEE MMM dd HH:mm:ss Z yyyy",
                  },
                },
              },
            },
          });
      - lang: Ruby
        source: |-
          response = client.cluster.put_component_template(
            name: "template_1",
            body: {
              "template": {
                "settings": {
                  "number_of_shards": 1
                },
                "mappings": {
                  "_source": {
                    "enabled": false
                  },
                  "properties": {
                    "host_name": {
                      "type": "keyword"
                    },
                    "created_at": {
                      "type": "date",
                      "format": "EEE MMM dd HH:mm:ss Z yyyy"
                    }
                  }
                }
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->cluster()->putComponentTemplate([
              "name" => "template_1",
              "body" => [
                  "template" => [
                      "settings" => [
                          "number_of_shards" => 1,
                      ],
                      "mappings" => [
                          "_source" => [
                              "enabled" => false,
                          ],
                          "properties" => [
                              "host_name" => [
                                  "type" => "keyword",
                              ],
                              "created_at" => [
                                  "type" => "date",
                                  "format" => "EEE MMM dd HH:mm:ss Z yyyy",
                              ],
                          ],
                      ],
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"template":{"settings":{"number_of_shards":1},"mappings":{"_source":{"enabled":false},"properties":{"host_name":{"type":"keyword"},"created_at":{"type":"date","format":"EEE
          MMM dd HH:mm:ss Z yyyy"}}}}}'' "$ELASTICSEARCH_URL/_component_template/template_1"'
      - lang: Java
        source: |
          client.cluster().putComponentTemplate(p -> p
              .name("template_1")
              .template(t -> t
                  .mappings(m -> m
                      .properties(Map.of("created_at", Property.of(pr -> pr
                              .date(d -> d
                                  .format("EEE MMM dd HH:mm:ss Z yyyy")
                              )
                          ),"host_name", Property.of(pro -> pro
                              .keyword(k -> k)
                          )))
                      .source(s -> s
                          .enabled(false)
                      )
                  )
                  .settings(s -> s
                      .numberOfShards("1")
                  )
              )
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    delete:
      tags:
      - indices
      summary: Delete component templates
      description: |
        Component templates are building blocks for constructing index templates that specify index mappings, settings, and aliases.

        ## Required authorization

        * Cluster privileges: `manage_index_templates`
      operationId: cluster-delete-component-template
      parameters:
      - in: path
        name: name
        description: Comma-separated list or wildcard expression of component template
          names used to limit the request.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Names"
        style: simple
      - in: query
        name: master_timeout
        description: |-
          Period to wait for a connection to the master node.
          If no response is received before the timeout expires, the request fails and returns an error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: timeout
        description: |-
          Period to wait for a response.
          If no response is received before the timeout expires, the request fails and returns an error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
      x-state: Generally available; Added in 7.8.0
      x-codeSamples:
      - lang: Console
        source: 'DELETE _component_template/template_1

          '
      - lang: Python
        source: |-
          resp = client.cluster.delete_component_template(
              name="template_1",
          )
      - lang: JavaScript
        source: |-
          const response = await client.cluster.deleteComponentTemplate({
            name: "template_1",
          });
      - lang: Ruby
        source: |-
          response = client.cluster.delete_component_template(
            name: "template_1"
          )
      - lang: PHP
        source: |-
          $resp = $client->cluster()->deleteComponentTemplate([
              "name" => "template_1",
          ]);
      - lang: curl
        source: 'curl -X DELETE -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_component_template/template_1"'
      - lang: Java
        source: |
          client.cluster().deleteComponentTemplate(d -> d
              .name("template_1")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    head:
      tags:
      - indices
      summary: Check component templates
      description: Returns information about whether a particular component template
        exists.
      operationId: cluster-exists-component-template
      parameters:
      - in: path
        name: name
        description: |-
          Comma-separated list of component template names used to limit the request.
          Wildcard (*) expressions are supported.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Names"
        style: simple
      - in: query
        name: master_timeout
        description: |-
          Period to wait for a connection to the master node. If no response is
          received before the timeout expires, the request fails and returns an
          error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: local
        description: |-
          If true, the request retrieves information from the local node only.
          Defaults to false, which means information is retrieved from the master node.
        deprecated: true
        schema:
          type: boolean
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json: {}
      x-state: Generally available; Added in 7.8.0
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_cluster/voting_config_exclusions":
    post:
      tags:
      - cluster
      summary: Update voting configuration exclusions
      description: |-
        Update the cluster voting config exclusions by node IDs or node names.
        By default, if there are more than three master-eligible nodes in the cluster and you remove fewer than half of the master-eligible nodes in the cluster at once, the voting configuration automatically shrinks.
        If you want to shrink the voting configuration to contain fewer than three nodes or to remove half or more of the master-eligible nodes in the cluster at once, use this API to remove departing nodes from the voting configuration manually.
        The API adds an entry for each specified node to the cluster’s voting configuration exclusions list.
        It then waits until the cluster has reconfigured its voting configuration to exclude the specified nodes.

        Clusters should have no voting configuration exclusions in normal operation.
        Once the excluded nodes have stopped, clear the voting configuration exclusions with `DELETE /_cluster/voting_config_exclusions`.
        This API waits for the nodes to be fully removed from the cluster before it returns.
        If your cluster has voting configuration exclusions for nodes that you no longer intend to remove, use `DELETE /_cluster/voting_config_exclusions?wait_for_removal=false` to clear the voting configuration exclusions without waiting for the nodes to leave the cluster.

        A response to `POST /_cluster/voting_config_exclusions` with an HTTP status code of 200 OK guarantees that the node has been removed from the voting configuration and will not be reinstated until the voting configuration exclusions are cleared by calling `DELETE /_cluster/voting_config_exclusions`.
        If the call to `POST /_cluster/voting_config_exclusions` fails or returns a response with an HTTP status code other than 200 OK then the node may not have been removed from the voting configuration.
        In that case, you may safely retry the call.

        NOTE: Voting exclusions are required only when you remove at least half of the master-eligible nodes from a cluster in a short time period.
        They are not required when removing master-ineligible nodes or when removing fewer than half of the master-eligible nodes.
      externalDocs:
        url: https://www.elastic.co/docs/deploy-manage/maintenance/add-and-remove-elasticsearch-nodes
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/voting-config-exclusions.html
      operationId: cluster-post-voting-config-exclusions
      parameters:
      - in: query
        name: node_names
        description: |-
          A comma-separated list of the names of the nodes to exclude from the
          voting configuration. If specified, you may not also specify node_ids.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Names"
        style: form
      - in: query
        name: node_ids
        description: |-
          A comma-separated list of the persistent ids of the nodes to exclude
          from the voting configuration. If specified, you may not also specify node_names.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Ids"
        style: form
      - in: query
        name: master_timeout
        description: Period to wait for a connection to the master node.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: timeout
        description: |-
          When adding a voting configuration exclusion, the API waits for the
          specified nodes to be excluded from the voting configuration before
          returning. If the timeout expires before the appropriate condition
          is satisfied, the request fails and returns an error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json: {}
      x-state: Generally available; Added in 7.0.0
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    delete:
      tags:
      - cluster
      summary: Clear cluster voting config exclusions
      description: Remove master-eligible nodes from the voting configuration exclusion
        list.
      externalDocs:
        url: https://www.elastic.co/docs/deploy-manage/maintenance/add-and-remove-elasticsearch-nodes
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/voting-config-exclusions.html
      operationId: cluster-delete-voting-config-exclusions
      parameters:
      - in: query
        name: master_timeout
        description: Period to wait for a connection to the master node.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: wait_for_removal
        description: |-
          Specifies whether to wait for all excluded nodes to be removed from the
          cluster before clearing the voting configuration exclusions list.
          Defaults to true, meaning that all excluded nodes must be removed from
          the cluster before this API takes any action. If set to false then the
          voting configuration exclusions list is cleared even if some excluded
          nodes are still in the cluster.
        deprecated: false
        schema:
          type: boolean
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json: {}
      x-state: Generally available; Added in 7.0.0
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_cluster/settings":
    get:
      tags:
      - cluster
      summary: Get cluster-wide settings
      description: |
        By default, it returns only settings that have been explicitly defined.

        ## Required authorization

        * Cluster privileges: `monitor`
      externalDocs:
        url: https://www.elastic.co/docs/deploy-manage/stack-settings
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/cluster-get-settings.html
      operationId: cluster-get-settings
      parameters:
      - in: query
        name: flat_settings
        description: If `true`, returns settings in flat format.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: include_defaults
        description: |-
          If `true`, also returns default values for all other cluster settings, reflecting the values
          in the `elasticsearch.yml` file of one of the nodes in the cluster. If the nodes in your
          cluster do not all have the same values in their `elasticsearch.yml` config files then the
          values returned by this API may vary from invocation to invocation and may not reflect the
          values that Elasticsearch uses in all situations. Use the `GET _nodes/settings` API to
          fetch the settings for each individual node in your cluster.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: master_timeout
        description: |-
          Period to wait for a connection to the master node.
          If no response is received before the timeout expires, the request fails and returns an error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: timeout
        description: |-
          Period to wait for a response.
          If no response is received before the timeout expires, the request fails and returns an error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  persistent:
                    description: The settings that persist after the cluster restarts.
                    type: object
                    additionalProperties:
                      type: object
                  transient:
                    description: The settings that do not persist after the cluster
                      restarts.
                    type: object
                    additionalProperties:
                      type: object
                  defaults:
                    description: The default setting values.
                    type: object
                    additionalProperties:
                      type: object
                required:
                - persistent
                - transient
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'GET /_cluster/settings?filter_path=persistent.cluster.remote

          '
      - lang: Python
        source: |-
          resp = client.cluster.get_settings(
              filter_path="persistent.cluster.remote",
          )
      - lang: JavaScript
        source: |-
          const response = await client.cluster.getSettings({
            filter_path: "persistent.cluster.remote",
          });
      - lang: Ruby
        source: |-
          response = client.cluster.get_settings(
            filter_path: "persistent.cluster.remote"
          )
      - lang: PHP
        source: |-
          $resp = $client->cluster()->getSettings([
              "filter_path" => "persistent.cluster.remote",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_cluster/settings?filter_path=persistent.cluster.remote"'
      - lang: Java
        source: 'client.cluster().getSettings(g -> g);

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    put:
      tags:
      - cluster
      summary: Update the cluster settings
      description: |-
        Configure and update dynamic settings on a running cluster.
        You can also configure dynamic settings locally on an unstarted or shut down node in `elasticsearch.yml`.

        Updates made with this API can be persistent, which apply across cluster restarts, or transient, which reset after a cluster restart.
        You can also reset transient or persistent settings by assigning them a null value.

        If you configure the same setting using multiple methods, Elasticsearch applies the settings in following order of precedence: 1) Transient setting; 2) Persistent setting; 3) `elasticsearch.yml` setting; 4) Default setting value.
        For example, you can apply a transient setting to override a persistent setting or `elasticsearch.yml` setting.
        However, a change to an `elasticsearch.yml` setting will not override a defined transient or persistent setting.

        TIP: In Elastic Cloud, use the user settings feature to configure all cluster settings. This method automatically rejects unsafe settings that could break your cluster.
        If you run Elasticsearch on your own hardware, use this API to configure dynamic cluster settings.
        Only use `elasticsearch.yml` for static cluster settings and node settings.
        The API doesn’t require a restart and ensures a setting’s value is the same on all nodes.

        WARNING: Transient cluster settings are no longer recommended. Use persistent cluster settings instead.
        If a cluster becomes unstable, transient settings can clear unexpectedly, resulting in a potentially undesired cluster configuration.
      externalDocs:
        url: https://www.elastic.co/docs/deploy-manage/stack-settings
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/cluster-update-settings.html
      operationId: cluster-put-settings
      parameters:
      - in: query
        name: flat_settings
        description: Return settings in flat format
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: master_timeout
        description: The period to wait for a connection to the master node.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: timeout
        description: The period to wait for a response.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                persistent:
                  description: The settings that persist after the cluster restarts.
                  type: object
                  additionalProperties:
                    type: object
                transient:
                  description: The settings that do not persist after the cluster
                    restarts.
                  type: object
                  additionalProperties:
                    type: object
            examples:
              ClusterPutSettingsRequestExample1:
                summary: A simple setting
                description: An example of a persistent update.
                value: |-
                  {
                    "persistent" : {
                      "indices.recovery.max_bytes_per_sec" : "50mb"
                    }
                  }
              ClusterPutSettingsRequestExample2:
                summary: A setting with multiple patterns
                description: 'PUT `/_cluster/settings` to update the `action.auto_create_index`
                  setting. The setting accepts a comma-separated list of patterns
                  that you want to allow or you can prefix each pattern with `+` or
                  `-` to indicate whether it should be allowed or blocked. In this
                  example, the auto-creation of indices called `my-index-000001` or
                  `index10` is allowed, the creation of indices that match the pattern
                  `index1*` is blocked, and the creation of any other indices that
                  match the `ind*` pattern is allowed. Patterns are matched in the
                  order specified.

                  '
                value: "{\n  \"persistent\": {\n    \"action.auto_create_index\":
                  \"my-index-000001,index10,-index1*,+ind*\" \n  }\n}"
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  acknowledged:
                    type: boolean
                  persistent:
                    type: object
                    additionalProperties:
                      type: object
                  transient:
                    type: object
                    additionalProperties:
                      type: object
                required:
                - acknowledged
                - persistent
                - transient
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: |-
          PUT /_cluster/settings
          {
            "persistent" : {
              "indices.recovery.max_bytes_per_sec" : "50mb"
            }
          }
      - lang: Python
        source: |-
          resp = client.cluster.put_settings(
              persistent={
                  "indices.recovery.max_bytes_per_sec": "50mb"
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.cluster.putSettings({
            persistent: {
              "indices.recovery.max_bytes_per_sec": "50mb",
            },
          });
      - lang: Ruby
        source: |-
          response = client.cluster.put_settings(
            body: {
              "persistent": {
                "indices.recovery.max_bytes_per_sec": "50mb"
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->cluster()->putSettings([
              "body" => [
                  "persistent" => [
                      "indices.recovery.max_bytes_per_sec" => "50mb",
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"persistent":{"indices.recovery.max_bytes_per_sec":"50mb"}}''
          "$ELASTICSEARCH_URL/_cluster/settings"'
      - lang: Java
        source: |
          client.cluster().putSettings(p -> p
              .persistent("indices.recovery.max_bytes_per_sec", JsonData.fromJson("\"50mb\""))
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_cluster/health/{index}":
    get:
      tags:
      - cluster
      summary: 'Get the cluster health status

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_cluster/health</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_cluster/health/{index}</span>\n
        \                     </div>\n                    \n\nYou can also use the
        API to get the health status of only specified data streams and indices.\nFor
        data streams, the API retrieves the health status of the stream’s backing
        indices.\n\nThe cluster health status is: green, yellow or red.\nOn the shard
        level, a red status indicates that the specific shard is not allocated in
        the cluster. Yellow means that the primary shard is allocated but replicas
        are not. Green means that all shards are allocated.\nThe index level status
        is controlled by the worst shard status.\n\nOne of the main benefits of the
        API is the ability to wait until the cluster reaches a certain high watermark
        health level.\nThe cluster status is controlled by the worst index status.\n\n##
        Required authorization\n\n* Cluster privileges: `monitor`,`manage`\n"
      operationId: cluster-health
      parameters:
      - "$ref": "#/components/parameters/cluster.health-index"
      - "$ref": "#/components/parameters/cluster.health-expand_wildcards"
      - "$ref": "#/components/parameters/cluster.health-level"
      - "$ref": "#/components/parameters/cluster.health-local"
      - "$ref": "#/components/parameters/cluster.health-master_timeout"
      - "$ref": "#/components/parameters/cluster.health-timeout"
      - "$ref": "#/components/parameters/cluster.health-wait_for_active_shards"
      - "$ref": "#/components/parameters/cluster.health-wait_for_events"
      - "$ref": "#/components/parameters/cluster.health-wait_for_nodes"
      - "$ref": "#/components/parameters/cluster.health-wait_for_no_initializing_shards"
      - "$ref": "#/components/parameters/cluster.health-wait_for_no_relocating_shards"
      - "$ref": "#/components/parameters/cluster.health-wait_for_status"
      responses:
        '200':
          "$ref": "#/components/responses/cluster.health-200"
      x-state: Generally available; Added in 1.3.0
      x-codeSamples:
      - lang: Console
        source: 'GET _cluster/health

          '
      - lang: Python
        source: resp = client.cluster.health()
      - lang: JavaScript
        source: const response = await client.cluster.health();
      - lang: Ruby
        source: response = client.cluster.health
      - lang: PHP
        source: "$resp = $client->cluster()->health();"
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_cluster/health"'
      - lang: Java
        source: 'client.cluster().health(h -> h);

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_info/{target}":
    get:
      tags:
      - cluster
      summary: Get cluster info
      description: Returns basic information about the cluster.
      operationId: cluster-info
      parameters:
      - in: path
        name: target
        description: |+
          Limits the information returned to the specific target. Supports a comma-separated list, such as http,ingest.

          Supported values include: `_all`, `http`, `ingest`, `thread_pool`, `script`

        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.ClusterInfoTargets"
        style: simple
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  cluster_name:
                    allOf:
                    - "$ref": "#/components/schemas/_types.Name"
                  http:
                    allOf:
                    - "$ref": "#/components/schemas/nodes._types.Http"
                  ingest:
                    allOf:
                    - "$ref": "#/components/schemas/nodes._types.Ingest"
                  thread_pool:
                    type: object
                    additionalProperties:
                      "$ref": "#/components/schemas/nodes._types.ThreadCount"
                  script:
                    allOf:
                    - "$ref": "#/components/schemas/nodes._types.Scripting"
                required:
                - cluster_name
      x-state: Generally available; Added in 8.9.0
      x-codeSamples:
      - lang: Console
        source: 'GET /_info/_all

          '
      - lang: Python
        source: |-
          resp = client.cluster.info(
              target="_all",
          )
      - lang: JavaScript
        source: |-
          const response = await client.cluster.info({
            target: "_all",
          });
      - lang: Ruby
        source: |-
          response = client.cluster.info(
            target: "_all"
          )
      - lang: PHP
        source: |-
          $resp = $client->cluster()->info([
              "target" => "_all",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_info/_all"'
      - lang: Java
        source: |
          client.cluster().info(i -> i
              .target("_all")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_cluster/pending_tasks":
    get:
      tags:
      - cluster
      summary: Get the pending cluster tasks
      description: |
        Get information about cluster-level changes (such as create index, update mapping, allocate or fail shard) that have not yet taken effect.

        NOTE: This API returns a list of any pending updates to the cluster state.
        These are distinct from the tasks reported by the task management API which include periodic tasks and tasks initiated by the user, such as node stats, search queries, or create index requests.
        However, if a user-initiated task such as a create index command causes a cluster state update, the activity of this task might be reported by both task api and pending cluster tasks API.

        ## Required authorization

        * Cluster privileges: `monitor`
      operationId: cluster-pending-tasks
      parameters:
      - in: query
        name: local
        description: |-
          If `true`, the request retrieves information from the local node only.
          If `false`, information is retrieved from the master node.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: master_timeout
        description: |-
          Period to wait for a connection to the master node.
          If no response is received before the timeout expires, the request fails and returns an error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  tasks:
                    type: array
                    items:
                      "$ref": "#/components/schemas/cluster.pending_tasks.PendingTask"
                required:
                - tasks
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'GET /_cluster/pending_tasks

          '
      - lang: Python
        source: resp = client.cluster.pending_tasks()
      - lang: JavaScript
        source: const response = await client.cluster.pendingTasks();
      - lang: Ruby
        source: response = client.cluster.pending_tasks
      - lang: PHP
        source: "$resp = $client->cluster()->pendingTasks();"
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_cluster/pending_tasks"'
      - lang: Java
        source: 'client.cluster().pendingTasks(p -> p);

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_remote/info":
    get:
      tags:
      - cluster
      summary: Get remote cluster information
      description: |
        Get information about configured remote clusters.
        The API returns connection and endpoint information keyed by the configured remote cluster alias.

        > info
        > This API returns information that reflects current state on the local cluster.
        > The `connected` field does not necessarily reflect whether a remote cluster is down or unavailable, only whether there is currently an open connection to it.
        > Elasticsearch does not spontaneously try to reconnect to a disconnected remote cluster.
        > To trigger a reconnection, attempt a cross-cluster search, ES|QL cross-cluster search, or try the [resolve cluster endpoint](https://www.elastic.co/docs/api/doc/elasticsearch/operation/operation-indices-resolve-cluster).

        ## Required authorization

        * Cluster privileges: `monitor`
      externalDocs:
        url: https://www.elastic.co/docs/solutions/search/cross-cluster-search
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/cluster-remote-info.html
      operationId: cluster-remote-info
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                additionalProperties:
                  "$ref": "#/components/schemas/cluster.remote_info.ClusterRemoteInfo"
      x-state: Generally available; Added in 6.1.0
      x-codeSamples:
      - lang: Console
        source: 'GET /_remote/info

          '
      - lang: Python
        source: resp = client.cluster.remote_info()
      - lang: JavaScript
        source: const response = await client.cluster.remoteInfo();
      - lang: Ruby
        source: response = client.cluster.remote_info
      - lang: PHP
        source: "$resp = $client->cluster()->remoteInfo();"
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_remote/info"'
      - lang: Java
        source: 'client.cluster().remoteInfo();

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_cluster/reroute":
    post:
      tags:
      - cluster
      summary: Reroute the cluster
      description: |-
        Manually change the allocation of individual shards in the cluster.
        For example, a shard can be moved from one node to another explicitly, an allocation can be canceled, and an unassigned shard can be explicitly allocated to a specific node.

        It is important to note that after processing any reroute commands Elasticsearch will perform rebalancing as normal (respecting the values of settings such as `cluster.routing.rebalance.enable`) in order to remain in a balanced state.
        For example, if the requested allocation includes moving a shard from node1 to node2 then this may cause a shard to be moved from node2 back to node1 to even things out.

        The cluster can be set to disable allocations using the `cluster.routing.allocation.enable` setting.
        If allocations are disabled then the only allocations that will be performed are explicit ones given using the reroute command, and consequent allocations due to rebalancing.

        The cluster will attempt to allocate a shard a maximum of `index.allocation.max_retries` times in a row (defaults to `5`), before giving up and leaving the shard unallocated.
        This scenario can be caused by structural problems such as having an analyzer which refers to a stopwords file which doesn’t exist on all nodes.

        Once the problem has been corrected, allocation can be manually retried by calling the reroute API with the `?retry_failed` URI query parameter, which will attempt a single retry round for these shards.
      operationId: cluster-reroute
      parameters:
      - in: query
        name: dry_run
        description: |-
          If true, then the request simulates the operation.
          It will calculate the result of applying the commands to the current cluster state and return the resulting cluster state after the commands (and rebalancing) have been applied; it will not actually perform the requested changes.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: explain
        description: If true, then the response contains an explanation of why the
          commands can or cannot run.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: metric
        description: Limits the information returned to the specified metrics.
        deprecated: true
        schema:
          oneOf:
          - type: string
          - type: array
            items:
              type: string
        style: form
      - in: query
        name: retry_failed
        description: If true, then retries allocation of shards that are blocked due
          to too many subsequent allocation failures.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: master_timeout
        description: Period to wait for a connection to the master node. If no response
          is received before the timeout expires, the request fails and returns an
          error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: timeout
        description: Period to wait for a response. If no response is received before
          the timeout expires, the request fails and returns an error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                commands:
                  description: Defines the commands to perform.
                  type: array
                  items:
                    "$ref": "#/components/schemas/cluster.reroute.Command"
            examples:
              ClusterRerouteRequestExample1:
                description: Run `POST /_cluster/reroute?metric=none` to changes the
                  allocation of shards in a cluster.
                value: |-
                  {
                    "commands": [
                      {
                        "move": {
                          "index": "test", "shard": 0,
                          "from_node": "node1", "to_node": "node2"
                        }
                      },
                      {
                        "allocate_replica": {
                          "index": "test", "shard": 1,
                          "node": "node3"
                        }
                      }
                    ]
                  }
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  acknowledged:
                    type: boolean
                  explanations:
                    type: array
                    items:
                      "$ref": "#/components/schemas/cluster.reroute.RerouteExplanation"
                  state:
                    description: |-
                      There aren't any guarantees on the output/structure of the raw cluster state.
                      Here you will find the internal representation of the cluster, which can
                      differ from the external representation.
                    type: object
                required:
                - acknowledged
      x-state: Generally available; Added in 5.0.0
      x-codeSamples:
      - lang: Console
        source: |-
          POST /_cluster/reroute?metric=none
          {
            "commands": [
              {
                "move": {
                  "index": "test", "shard": 0,
                  "from_node": "node1", "to_node": "node2"
                }
              },
              {
                "allocate_replica": {
                  "index": "test", "shard": 1,
                  "node": "node3"
                }
              }
            ]
          }
      - lang: Python
        source: |-
          resp = client.cluster.reroute(
              metric="none",
              commands=[
                  {
                      "move": {
                          "index": "test",
                          "shard": 0,
                          "from_node": "node1",
                          "to_node": "node2"
                      }
                  },
                  {
                      "allocate_replica": {
                          "index": "test",
                          "shard": 1,
                          "node": "node3"
                      }
                  }
              ],
          )
      - lang: JavaScript
        source: |-
          const response = await client.cluster.reroute({
            metric: "none",
            commands: [
              {
                move: {
                  index: "test",
                  shard: 0,
                  from_node: "node1",
                  to_node: "node2",
                },
              },
              {
                allocate_replica: {
                  index: "test",
                  shard: 1,
                  node: "node3",
                },
              },
            ],
          });
      - lang: Ruby
        source: |-
          response = client.cluster.reroute(
            metric: "none",
            body: {
              "commands": [
                {
                  "move": {
                    "index": "test",
                    "shard": 0,
                    "from_node": "node1",
                    "to_node": "node2"
                  }
                },
                {
                  "allocate_replica": {
                    "index": "test",
                    "shard": 1,
                    "node": "node3"
                  }
                }
              ]
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->cluster()->reroute([
              "metric" => "none",
              "body" => [
                  "commands" => array(
                      [
                          "move" => [
                              "index" => "test",
                              "shard" => 0,
                              "from_node" => "node1",
                              "to_node" => "node2",
                          ],
                      ],
                      [
                          "allocate_replica" => [
                              "index" => "test",
                              "shard" => 1,
                              "node" => "node3",
                          ],
                      ],
                  ),
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"commands":[{"move":{"index":"test","shard":0,"from_node":"node1","to_node":"node2"}},{"allocate_replica":{"index":"test","shard":1,"node":"node3"}}]}''
          "$ELASTICSEARCH_URL/_cluster/reroute?metric=none"'
      - lang: Java
        source: |
          client.cluster().reroute(r -> r
              .commands(List.of(Command.of(c -> c
                      .move(m -> m
                          .index("test")
                          .shard(0)
                          .fromNode("node1")
                          .toNode("node2")
                      )
                  ),Command.of(c -> c
                      .allocateReplica(a -> a
                          .index("test")
                          .shard(1)
                          .node("node3")
                      )
                  )))
              .metric("none")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_cluster/state/{metric}/{index}":
    get:
      tags:
      - cluster
      summary: 'Get the cluster state

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_cluster/state</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_cluster/state/{metric}</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_cluster/state/{metric}/{index}</span>\n
        \                     </div>\n                    \n\nGet comprehensive information
        about the state of the cluster.\n\nThe cluster state is an internal data structure
        which keeps track of a variety of information needed by every node, including
        the identity and attributes of the other nodes in the cluster; cluster-wide
        settings; index metadata, including the mapping and settings for each index;
        the location and status of every shard copy in the cluster.\n\nThe elected
        master node ensures that every node in the cluster has a copy of the same
        cluster state.\nThis API lets you retrieve a representation of this internal
        state for debugging or diagnostic purposes.\nYou may need to consult the Elasticsearch
        source code to determine the precise meaning of the response.\n\nBy default
        the API will route requests to the elected master node since this node is
        the authoritative source of cluster states.\nYou can also retrieve the cluster
        state held on the node handling the API request by adding the `?local=true`
        query parameter.\n\nElasticsearch may need to expend significant effort to
        compute a response to this API in larger clusters, and the response may comprise
        a very large quantity of data.\nIf you use this API repeatedly, your cluster
        may become unstable.\n\nWARNING: The response is a representation of an internal
        data structure.\nIts format is not subject to the same compatibility guarantees
        as other more stable APIs and may change from version to version.\nDo not
        query this API using external monitoring tools.\nInstead, obtain the information
        you require using other more stable cluster APIs.\n\n## Required authorization\n\n*
        Cluster privileges: `monitor`,`manage`\n"
      operationId: cluster-state
      parameters:
      - "$ref": "#/components/parameters/cluster.state-metric"
      - "$ref": "#/components/parameters/cluster.state-index"
      - "$ref": "#/components/parameters/cluster.state-allow_no_indices"
      - "$ref": "#/components/parameters/cluster.state-expand_wildcards"
      - "$ref": "#/components/parameters/cluster.state-flat_settings"
      - "$ref": "#/components/parameters/cluster.state-ignore_unavailable"
      - "$ref": "#/components/parameters/cluster.state-local"
      - "$ref": "#/components/parameters/cluster.state-master_timeout"
      - "$ref": "#/components/parameters/cluster.state-wait_for_metadata_version"
      - "$ref": "#/components/parameters/cluster.state-wait_for_timeout"
      responses:
        '200':
          "$ref": "#/components/responses/cluster.state-200"
      x-state: Generally available; Added in 1.3.0
      x-codeSamples:
      - lang: Console
        source: 'GET /_cluster/state?filter_path=metadata.cluster_coordination.last_committed_config

          '
      - lang: Python
        source: |-
          resp = client.cluster.state(
              filter_path="metadata.cluster_coordination.last_committed_config",
          )
      - lang: JavaScript
        source: |-
          const response = await client.cluster.state({
            filter_path: "metadata.cluster_coordination.last_committed_config",
          });
      - lang: Ruby
        source: |-
          response = client.cluster.state(
            filter_path: "metadata.cluster_coordination.last_committed_config"
          )
      - lang: PHP
        source: |-
          $resp = $client->cluster()->state([
              "filter_path" => "metadata.cluster_coordination.last_committed_config",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_cluster/state?filter_path=metadata.cluster_coordination.last_committed_config"'
      - lang: Java
        source: 'client.cluster().state(s -> s);

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_cluster/stats/nodes/{node_id}":
    get:
      tags:
      - cluster
      summary: 'Get cluster statistics

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_cluster/stats</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_cluster/stats/nodes/{node_id}</span>\n
        \                     </div>\n                    \n\nGet basic index metrics
        (shard numbers, store size, memory usage) and information about the current
        nodes that form the cluster (number, roles, os, jvm versions, memory usage,
        cpu and installed plugins).\n\n## Required authorization\n\n* Cluster privileges:
        `monitor`\n"
      operationId: cluster-stats
      parameters:
      - "$ref": "#/components/parameters/cluster.stats-node_id"
      - "$ref": "#/components/parameters/cluster.stats-include_remotes"
      - "$ref": "#/components/parameters/cluster.stats-timeout"
      responses:
        '200':
          "$ref": "#/components/responses/cluster.stats-200"
      x-state: Generally available; Added in 1.3.0
      x-codeSamples:
      - lang: Console
        source: 'GET _cluster/stats?human&filter_path=indices.mappings.total_deduplicated_mapping_size*

          '
      - lang: Python
        source: |-
          resp = client.cluster.stats(
              human=True,
              filter_path="indices.mappings.total_deduplicated_mapping_size*",
          )
      - lang: JavaScript
        source: |-
          const response = await client.cluster.stats({
            human: "true",
            filter_path: "indices.mappings.total_deduplicated_mapping_size*",
          });
      - lang: Ruby
        source: |-
          response = client.cluster.stats(
            human: "true",
            filter_path: "indices.mappings.total_deduplicated_mapping_size*"
          )
      - lang: PHP
        source: |-
          $resp = $client->cluster()->stats([
              "human" => "true",
              "filter_path" => "indices.mappings.total_deduplicated_mapping_size*",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_cluster/stats?human&filter_path=indices.mappings.total_deduplicated_mapping_size*"'
      - lang: Java
        source: 'client.cluster().stats(s -> s);

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_connector/{connector_id}/_check_in":
    put:
      tags:
      - connector
      summary: Check in a connector
      description: Update the `last_seen` field in the connector and set it to the
        current timestamp.
      operationId: connector-check-in
      parameters:
      - in: path
        name: connector_id
        description: The unique identifier of the connector to be checked in
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    allOf:
                    - "$ref": "#/components/schemas/_types.Result"
                required:
                - result
              examples:
                ConnectorCheckInResponseExample1:
                  value: |-
                    {
                        "result": "updated"
                    }
      x-state: Technical preview; Added in 8.12.0
      x-codeSamples:
      - lang: Console
        source: 'PUT _connector/my-connector/_check_in

          '
      - lang: Python
        source: |-
          resp = client.connector.check_in(
              connector_id="my-connector",
          )
      - lang: JavaScript
        source: |-
          const response = await client.connector.checkIn({
            connector_id: "my-connector",
          });
      - lang: Ruby
        source: |-
          response = client.connector.check_in(
            connector_id: "my-connector"
          )
      - lang: PHP
        source: |-
          $resp = $client->connector()->checkIn([
              "connector_id" => "my-connector",
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_connector/my-connector/_check_in"'
      - lang: Java
        source: |
          client.connector().checkIn(c -> c
              .connectorId("my-connector")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_connector/{connector_id}":
    get:
      tags:
      - connector
      summary: Get a connector
      description: Get the details about a connector.
      operationId: connector-get
      parameters:
      - in: path
        name: connector_id
        description: The unique identifier of the connector
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: include_deleted
        description: A flag to indicate if the desired connector should be fetched,
          even if it was soft-deleted.
        deprecated: false
        schema:
          type: boolean
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/connector._types.Connector"
      x-state: Beta; Added in 8.12.0
      x-codeSamples:
      - lang: Console
        source: 'GET _connector/my-connector-id

          '
      - lang: Python
        source: |-
          resp = client.connector.get(
              connector_id="my-connector-id",
          )
      - lang: JavaScript
        source: |-
          const response = await client.connector.get({
            connector_id: "my-connector-id",
          });
      - lang: Ruby
        source: |-
          response = client.connector.get(
            connector_id: "my-connector-id"
          )
      - lang: PHP
        source: |-
          $resp = $client->connector()->get([
              "connector_id" => "my-connector-id",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_connector/my-connector-id"'
      - lang: Java
        source: |
          client.connector().get(g -> g
              .connectorId("my-connector-id")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    put:
      tags:
      - connector
      summary: 'Create or update a connector

        '
      description: |-
        **All methods and paths for this operation:**

        <div>
                              <span class="operation-verb put">PUT</span>
                              <span class="operation-path">/_connector</span>
                              </div>
                            <div>
                              <span class="operation-verb put">PUT</span>
                              <span class="operation-path">/_connector/{connector_id}</span>
                              </div>
      operationId: connector-put
      parameters:
      - "$ref": "#/components/parameters/connector.put-connector_id"
      requestBody:
        "$ref": "#/components/requestBodies/connector.put"
      responses:
        '200':
          "$ref": "#/components/responses/connector.put-200"
      x-state: Beta; Added in 8.12.0
      x-codeSamples:
      - lang: Console
        source: |-
          PUT _connector/my-connector
          {
            "index_name": "search-google-drive",
            "name": "My Connector",
            "service_type": "google_drive"
          }
      - lang: Python
        source: |-
          resp = client.connector.put(
              connector_id="my-connector",
              index_name="search-google-drive",
              name="My Connector",
              service_type="google_drive",
          )
      - lang: JavaScript
        source: |-
          const response = await client.connector.put({
            connector_id: "my-connector",
            index_name: "search-google-drive",
            name: "My Connector",
            service_type: "google_drive",
          });
      - lang: Ruby
        source: |-
          response = client.connector.put(
            connector_id: "my-connector",
            body: {
              "index_name": "search-google-drive",
              "name": "My Connector",
              "service_type": "google_drive"
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->connector()->put([
              "connector_id" => "my-connector",
              "body" => [
                  "index_name" => "search-google-drive",
                  "name" => "My Connector",
                  "service_type" => "google_drive",
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"index_name":"search-google-drive","name":"My Connector","service_type":"google_drive"}''
          "$ELASTICSEARCH_URL/_connector/my-connector"'
      - lang: Java
        source: |
          client.connector().put(p -> p
              .connectorId("my-connector")
              .indexName("search-google-drive")
              .name("My Connector")
              .serviceType("google_drive")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    delete:
      tags:
      - connector
      summary: Delete a connector
      description: |-
        Removes a connector and associated sync jobs.
        This is a destructive action that is not recoverable.
        NOTE: This action doesn’t delete any API keys, ingest pipelines, or data indices associated with the connector.
        These need to be removed manually.
      operationId: connector-delete
      parameters:
      - in: path
        name: connector_id
        description: The unique identifier of the connector to be deleted
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: delete_sync_jobs
        description: A flag indicating if associated sync jobs should be also removed.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: hard
        description: A flag indicating if the connector should be hard deleted.
        deprecated: false
        schema:
          type: boolean
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
              examples:
                ConnectorDeleteResponseExample1:
                  value: |-
                    {
                        "acknowledged": true
                    }
      x-state: Beta; Added in 8.12.0
      x-codeSamples:
      - lang: Console
        source: 'DELETE _connector/my-connector-id&delete_sync_jobs=true

          '
      - lang: Python
        source: |-
          resp = client.connector.delete(
              connector_id="my-connector-id&delete_sync_jobs=true",
          )
      - lang: JavaScript
        source: |-
          const response = await client.connector.delete({
            connector_id: "my-connector-id&delete_sync_jobs=true",
          });
      - lang: Ruby
        source: |-
          response = client.connector.delete(
            connector_id: "my-connector-id&delete_sync_jobs=true"
          )
      - lang: PHP
        source: |-
          $resp = $client->connector()->delete([
              "connector_id" => "my-connector-id&delete_sync_jobs=true",
          ]);
      - lang: curl
        source: 'curl -X DELETE -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_connector/my-connector-id&delete_sync_jobs=true"'
      - lang: Java
        source: |
          client.connector().delete(d -> d
              .connectorId("my-connector-id&delete_sync_jobs=true")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_connector":
    get:
      tags:
      - connector
      summary: Get all connectors
      description: Get information about all connectors.
      operationId: connector-list
      parameters:
      - in: query
        name: from
        description: Starting offset
        deprecated: false
        schema:
          type: number
        style: form
      - in: query
        name: size
        description: Specifies a max number of results to get
        deprecated: false
        schema:
          type: number
        style: form
      - in: query
        name: index_name
        description: A comma-separated list of connector index names to fetch connector
          documents for
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Indices"
        style: form
      - in: query
        name: connector_name
        description: A comma-separated list of connector names to fetch connector
          documents for
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Names"
        style: form
      - in: query
        name: service_type
        description: A comma-separated list of connector service types to fetch connector
          documents for
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Names"
        style: form
      - in: query
        name: include_deleted
        description: A flag to indicate if the desired connector should be fetched,
          even if it was soft-deleted.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: query
        description: A wildcard query string that filters connectors with matching
          name, description or index name
        deprecated: false
        schema:
          type: string
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: number
                  results:
                    type: array
                    items:
                      "$ref": "#/components/schemas/connector._types.Connector"
                required:
                - count
                - results
      x-state: Beta; Added in 8.12.0
      x-codeSamples:
      - lang: Console
        source: 'GET _connector

          '
      - lang: Python
        source: resp = client.connector.list()
      - lang: JavaScript
        source: const response = await client.connector.list();
      - lang: Ruby
        source: response = client.connector.list
      - lang: PHP
        source: "$resp = $client->connector()->list();"
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_connector"'
      - lang: Java
        source: 'client.connector().list(l -> l);

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    post:
      tags:
      - connector
      summary: Create a connector
      description: |-
        Connectors are Elasticsearch integrations that bring content from third-party data sources, which can be deployed on Elastic Cloud or hosted on your own infrastructure.
        Elastic managed connectors (Native connectors) are a managed service on Elastic Cloud.
        Self-managed connectors (Connector clients) are self-managed on your infrastructure.
      operationId: connector-post
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                description:
                  type: string
                index_name:
                  allOf:
                  - "$ref": "#/components/schemas/_types.IndexName"
                is_native:
                  type: boolean
                language:
                  type: string
                name:
                  type: string
                service_type:
                  type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    allOf:
                    - "$ref": "#/components/schemas/_types.Result"
                  id:
                    allOf:
                    - "$ref": "#/components/schemas/_types.Id"
                required:
                - result
                - id
      x-state: Beta; Added in 8.12.0
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_connector/_sync_job/{connector_sync_job_id}/_cancel":
    put:
      tags:
      - connector
      summary: Cancel a connector sync job
      description: |-
        Cancel a connector sync job, which sets the status to cancelling and updates `cancellation_requested_at` to the current time.
        The connector service is then responsible for setting the status of connector sync jobs to cancelled.
      operationId: connector-sync-job-cancel
      parameters:
      - in: path
        name: connector_sync_job_id
        description: The unique identifier of the connector sync job
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    allOf:
                    - "$ref": "#/components/schemas/_types.Result"
                required:
                - result
      x-state: Beta; Added in 8.12.0
      x-codeSamples:
      - lang: Console
        source: 'PUT _connector/_sync_job/my-connector-sync-job-id/_cancel

          '
      - lang: Python
        source: |-
          resp = client.connector.sync_job_cancel(
              connector_sync_job_id="my-connector-sync-job-id",
          )
      - lang: JavaScript
        source: |-
          const response = await client.connector.syncJobCancel({
            connector_sync_job_id: "my-connector-sync-job-id",
          });
      - lang: Ruby
        source: |-
          response = client.connector.sync_job_cancel(
            connector_sync_job_id: "my-connector-sync-job-id"
          )
      - lang: PHP
        source: |-
          $resp = $client->connector()->syncJobCancel([
              "connector_sync_job_id" => "my-connector-sync-job-id",
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_connector/_sync_job/my-connector-sync-job-id/_cancel"'
      - lang: Java
        source: |
          client.connector().syncJobCancel(s -> s
              .connectorSyncJobId("my-connector-sync-job-id")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_connector/_sync_job/{connector_sync_job_id}/_check_in":
    put:
      tags:
      - connector
      summary: Check in a connector sync job
      description: |-
        Check in a connector sync job and set the `last_seen` field to the current time before updating it in the internal index.

        To sync data using self-managed connectors, you need to deploy the Elastic connector service on your own infrastructure.
        This service runs automatically on Elastic Cloud for Elastic managed connectors.
      operationId: connector-sync-job-check-in
      parameters:
      - in: path
        name: connector_sync_job_id
        description: The unique identifier of the connector sync job to be checked
          in.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
      x-state: Technical preview
      x-codeSamples:
      - lang: Console
        source: 'PUT _connector/_sync_job/my-connector-sync-job/_check_in

          '
      - lang: Python
        source: |-
          resp = client.connector.sync_job_check_in(
              connector_sync_job_id="my-connector-sync-job",
          )
      - lang: JavaScript
        source: |-
          const response = await client.connector.syncJobCheckIn({
            connector_sync_job_id: "my-connector-sync-job",
          });
      - lang: Ruby
        source: |-
          response = client.connector.sync_job_check_in(
            connector_sync_job_id: "my-connector-sync-job"
          )
      - lang: PHP
        source: |-
          $resp = $client->connector()->syncJobCheckIn([
              "connector_sync_job_id" => "my-connector-sync-job",
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_connector/_sync_job/my-connector-sync-job/_check_in"'
      - lang: Java
        source: |
          client.connector().syncJobCheckIn(s -> s
              .connectorSyncJobId("my-connector-sync-job")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_connector/_sync_job/{connector_sync_job_id}/_claim":
    put:
      tags:
      - connector
      summary: Claim a connector sync job
      description: |-
        This action updates the job status to `in_progress` and sets the `last_seen` and `started_at` timestamps to the current time.
        Additionally, it can set the `sync_cursor` property for the sync job.

        This API is not intended for direct connector management by users.
        It supports the implementation of services that utilize the connector protocol to communicate with Elasticsearch.

        To sync data using self-managed connectors, you need to deploy the Elastic connector service on your own infrastructure.
        This service runs automatically on Elastic Cloud for Elastic managed connectors.
      operationId: connector-sync-job-claim
      parameters:
      - in: path
        name: connector_sync_job_id
        description: The unique identifier of the connector sync job.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                sync_cursor:
                  description: |-
                    The cursor object from the last incremental sync job.
                    This should reference the `sync_cursor` field in the connector state for which the job runs.
                  type: object
                worker_hostname:
                  description: The host name of the current system that will run the
                    job.
                  type: string
              required:
              - worker_hostname
            examples:
              ConnectorSyncJobClaimExample1:
                description: An example body for a `PUT _connector/_sync_job/my-connector-sync-job-id/_claim`
                  request.
                value: |-
                  {
                    "worker_hostname": "some-machine"
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
      x-state: Technical preview
      x-codeSamples:
      - lang: Console
        source: |-
          PUT _connector/_sync_job/my-connector-sync-job-id/_claim
          {
            "worker_hostname": "some-machine"
          }
      - lang: Python
        source: |-
          resp = client.connector.sync_job_claim(
              connector_sync_job_id="my-connector-sync-job-id",
              worker_hostname="some-machine",
          )
      - lang: JavaScript
        source: |-
          const response = await client.connector.syncJobClaim({
            connector_sync_job_id: "my-connector-sync-job-id",
            worker_hostname: "some-machine",
          });
      - lang: Ruby
        source: |-
          response = client.connector.sync_job_claim(
            connector_sync_job_id: "my-connector-sync-job-id",
            body: {
              "worker_hostname": "some-machine"
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->connector()->syncJobClaim([
              "connector_sync_job_id" => "my-connector-sync-job-id",
              "body" => [
                  "worker_hostname" => "some-machine",
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"worker_hostname":"some-machine"}'' "$ELASTICSEARCH_URL/_connector/_sync_job/my-connector-sync-job-id/_claim"'
      - lang: Java
        source: |
          client.connector().syncJobClaim(s -> s
              .connectorSyncJobId("my-connector-sync-job-id")
              .workerHostname("some-machine")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_connector/_sync_job/{connector_sync_job_id}":
    get:
      tags:
      - connector
      summary: Get a connector sync job
      operationId: connector-sync-job-get
      parameters:
      - in: path
        name: connector_sync_job_id
        description: The unique identifier of the connector sync job
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/connector._types.ConnectorSyncJob"
      x-state: Beta; Added in 8.12.0
      x-codeSamples:
      - lang: Console
        source: 'GET _connector/_sync_job/my-connector-sync-job

          '
      - lang: Python
        source: |-
          resp = client.connector.sync_job_get(
              connector_sync_job_id="my-connector-sync-job",
          )
      - lang: JavaScript
        source: |-
          const response = await client.connector.syncJobGet({
            connector_sync_job_id: "my-connector-sync-job",
          });
      - lang: Ruby
        source: |-
          response = client.connector.sync_job_get(
            connector_sync_job_id: "my-connector-sync-job"
          )
      - lang: PHP
        source: |-
          $resp = $client->connector()->syncJobGet([
              "connector_sync_job_id" => "my-connector-sync-job",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_connector/_sync_job/my-connector-sync-job"'
      - lang: Java
        source: |
          client.connector().syncJobGet(s -> s
              .connectorSyncJobId("my-connector-sync-job")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    delete:
      tags:
      - connector
      summary: Delete a connector sync job
      description: |-
        Remove a connector sync job and its associated data.
        This is a destructive action that is not recoverable.
      operationId: connector-sync-job-delete
      parameters:
      - in: path
        name: connector_sync_job_id
        description: The unique identifier of the connector sync job to be deleted
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
              examples:
                SyncJobDeleteResponseExample1:
                  value: |-
                    {
                      "acknowledged": true
                    }
      x-state: Beta; Added in 8.12.0
      x-codeSamples:
      - lang: Console
        source: 'DELETE _connector/_sync_job/my-connector-sync-job-id

          '
      - lang: Python
        source: |-
          resp = client.connector.sync_job_delete(
              connector_sync_job_id="my-connector-sync-job-id",
          )
      - lang: JavaScript
        source: |-
          const response = await client.connector.syncJobDelete({
            connector_sync_job_id: "my-connector-sync-job-id",
          });
      - lang: Ruby
        source: |-
          response = client.connector.sync_job_delete(
            connector_sync_job_id: "my-connector-sync-job-id"
          )
      - lang: PHP
        source: |-
          $resp = $client->connector()->syncJobDelete([
              "connector_sync_job_id" => "my-connector-sync-job-id",
          ]);
      - lang: curl
        source: 'curl -X DELETE -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_connector/_sync_job/my-connector-sync-job-id"'
      - lang: Java
        source: |
          client.connector().syncJobDelete(s -> s
              .connectorSyncJobId("my-connector-sync-job-id")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_connector/_sync_job/{connector_sync_job_id}/_error":
    put:
      tags:
      - connector
      summary: Set a connector sync job error
      description: |-
        Set the `error` field for a connector sync job and set its `status` to `error`.

        To sync data using self-managed connectors, you need to deploy the Elastic connector service on your own infrastructure.
        This service runs automatically on Elastic Cloud for Elastic managed connectors.
      operationId: connector-sync-job-error
      parameters:
      - in: path
        name: connector_sync_job_id
        description: The unique identifier for the connector sync job.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                error:
                  description: The error for the connector sync job error field.
                  type: string
              required:
              - error
            examples:
              SyncJobErrorRequestExample1:
                value: |-
                  {
                      "error": "some-error"
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
      x-state: Technical preview
      x-codeSamples:
      - lang: Console
        source: |-
          PUT _connector/_sync_job/my-connector-sync-job/_error
          {
              "error": "some-error"
          }
      - lang: Python
        source: |-
          resp = client.connector.sync_job_error(
              connector_sync_job_id="my-connector-sync-job",
              error="some-error",
          )
      - lang: JavaScript
        source: |-
          const response = await client.connector.syncJobError({
            connector_sync_job_id: "my-connector-sync-job",
            error: "some-error",
          });
      - lang: Ruby
        source: |-
          response = client.connector.sync_job_error(
            connector_sync_job_id: "my-connector-sync-job",
            body: {
              "error": "some-error"
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->connector()->syncJobError([
              "connector_sync_job_id" => "my-connector-sync-job",
              "body" => [
                  "error" => "some-error",
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"error":"some-error"}'' "$ELASTICSEARCH_URL/_connector/_sync_job/my-connector-sync-job/_error"'
      - lang: Java
        source: |
          client.connector().syncJobError(s -> s
              .connectorSyncJobId("my-connector-sync-job")
              .error("some-error")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_connector/_sync_job":
    get:
      tags:
      - connector
      summary: Get all connector sync jobs
      description: Get information about all stored connector sync jobs listed by
        their creation date in ascending order.
      operationId: connector-sync-job-list
      parameters:
      - in: query
        name: from
        description: Starting offset
        deprecated: false
        schema:
          type: number
        style: form
      - in: query
        name: size
        description: Specifies a max number of results to get
        deprecated: false
        schema:
          type: number
        style: form
      - in: query
        name: status
        description: A sync job status to fetch connector sync jobs for
        deprecated: false
        schema:
          "$ref": "#/components/schemas/connector._types.SyncStatus"
        style: form
      - in: query
        name: connector_id
        description: A connector id to fetch connector sync jobs for
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: form
      - in: query
        name: job_type
        description: |+
          A comma-separated list of job types to fetch the sync jobs for

          Supported values include: `full`, `incremental`, `access_control`

        deprecated: false
        schema:
          oneOf:
          - "$ref": "#/components/schemas/connector._types.SyncJobType"
          - type: array
            items:
              "$ref": "#/components/schemas/connector._types.SyncJobType"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: number
                  results:
                    type: array
                    items:
                      "$ref": "#/components/schemas/connector._types.ConnectorSyncJob"
                required:
                - count
                - results
      x-state: Beta; Added in 8.12.0
      x-codeSamples:
      - lang: Console
        source: 'GET _connector/_sync_job?connector_id=my-connector-id&size=1

          '
      - lang: Python
        source: |-
          resp = client.connector.sync_job_list(
              connector_id="my-connector-id",
              size="1",
          )
      - lang: JavaScript
        source: |-
          const response = await client.connector.syncJobList({
            connector_id: "my-connector-id",
            size: 1,
          });
      - lang: Ruby
        source: |-
          response = client.connector.sync_job_list(
            connector_id: "my-connector-id",
            size: "1"
          )
      - lang: PHP
        source: |-
          $resp = $client->connector()->syncJobList([
              "connector_id" => "my-connector-id",
              "size" => "1",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_connector/_sync_job?connector_id=my-connector-id&size=1"'
      - lang: Java
        source: |
          client.connector().syncJobList(s -> s
              .connectorId("my-connector-id")
              .size(1)
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    post:
      tags:
      - connector
      summary: Create a connector sync job
      description: Create a connector sync job document in the internal index and
        initialize its counters and timestamps with default values.
      operationId: connector-sync-job-post
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  description: The id of the associated connector
                  allOf:
                  - "$ref": "#/components/schemas/_types.Id"
                job_type:
                  allOf:
                  - "$ref": "#/components/schemas/connector._types.SyncJobType"
                trigger_method:
                  allOf:
                  - "$ref": "#/components/schemas/connector._types.SyncJobTriggerMethod"
              required:
              - id
            examples:
              SyncJobPostRequestExample1:
                value: |-
                  {
                    "id": "connector-id",
                    "job_type": "full",
                    "trigger_method": "on_demand"
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    allOf:
                    - "$ref": "#/components/schemas/_types.Id"
                required:
                - id
      x-state: Beta; Added in 8.12.0
      x-codeSamples:
      - lang: Console
        source: |-
          POST _connector/_sync_job
          {
            "id": "connector-id",
            "job_type": "full",
            "trigger_method": "on_demand"
          }
      - lang: Python
        source: |-
          resp = client.connector.sync_job_post(
              id="connector-id",
              job_type="full",
              trigger_method="on_demand",
          )
      - lang: JavaScript
        source: |-
          const response = await client.connector.syncJobPost({
            id: "connector-id",
            job_type: "full",
            trigger_method: "on_demand",
          });
      - lang: Ruby
        source: |-
          response = client.connector.sync_job_post(
            body: {
              "id": "connector-id",
              "job_type": "full",
              "trigger_method": "on_demand"
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->connector()->syncJobPost([
              "body" => [
                  "id" => "connector-id",
                  "job_type" => "full",
                  "trigger_method" => "on_demand",
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"id":"connector-id","job_type":"full","trigger_method":"on_demand"}''
          "$ELASTICSEARCH_URL/_connector/_sync_job"'
      - lang: Java
        source: |
          client.connector().syncJobPost(s -> s
              .id("connector-id")
              .jobType(SyncJobType.Full)
              .triggerMethod(SyncJobTriggerMethod.OnDemand)
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_connector/_sync_job/{connector_sync_job_id}/_stats":
    put:
      tags:
      - connector
      summary: Set the connector sync job stats
      description: |-
        Stats include: `deleted_document_count`, `indexed_document_count`, `indexed_document_volume`, and `total_document_count`.
        You can also update `last_seen`.
        This API is mainly used by the connector service for updating sync job information.

        To sync data using self-managed connectors, you need to deploy the Elastic connector service on your own infrastructure.
        This service runs automatically on Elastic Cloud for Elastic managed connectors.
      operationId: connector-sync-job-update-stats
      parameters:
      - in: path
        name: connector_sync_job_id
        description: The unique identifier of the connector sync job.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                deleted_document_count:
                  description: The number of documents the sync job deleted.
                  type: number
                indexed_document_count:
                  description: The number of documents the sync job indexed.
                  type: number
                indexed_document_volume:
                  description: The total size of the data (in MiB) the sync job indexed.
                  type: number
                last_seen:
                  description: The timestamp to use in the `last_seen` property for
                    the connector sync job.
                  allOf:
                  - "$ref": "#/components/schemas/_types.Duration"
                metadata:
                  description: The connector-specific metadata.
                  allOf:
                  - "$ref": "#/components/schemas/_types.Metadata"
                total_document_count:
                  description: The total number of documents in the target index after
                    the sync job finished.
                  type: number
              required:
              - deleted_document_count
              - indexed_document_count
              - indexed_document_volume
            examples:
              ConnectorSyncJobUpdateStatsExample1:
                description: An example body for a `PUT _connector/_sync_job/my-connector-sync-job/_stats`
                  request.
                value: |-
                  {
                      "deleted_document_count": 10,
                      "indexed_document_count": 20,
                      "indexed_document_volume": 1000,
                      "total_document_count": 2000,
                      "last_seen": "2023-01-02T10:00:00Z"
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
      x-state: Technical preview
      x-codeSamples:
      - lang: Console
        source: |-
          PUT _connector/_sync_job/my-connector-sync-job/_stats
          {
              "deleted_document_count": 10,
              "indexed_document_count": 20,
              "indexed_document_volume": 1000,
              "total_document_count": 2000,
              "last_seen": "2023-01-02T10:00:00Z"
          }
      - lang: Python
        source: |-
          resp = client.connector.sync_job_update_stats(
              connector_sync_job_id="my-connector-sync-job",
              deleted_document_count=10,
              indexed_document_count=20,
              indexed_document_volume=1000,
              total_document_count=2000,
              last_seen="2023-01-02T10:00:00Z",
          )
      - lang: JavaScript
        source: |-
          const response = await client.connector.syncJobUpdateStats({
            connector_sync_job_id: "my-connector-sync-job",
            deleted_document_count: 10,
            indexed_document_count: 20,
            indexed_document_volume: 1000,
            total_document_count: 2000,
            last_seen: "2023-01-02T10:00:00Z",
          });
      - lang: Ruby
        source: |-
          response = client.connector.sync_job_update_stats(
            connector_sync_job_id: "my-connector-sync-job",
            body: {
              "deleted_document_count": 10,
              "indexed_document_count": 20,
              "indexed_document_volume": 1000,
              "total_document_count": 2000,
              "last_seen": "2023-01-02T10:00:00Z"
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->connector()->syncJobUpdateStats([
              "connector_sync_job_id" => "my-connector-sync-job",
              "body" => [
                  "deleted_document_count" => 10,
                  "indexed_document_count" => 20,
                  "indexed_document_volume" => 1000,
                  "total_document_count" => 2000,
                  "last_seen" => "2023-01-02T10:00:00Z",
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"deleted_document_count":10,"indexed_document_count":20,"indexed_document_volume":1000,"total_document_count":2000,"last_seen":"2023-01-02T10:00:00Z"}''
          "$ELASTICSEARCH_URL/_connector/_sync_job/my-connector-sync-job/_stats"'
      - lang: Java
        source: |
          client.connector().syncJobUpdateStats(s -> s
              .connectorSyncJobId("my-connector-sync-job")
              .deletedDocumentCount(10L)
              .indexedDocumentCount(20L)
              .indexedDocumentVolume(1000L)
              .lastSeen(l -> l
                  .time("2023-01-02T10:00:00Z")
              )
              .totalDocumentCount(2000)
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_connector/{connector_id}/_filtering/_activate":
    put:
      tags:
      - connector
      summary: Activate the connector draft filter
      description: Activates the valid draft filtering for a connector.
      operationId: connector-update-active-filtering
      parameters:
      - in: path
        name: connector_id
        description: The unique identifier of the connector to be updated
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    allOf:
                    - "$ref": "#/components/schemas/_types.Result"
                required:
                - result
      x-state: Technical preview; Added in 8.12.0
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_connector/{connector_id}/_api_key_id":
    put:
      tags:
      - connector
      summary: Update the connector API key ID
      description: |-
        Update the `api_key_id` and `api_key_secret_id` fields of a connector.
        You can specify the ID of the API key used for authorization and the ID of the connector secret where the API key is stored.
        The connector secret ID is required only for Elastic managed (native) connectors.
        Self-managed connectors (connector clients) do not use this field.
      operationId: connector-update-api-key-id
      parameters:
      - in: path
        name: connector_id
        description: The unique identifier of the connector to be updated
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                api_key_id:
                  type: string
                api_key_secret_id:
                  type: string
            examples:
              ConnectorUpdateApiKeyIDRequestExample1:
                value: |-
                  {
                      "api_key_id": "my-api-key-id",
                      "api_key_secret_id": "my-connector-secret-id"
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    allOf:
                    - "$ref": "#/components/schemas/_types.Result"
                required:
                - result
              examples:
                ConnectorUpdateAPIKeyIDResponseExample1:
                  value: |-
                    {
                      "result": "updated"
                    }
      x-state: Beta; Added in 8.12.0
      x-codeSamples:
      - lang: Console
        source: |-
          PUT _connector/my-connector/_api_key_id
          {
              "api_key_id": "my-api-key-id",
              "api_key_secret_id": "my-connector-secret-id"
          }
      - lang: Python
        source: |-
          resp = client.connector.update_api_key_id(
              connector_id="my-connector",
              api_key_id="my-api-key-id",
              api_key_secret_id="my-connector-secret-id",
          )
      - lang: JavaScript
        source: |-
          const response = await client.connector.updateApiKeyId({
            connector_id: "my-connector",
            api_key_id: "my-api-key-id",
            api_key_secret_id: "my-connector-secret-id",
          });
      - lang: Ruby
        source: |-
          response = client.connector.update_api_key_id(
            connector_id: "my-connector",
            body: {
              "api_key_id": "my-api-key-id",
              "api_key_secret_id": "my-connector-secret-id"
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->connector()->updateApiKeyId([
              "connector_id" => "my-connector",
              "body" => [
                  "api_key_id" => "my-api-key-id",
                  "api_key_secret_id" => "my-connector-secret-id",
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"api_key_id":"my-api-key-id","api_key_secret_id":"my-connector-secret-id"}''
          "$ELASTICSEARCH_URL/_connector/my-connector/_api_key_id"'
      - lang: Java
        source: |
          client.connector().updateApiKeyId(u -> u
              .apiKeyId("my-api-key-id")
              .apiKeySecretId("my-connector-secret-id")
              .connectorId("my-connector")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_connector/{connector_id}/_configuration":
    put:
      tags:
      - connector
      summary: Update the connector configuration
      description: Update the configuration field in the connector document.
      operationId: connector-update-configuration
      parameters:
      - in: path
        name: connector_id
        description: The unique identifier of the connector to be updated
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                configuration:
                  allOf:
                  - "$ref": "#/components/schemas/connector._types.ConnectorConfiguration"
                values:
                  type: object
                  additionalProperties:
                    type: object
            examples:
              ConnectorUpdateConfigurationRequestExample1:
                value: |-
                  {
                      "values": {
                          "tenant_id": "my-tenant-id",
                          "tenant_name": "my-sharepoint-site",
                          "client_id": "foo",
                          "secret_value": "bar",
                          "site_collections": "*"
                      }
                  }
              ConnectorUpdateConfigurationRequestExample2:
                value: |-
                  {
                      "values": {
                          "secret_value": "foo-bar"
                      }
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    allOf:
                    - "$ref": "#/components/schemas/_types.Result"
                required:
                - result
              examples:
                ConnectorUpdateConfigurationResponseExample1:
                  value: |-
                    {
                      "result": "updated"
                    }
      x-state: Beta; Added in 8.12.0
      x-codeSamples:
      - lang: Console
        source: |-
          PUT _connector/my-spo-connector/_configuration
          {
              "values": {
                  "tenant_id": "my-tenant-id",
                  "tenant_name": "my-sharepoint-site",
                  "client_id": "foo",
                  "secret_value": "bar",
                  "site_collections": "*"
              }
          }
      - lang: Python
        source: |-
          resp = client.connector.update_configuration(
              connector_id="my-spo-connector",
              values={
                  "tenant_id": "my-tenant-id",
                  "tenant_name": "my-sharepoint-site",
                  "client_id": "foo",
                  "secret_value": "bar",
                  "site_collections": "*"
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.connector.updateConfiguration({
            connector_id: "my-spo-connector",
            values: {
              tenant_id: "my-tenant-id",
              tenant_name: "my-sharepoint-site",
              client_id: "foo",
              secret_value: "bar",
              site_collections: "*",
            },
          });
      - lang: Ruby
        source: |-
          response = client.connector.update_configuration(
            connector_id: "my-spo-connector",
            body: {
              "values": {
                "tenant_id": "my-tenant-id",
                "tenant_name": "my-sharepoint-site",
                "client_id": "foo",
                "secret_value": "bar",
                "site_collections": "*"
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->connector()->updateConfiguration([
              "connector_id" => "my-spo-connector",
              "body" => [
                  "values" => [
                      "tenant_id" => "my-tenant-id",
                      "tenant_name" => "my-sharepoint-site",
                      "client_id" => "foo",
                      "secret_value" => "bar",
                      "site_collections" => "*",
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"values":{"tenant_id":"my-tenant-id","tenant_name":"my-sharepoint-site","client_id":"foo","secret_value":"bar","site_collections":"*"}}''
          "$ELASTICSEARCH_URL/_connector/my-spo-connector/_configuration"'
      - lang: Java
        source: |
          client.connector().updateConfiguration(u -> u
              .connectorId("my-spo-connector")
              .values(Map.of("tenant_id", JsonData.fromJson("\"my-tenant-id\""),"tenant_name", JsonData.fromJson("\"my-sharepoint-site\""),"secret_value", JsonData.fromJson("\"bar\""),"client_id", JsonData.fromJson("\"foo\""),"site_collections", JsonData.fromJson("\"*\"")))
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_connector/{connector_id}/_error":
    put:
      tags:
      - connector
      summary: Update the connector error field
      description: |-
        Set the error field for the connector.
        If the error provided in the request body is non-null, the connector’s status is updated to error.
        Otherwise, if the error is reset to null, the connector status is updated to connected.
      operationId: connector-update-error
      parameters:
      - in: path
        name: connector_id
        description: The unique identifier of the connector to be updated
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                error:
                  oneOf:
                  - type: string
                  - "$ref": "#/components/schemas/_spec_utils.NullValue"
              required:
              - error
            examples:
              ConnectorUpdateErrorRequestExample1:
                value: |-
                  {
                      "error": "Houston, we have a problem!"
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    allOf:
                    - "$ref": "#/components/schemas/_types.Result"
                required:
                - result
              examples:
                ConnectorUpdateErrorResponseExample1:
                  value: |-
                    {
                      "result": "updated"
                    }
      x-state: Technical preview; Added in 8.12.0
      x-codeSamples:
      - lang: Console
        source: |-
          PUT _connector/my-connector/_error
          {
              "error": "Houston, we have a problem!"
          }
      - lang: Python
        source: |-
          resp = client.connector.update_error(
              connector_id="my-connector",
              error="Houston, we have a problem!",
          )
      - lang: JavaScript
        source: |-
          const response = await client.connector.updateError({
            connector_id: "my-connector",
            error: "Houston, we have a problem!",
          });
      - lang: Ruby
        source: |-
          response = client.connector.update_error(
            connector_id: "my-connector",
            body: {
              "error": "Houston, we have a problem!"
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->connector()->updateError([
              "connector_id" => "my-connector",
              "body" => [
                  "error" => "Houston, we have a problem!",
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"error":"Houston, we have a problem!"}'' "$ELASTICSEARCH_URL/_connector/my-connector/_error"'
      - lang: Java
        source: |
          client.connector().updateError(u -> u
              .connectorId("my-connector")
              .error("Houston, we have a problem!")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_connector/{connector_id}/_features":
    put:
      tags:
      - connector
      summary: Update the connector features
      description: |-
        Update the connector features in the connector document.
        This API can be used to control the following aspects of a connector:

        * document-level security
        * incremental syncs
        * advanced sync rules
        * basic sync rules

        Normally, the running connector service automatically manages these features.
        However, you can use this API to override the default behavior.

        To sync data using self-managed connectors, you need to deploy the Elastic connector service on your own infrastructure.
        This service runs automatically on Elastic Cloud for Elastic managed connectors.
      operationId: connector-update-features
      parameters:
      - in: path
        name: connector_id
        description: The unique identifier of the connector to be updated.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                features:
                  allOf:
                  - "$ref": "#/components/schemas/connector._types.ConnectorFeatures"
              required:
              - features
            examples:
              ConnectorUpdateFeaturesRequestExample1:
                value: |-
                  {
                    "features": {
                      "document_level_security": {
                        "enabled": true
                      },
                      "incremental_sync": {
                        "enabled": true
                      },
                      "sync_rules": {
                        "advanced": {
                          "enabled": false
                        },
                        "basic": {
                          "enabled": true
                        }
                      }
                    }
                  }
              ConnectorUpdateFeaturesRequestExample2:
                value: |-
                  {
                    "features": {
                      "document_level_security": {
                        "enabled": true
                      }
                    }
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    allOf:
                    - "$ref": "#/components/schemas/_types.Result"
                required:
                - result
              examples:
                ConnectorUpdateFeaturesResponseExample1:
                  value: |-
                    {
                      "result": "updated"
                    }
      x-state: Technical preview
      x-codeSamples:
      - lang: Console
        source: |-
          PUT _connector/my-connector/_features
          {
            "features": {
              "document_level_security": {
                "enabled": true
              },
              "incremental_sync": {
                "enabled": true
              },
              "sync_rules": {
                "advanced": {
                  "enabled": false
                },
                "basic": {
                  "enabled": true
                }
              }
            }
          }
      - lang: Python
        source: |-
          resp = client.connector.update_features(
              connector_id="my-connector",
              features={
                  "document_level_security": {
                      "enabled": True
                  },
                  "incremental_sync": {
                      "enabled": True
                  },
                  "sync_rules": {
                      "advanced": {
                          "enabled": False
                      },
                      "basic": {
                          "enabled": True
                      }
                  }
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.connector.updateFeatures({
            connector_id: "my-connector",
            features: {
              document_level_security: {
                enabled: true,
              },
              incremental_sync: {
                enabled: true,
              },
              sync_rules: {
                advanced: {
                  enabled: false,
                },
                basic: {
                  enabled: true,
                },
              },
            },
          });
      - lang: Ruby
        source: |-
          response = client.connector.update_features(
            connector_id: "my-connector",
            body: {
              "features": {
                "document_level_security": {
                  "enabled": true
                },
                "incremental_sync": {
                  "enabled": true
                },
                "sync_rules": {
                  "advanced": {
                    "enabled": false
                  },
                  "basic": {
                    "enabled": true
                  }
                }
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->connector()->updateFeatures([
              "connector_id" => "my-connector",
              "body" => [
                  "features" => [
                      "document_level_security" => [
                          "enabled" => true,
                      ],
                      "incremental_sync" => [
                          "enabled" => true,
                      ],
                      "sync_rules" => [
                          "advanced" => [
                              "enabled" => false,
                          ],
                          "basic" => [
                              "enabled" => true,
                          ],
                      ],
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"features":{"document_level_security":{"enabled":true},"incremental_sync":{"enabled":true},"sync_rules":{"advanced":{"enabled":false},"basic":{"enabled":true}}}}''
          "$ELASTICSEARCH_URL/_connector/my-connector/_features"'
      - lang: Java
        source: |
          client.connector().updateFeatures(u -> u
              .connectorId("my-connector")
              .features(f -> f
                  .documentLevelSecurity(d -> d
                      .enabled(true)
                  )
                  .incrementalSync(i -> i
                      .enabled(true)
                  )
                  .syncRules(s -> s
                      .advanced(a -> a
                          .enabled(false)
                      )
                      .basic(b -> b
                          .enabled(true)
                      )
                  )
              )
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_connector/{connector_id}/_filtering":
    put:
      tags:
      - connector
      summary: Update the connector filtering
      description: |-
        Update the draft filtering configuration of a connector and marks the draft validation state as edited.
        The filtering draft is activated once validated by the running Elastic connector service.
        The filtering property is used to configure sync rules (both basic and advanced) for a connector.
      operationId: connector-update-filtering
      parameters:
      - in: path
        name: connector_id
        description: The unique identifier of the connector to be updated
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                filtering:
                  type: array
                  items:
                    "$ref": "#/components/schemas/connector._types.FilteringConfig"
                rules:
                  type: array
                  items:
                    "$ref": "#/components/schemas/connector._types.FilteringRule"
                advanced_snippet:
                  allOf:
                  - "$ref": "#/components/schemas/connector._types.FilteringAdvancedSnippet"
            examples:
              ConnectorUpdateFilteringRequestExample1:
                value: |-
                  {
                      "rules": [
                           {
                              "field": "file_extension",
                              "id": "exclude-txt-files",
                              "order": 0,
                              "policy": "exclude",
                              "rule": "equals",
                              "value": "txt"
                          },
                          {
                              "field": "_",
                              "id": "DEFAULT",
                              "order": 1,
                              "policy": "include",
                              "rule": "regex",
                              "value": ".*"
                          }
                      ]
                  }
              ConnectorUpdateFilteringRequestExample2:
                value: |-
                  {
                      "advanced_snippet": {
                          "value": [{
                              "tables": [
                                  "users",
                                  "orders"
                              ],
                              "query": "SELECT users.id AS id, orders.order_id AS order_id FROM users JOIN orders ON users.id = orders.user_id"
                          }]
                      }
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    allOf:
                    - "$ref": "#/components/schemas/_types.Result"
                required:
                - result
              examples:
                ConnectorUpdateFilteringResponseExample1:
                  value: |-
                    {
                      "result": "updated"
                    }
      x-state: Beta; Added in 8.12.0
      x-codeSamples:
      - lang: Console
        source: |-
          PUT _connector/my-g-drive-connector/_filtering
          {
              "rules": [
                   {
                      "field": "file_extension",
                      "id": "exclude-txt-files",
                      "order": 0,
                      "policy": "exclude",
                      "rule": "equals",
                      "value": "txt"
                  },
                  {
                      "field": "_",
                      "id": "DEFAULT",
                      "order": 1,
                      "policy": "include",
                      "rule": "regex",
                      "value": ".*"
                  }
              ]
          }
      - lang: Python
        source: |-
          resp = client.connector.update_filtering(
              connector_id="my-g-drive-connector",
              rules=[
                  {
                      "field": "file_extension",
                      "id": "exclude-txt-files",
                      "order": 0,
                      "policy": "exclude",
                      "rule": "equals",
                      "value": "txt"
                  },
                  {
                      "field": "_",
                      "id": "DEFAULT",
                      "order": 1,
                      "policy": "include",
                      "rule": "regex",
                      "value": ".*"
                  }
              ],
          )
      - lang: JavaScript
        source: |-
          const response = await client.connector.updateFiltering({
            connector_id: "my-g-drive-connector",
            rules: [
              {
                field: "file_extension",
                id: "exclude-txt-files",
                order: 0,
                policy: "exclude",
                rule: "equals",
                value: "txt",
              },
              {
                field: "_",
                id: "DEFAULT",
                order: 1,
                policy: "include",
                rule: "regex",
                value: ".*",
              },
            ],
          });
      - lang: Ruby
        source: |-
          response = client.connector.update_filtering(
            connector_id: "my-g-drive-connector",
            body: {
              "rules": [
                {
                  "field": "file_extension",
                  "id": "exclude-txt-files",
                  "order": 0,
                  "policy": "exclude",
                  "rule": "equals",
                  "value": "txt"
                },
                {
                  "field": "_",
                  "id": "DEFAULT",
                  "order": 1,
                  "policy": "include",
                  "rule": "regex",
                  "value": ".*"
                }
              ]
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->connector()->updateFiltering([
              "connector_id" => "my-g-drive-connector",
              "body" => [
                  "rules" => array(
                      [
                          "field" => "file_extension",
                          "id" => "exclude-txt-files",
                          "order" => 0,
                          "policy" => "exclude",
                          "rule" => "equals",
                          "value" => "txt",
                      ],
                      [
                          "field" => "_",
                          "id" => "DEFAULT",
                          "order" => 1,
                          "policy" => "include",
                          "rule" => "regex",
                          "value" => ".*",
                      ],
                  ),
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"rules":[{"field":"file_extension","id":"exclude-txt-files","order":0,"policy":"exclude","rule":"equals","value":"txt"},{"field":"_","id":"DEFAULT","order":1,"policy":"include","rule":"regex","value":".*"}]}''
          "$ELASTICSEARCH_URL/_connector/my-g-drive-connector/_filtering"'
      - lang: Java
        source: |
          client.connector().updateFiltering(u -> u
              .connectorId("my-g-drive-connector")
              .rules(List.of(FilteringRule.of(f -> f
                      .field("file_extension")
                      .id("exclude-txt-files")
                      .order(0)
                      .policy(FilteringPolicy.Exclude)
                      .rule(FilteringRuleRule.Equals)
                      .value("txt")
                  ),FilteringRule.of(f -> f
                      .field("_")
                      .id("DEFAULT")
                      .order(1)
                      .policy(FilteringPolicy.Include)
                      .rule(FilteringRuleRule.Regex)
                      .value(".*")
                  )))
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_connector/{connector_id}/_filtering/_validation":
    put:
      tags:
      - connector
      summary: Update the connector draft filtering validation
      description: Update the draft filtering validation info for a connector.
      operationId: connector-update-filtering-validation
      parameters:
      - in: path
        name: connector_id
        description: The unique identifier of the connector to be updated
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                validation:
                  allOf:
                  - "$ref": "#/components/schemas/connector._types.FilteringRulesValidation"
              required:
              - validation
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    allOf:
                    - "$ref": "#/components/schemas/_types.Result"
                required:
                - result
      x-state: Technical preview; Added in 8.12.0
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_connector/{connector_id}/_index_name":
    put:
      tags:
      - connector
      summary: Update the connector index name
      description: Update the `index_name` field of a connector, specifying the index
        where the data ingested by the connector is stored.
      operationId: connector-update-index-name
      parameters:
      - in: path
        name: connector_id
        description: The unique identifier of the connector to be updated
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                index_name:
                  oneOf:
                  - "$ref": "#/components/schemas/_types.IndexName"
                  - "$ref": "#/components/schemas/_spec_utils.NullValue"
              required:
              - index_name
            examples:
              ConnectorUpdateIndexNameRequestExample1:
                value: |-
                  {
                      "index_name": "data-from-my-google-drive"
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    allOf:
                    - "$ref": "#/components/schemas/_types.Result"
                required:
                - result
              examples:
                ConnectorUpdateIndexNameResponseExample1:
                  value: |-
                    {
                      "result": "updated"
                    }
      x-state: Beta; Added in 8.12.0
      x-codeSamples:
      - lang: Console
        source: |-
          PUT _connector/my-connector/_index_name
          {
              "index_name": "data-from-my-google-drive"
          }
      - lang: Python
        source: |-
          resp = client.connector.update_index_name(
              connector_id="my-connector",
              index_name="data-from-my-google-drive",
          )
      - lang: JavaScript
        source: |-
          const response = await client.connector.updateIndexName({
            connector_id: "my-connector",
            index_name: "data-from-my-google-drive",
          });
      - lang: Ruby
        source: |-
          response = client.connector.update_index_name(
            connector_id: "my-connector",
            body: {
              "index_name": "data-from-my-google-drive"
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->connector()->updateIndexName([
              "connector_id" => "my-connector",
              "body" => [
                  "index_name" => "data-from-my-google-drive",
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"index_name":"data-from-my-google-drive"}'' "$ELASTICSEARCH_URL/_connector/my-connector/_index_name"'
      - lang: Java
        source: |
          client.connector().updateIndexName(u -> u
              .connectorId("my-connector")
              .indexName("data-from-my-google-drive")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_connector/{connector_id}/_name":
    put:
      tags:
      - connector
      summary: Update the connector name and description
      operationId: connector-update-name
      parameters:
      - in: path
        name: connector_id
        description: The unique identifier of the connector to be updated
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                description:
                  type: string
            examples:
              ConnectorUpdateNameRequestExample1:
                value: |-
                  {
                      "name": "Custom connector",
                      "description": "This is my customized connector"
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    allOf:
                    - "$ref": "#/components/schemas/_types.Result"
                required:
                - result
              examples:
                ConnectorUpdateNameResponseExample1:
                  value: |-
                    {
                      "result": "updated"
                    }
      x-state: Beta; Added in 8.12.0
      x-codeSamples:
      - lang: Console
        source: |-
          PUT _connector/my-connector/_name
          {
              "name": "Custom connector",
              "description": "This is my customized connector"
          }
      - lang: Python
        source: |-
          resp = client.connector.update_name(
              connector_id="my-connector",
              name="Custom connector",
              description="This is my customized connector",
          )
      - lang: JavaScript
        source: |-
          const response = await client.connector.updateName({
            connector_id: "my-connector",
            name: "Custom connector",
            description: "This is my customized connector",
          });
      - lang: Ruby
        source: |-
          response = client.connector.update_name(
            connector_id: "my-connector",
            body: {
              "name": "Custom connector",
              "description": "This is my customized connector"
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->connector()->updateName([
              "connector_id" => "my-connector",
              "body" => [
                  "name" => "Custom connector",
                  "description" => "This is my customized connector",
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"name":"Custom connector","description":"This is
          my customized connector"}'' "$ELASTICSEARCH_URL/_connector/my-connector/_name"'
      - lang: Java
        source: |
          client.connector().updateName(u -> u
              .connectorId("my-connector")
              .description("This is my customized connector")
              .name("Custom connector")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_connector/{connector_id}/_native":
    put:
      tags:
      - connector
      summary: Update the connector is_native flag
      operationId: connector-update-native
      parameters:
      - in: path
        name: connector_id
        description: The unique identifier of the connector to be updated
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                is_native:
                  type: boolean
              required:
              - is_native
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    allOf:
                    - "$ref": "#/components/schemas/_types.Result"
                required:
                - result
      x-state: Beta; Added in 8.12.0
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_connector/{connector_id}/_pipeline":
    put:
      tags:
      - connector
      summary: Update the connector pipeline
      description: When you create a new connector, the configuration of an ingest
        pipeline is populated with default settings.
      operationId: connector-update-pipeline
      parameters:
      - in: path
        name: connector_id
        description: The unique identifier of the connector to be updated
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                pipeline:
                  allOf:
                  - "$ref": "#/components/schemas/connector._types.IngestPipelineParams"
              required:
              - pipeline
            examples:
              ConnectorUpdatePipelineRequestExample1:
                value: |-
                  {
                      "pipeline": {
                          "extract_binary_content": true,
                          "name": "my-connector-pipeline",
                          "reduce_whitespace": true,
                          "run_ml_inference": true
                      }
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    allOf:
                    - "$ref": "#/components/schemas/_types.Result"
                required:
                - result
              examples:
                ConnectorUpdatePipelineResponseExample1:
                  value: |-
                    {
                      "result": "updated"
                    }
      x-state: Beta; Added in 8.12.0
      x-codeSamples:
      - lang: Console
        source: |-
          PUT _connector/my-connector/_pipeline
          {
              "pipeline": {
                  "extract_binary_content": true,
                  "name": "my-connector-pipeline",
                  "reduce_whitespace": true,
                  "run_ml_inference": true
              }
          }
      - lang: Python
        source: |-
          resp = client.connector.update_pipeline(
              connector_id="my-connector",
              pipeline={
                  "extract_binary_content": True,
                  "name": "my-connector-pipeline",
                  "reduce_whitespace": True,
                  "run_ml_inference": True
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.connector.updatePipeline({
            connector_id: "my-connector",
            pipeline: {
              extract_binary_content: true,
              name: "my-connector-pipeline",
              reduce_whitespace: true,
              run_ml_inference: true,
            },
          });
      - lang: Ruby
        source: |-
          response = client.connector.update_pipeline(
            connector_id: "my-connector",
            body: {
              "pipeline": {
                "extract_binary_content": true,
                "name": "my-connector-pipeline",
                "reduce_whitespace": true,
                "run_ml_inference": true
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->connector()->updatePipeline([
              "connector_id" => "my-connector",
              "body" => [
                  "pipeline" => [
                      "extract_binary_content" => true,
                      "name" => "my-connector-pipeline",
                      "reduce_whitespace" => true,
                      "run_ml_inference" => true,
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"pipeline":{"extract_binary_content":true,"name":"my-connector-pipeline","reduce_whitespace":true,"run_ml_inference":true}}''
          "$ELASTICSEARCH_URL/_connector/my-connector/_pipeline"'
      - lang: Java
        source: |
          client.connector().updatePipeline(u -> u
              .connectorId("my-connector")
              .pipeline(p -> p
                  .extractBinaryContent(true)
                  .name("my-connector-pipeline")
                  .reduceWhitespace(true)
                  .runMlInference(true)
              )
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_connector/{connector_id}/_scheduling":
    put:
      tags:
      - connector
      summary: Update the connector scheduling
      operationId: connector-update-scheduling
      parameters:
      - in: path
        name: connector_id
        description: The unique identifier of the connector to be updated
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                scheduling:
                  allOf:
                  - "$ref": "#/components/schemas/connector._types.SchedulingConfiguration"
              required:
              - scheduling
            examples:
              ConnectorUpdateSchedulingRequestExample1:
                value: |-
                  {
                      "scheduling": {
                          "access_control": {
                              "enabled": true,
                              "interval": "0 10 0 * * ?"
                          },
                          "full": {
                              "enabled": true,
                              "interval": "0 20 0 * * ?"
                          },
                          "incremental": {
                              "enabled": false,
                              "interval": "0 30 0 * * ?"
                          }
                      }
                  }
              ConnectorUpdateSchedulingRequestExample2:
                value: |-
                  {
                      "scheduling": {
                          "full": {
                              "enabled": true,
                              "interval": "0 10 0 * * ?"
                          }
                      }
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    allOf:
                    - "$ref": "#/components/schemas/_types.Result"
                required:
                - result
              examples:
                ConnectorUpdateSchedulingResponseExample1:
                  value: |-
                    {
                      "result": "updated"
                    }
      x-state: Beta; Added in 8.12.0
      x-codeSamples:
      - lang: Console
        source: |-
          PUT _connector/my-connector/_scheduling
          {
              "scheduling": {
                  "access_control": {
                      "enabled": true,
                      "interval": "0 10 0 * * ?"
                  },
                  "full": {
                      "enabled": true,
                      "interval": "0 20 0 * * ?"
                  },
                  "incremental": {
                      "enabled": false,
                      "interval": "0 30 0 * * ?"
                  }
              }
          }
      - lang: Python
        source: |-
          resp = client.connector.update_scheduling(
              connector_id="my-connector",
              scheduling={
                  "access_control": {
                      "enabled": True,
                      "interval": "0 10 0 * * ?"
                  },
                  "full": {
                      "enabled": True,
                      "interval": "0 20 0 * * ?"
                  },
                  "incremental": {
                      "enabled": False,
                      "interval": "0 30 0 * * ?"
                  }
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.connector.updateScheduling({
            connector_id: "my-connector",
            scheduling: {
              access_control: {
                enabled: true,
                interval: "0 10 0 * * ?",
              },
              full: {
                enabled: true,
                interval: "0 20 0 * * ?",
              },
              incremental: {
                enabled: false,
                interval: "0 30 0 * * ?",
              },
            },
          });
      - lang: Ruby
        source: |-
          response = client.connector.update_scheduling(
            connector_id: "my-connector",
            body: {
              "scheduling": {
                "access_control": {
                  "enabled": true,
                  "interval": "0 10 0 * * ?"
                },
                "full": {
                  "enabled": true,
                  "interval": "0 20 0 * * ?"
                },
                "incremental": {
                  "enabled": false,
                  "interval": "0 30 0 * * ?"
                }
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->connector()->updateScheduling([
              "connector_id" => "my-connector",
              "body" => [
                  "scheduling" => [
                      "access_control" => [
                          "enabled" => true,
                          "interval" => "0 10 0 * * ?",
                      ],
                      "full" => [
                          "enabled" => true,
                          "interval" => "0 20 0 * * ?",
                      ],
                      "incremental" => [
                          "enabled" => false,
                          "interval" => "0 30 0 * * ?",
                      ],
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"scheduling":{"access_control":{"enabled":true,"interval":"0
          10 0 * * ?"},"full":{"enabled":true,"interval":"0 20 0 * * ?"},"incremental":{"enabled":false,"interval":"0
          30 0 * * ?"}}}'' "$ELASTICSEARCH_URL/_connector/my-connector/_scheduling"'
      - lang: Java
        source: |
          client.connector().updateScheduling(u -> u
              .connectorId("my-connector")
              .scheduling(s -> s
                  .accessControl(a -> a
                      .enabled(true)
                      .interval("0 10 0 * * ?")
                  )
                  .full(f -> f
                      .enabled(true)
                      .interval("0 20 0 * * ?")
                  )
                  .incremental(i -> i
                      .enabled(false)
                      .interval("0 30 0 * * ?")
                  )
              )
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_connector/{connector_id}/_service_type":
    put:
      tags:
      - connector
      summary: Update the connector service type
      operationId: connector-update-service-type
      parameters:
      - in: path
        name: connector_id
        description: The unique identifier of the connector to be updated
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                service_type:
                  type: string
              required:
              - service_type
            examples:
              ConnectorUpdateServiceTypeRequestExample1:
                value: |-
                  {
                      "service_type": "sharepoint_online"
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    allOf:
                    - "$ref": "#/components/schemas/_types.Result"
                required:
                - result
              examples:
                ConnectorUpdateServiceTypeResponseExample1:
                  value: |-
                    {
                      "result": "updated"
                    }
      x-state: Beta; Added in 8.12.0
      x-codeSamples:
      - lang: Console
        source: |-
          PUT _connector/my-connector/_service_type
          {
              "service_type": "sharepoint_online"
          }
      - lang: Python
        source: |-
          resp = client.connector.update_service_type(
              connector_id="my-connector",
              service_type="sharepoint_online",
          )
      - lang: JavaScript
        source: |-
          const response = await client.connector.updateServiceType({
            connector_id: "my-connector",
            service_type: "sharepoint_online",
          });
      - lang: Ruby
        source: |-
          response = client.connector.update_service_type(
            connector_id: "my-connector",
            body: {
              "service_type": "sharepoint_online"
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->connector()->updateServiceType([
              "connector_id" => "my-connector",
              "body" => [
                  "service_type" => "sharepoint_online",
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"service_type":"sharepoint_online"}'' "$ELASTICSEARCH_URL/_connector/my-connector/_service_type"'
      - lang: Java
        source: |
          client.connector().updateServiceType(u -> u
              .connectorId("my-connector")
              .serviceType("sharepoint_online")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_connector/{connector_id}/_status":
    put:
      tags:
      - connector
      summary: Update the connector status
      operationId: connector-update-status
      parameters:
      - in: path
        name: connector_id
        description: The unique identifier of the connector to be updated
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                status:
                  allOf:
                  - "$ref": "#/components/schemas/connector._types.ConnectorStatus"
              required:
              - status
            examples:
              ConnectorUpdateStatusRequestExample1:
                value: |-
                  {
                      "status": "needs_configuration"
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    allOf:
                    - "$ref": "#/components/schemas/_types.Result"
                required:
                - result
              examples:
                ConnectorUpdateStatusResponseExample1:
                  value: |-
                    {
                      "result": "updated"
                    }
      x-state: Technical preview; Added in 8.12.0
      x-codeSamples:
      - lang: Console
        source: |-
          PUT _connector/my-connector/_status
          {
              "status": "needs_configuration"
          }
      - lang: Python
        source: |-
          resp = client.connector.update_status(
              connector_id="my-connector",
              status="needs_configuration",
          )
      - lang: JavaScript
        source: |-
          const response = await client.connector.updateStatus({
            connector_id: "my-connector",
            status: "needs_configuration",
          });
      - lang: Ruby
        source: |-
          response = client.connector.update_status(
            connector_id: "my-connector",
            body: {
              "status": "needs_configuration"
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->connector()->updateStatus([
              "connector_id" => "my-connector",
              "body" => [
                  "status" => "needs_configuration",
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"status":"needs_configuration"}'' "$ELASTICSEARCH_URL/_connector/my-connector/_status"'
      - lang: Java
        source: |
          client.connector().updateStatus(u -> u
              .connectorId("my-connector")
              .status(ConnectorStatus.NeedsConfiguration)
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/{index}/_count":
    get:
      tags:
      - search
      summary: 'Count search results

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_count</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_count</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/{index}/_count</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/{index}/_count</span>\n
        \                     </div>\n                    \n\nGet the number of documents
        matching a query.\n\nThe query can be provided either by using a simple query
        string as a parameter, or by defining Query DSL within the request body.\nThe
        query is optional. When no query is provided, the API uses `match_all` to
        count all the documents.\n\nThe count API supports multi-target syntax. You
        can run a single count API search across multiple data streams and indices.\n\nThe
        operation is broadcast across all shards.\nFor each shard ID group, a replica
        is chosen and the search is run against it.\nThis means that replicas increase
        the scalability of the count.\n\n## Required authorization\n\n* Index privileges:
        `read`\n"
      operationId: count
      parameters:
      - "$ref": "#/components/parameters/count-index"
      - "$ref": "#/components/parameters/count-allow_no_indices"
      - "$ref": "#/components/parameters/count-analyzer"
      - "$ref": "#/components/parameters/count-analyze_wildcard"
      - "$ref": "#/components/parameters/count-default_operator"
      - "$ref": "#/components/parameters/count-df"
      - "$ref": "#/components/parameters/count-expand_wildcards"
      - "$ref": "#/components/parameters/count-ignore_throttled"
      - "$ref": "#/components/parameters/count-ignore_unavailable"
      - "$ref": "#/components/parameters/count-lenient"
      - "$ref": "#/components/parameters/count-min_score"
      - "$ref": "#/components/parameters/count-preference"
      - "$ref": "#/components/parameters/count-routing"
      - "$ref": "#/components/parameters/count-terminate_after"
      - "$ref": "#/components/parameters/count-q"
      requestBody:
        "$ref": "#/components/requestBodies/count"
      responses:
        '200':
          "$ref": "#/components/responses/count-200"
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: |-
          GET /my-index-000001/_count
          {
            "query" : {
              "term" : { "user.id" : "kimchy" }
            }
          }
      - lang: Python
        source: |-
          resp = client.count(
              index="my-index-000001",
              query={
                  "term": {
                      "user.id": "kimchy"
                  }
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.count({
            index: "my-index-000001",
            query: {
              term: {
                "user.id": "kimchy",
              },
            },
          });
      - lang: Ruby
        source: |-
          response = client.count(
            index: "my-index-000001",
            body: {
              "query": {
                "term": {
                  "user.id": "kimchy"
                }
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->count([
              "index" => "my-index-000001",
              "body" => [
                  "query" => [
                      "term" => [
                          "user.id" => "kimchy",
                      ],
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"query":{"term":{"user.id":"kimchy"}}}'' "$ELASTICSEARCH_URL/my-index-000001/_count"'
      - lang: Java
        source: |
          client.count(c -> c
              .index("my-index-000001")
              .query(q -> q
                  .term(t -> t
                      .field("user.id")
                      .value(FieldValue.of("kimchy"))
                  )
              )
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/{index}/_create/{id}":
    post:
      tags:
      - document
      summary: 'Create a new document in the index

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb put\">PUT</span>\n                      <span class=\"operation-path\">/{index}/_create/{id}</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/{index}/_create/{id}</span>\n
        \                     </div>\n                    \n\nYou can index a new
        JSON document with the `/<target>/_doc/` or `/<target>/_create/<_id>` APIs\nUsing
        `_create` guarantees that the document is indexed only if it does not already
        exist.\nIt returns a 409 response when a document with a same ID already exists
        in the index.\nTo update an existing document, you must use the `/<target>/_doc/`
        API.\n\nIf the Elasticsearch security features are enabled, you must have
        the following index privileges for the target data stream, index, or index
        alias:\n\n* To add a document using the `PUT /<target>/_create/<_id>` or `POST
        /<target>/_create/<_id>` request formats, you must have the `create_doc`,
        `create`, `index`, or `write` index privilege.\n* To automatically create
        a data stream or index with this API request, you must have the `auto_configure`,
        `create_index`, or `manage` index privilege.\n\nAutomatic data stream creation
        requires a matching index template with data stream enabled.\n\n**Automatically
        create data streams and indices**\n\nIf the request's target doesn't exist
        and matches an index template with a `data_stream` definition, the index operation
        automatically creates the data stream.\n\nIf the target doesn't exist and
        doesn't match a data stream template, the operation automatically creates
        the index and applies any matching index templates.\n\nNOTE: Elasticsearch
        includes several built-in index templates. To avoid naming collisions with
        these templates, refer to index pattern documentation.\n\nIf no mapping exists,
        the index operation creates a dynamic mapping.\nBy default, new fields and
        objects are automatically added to the mapping if needed.\n\nAutomatic index
        creation is controlled by the `action.auto_create_index` setting.\nIf it is
        `true`, any index can be created automatically.\nYou can modify this setting
        to explicitly allow or block automatic creation of indices that match specified
        patterns or set it to `false` to turn off automatic index creation entirely.\nSpecify
        a comma-separated list of patterns you want to allow or prefix each pattern
        with `+` or `-` to indicate whether it should be allowed or blocked.\nWhen
        a list is specified, the default behaviour is to disallow.\n\nNOTE: The `action.auto_create_index`
        setting affects the automatic creation of indices only.\nIt does not affect
        the creation of data streams.\n\n**Routing**\n\nBy default, shard placement — or
        routing — is controlled by using a hash of the document's ID value.\nFor more
        explicit control, the value fed into the hash function used by the router
        can be directly specified on a per-operation basis using the `routing` parameter.\n\nWhen
        setting up explicit mapping, you can also use the `_routing` field to direct
        the index operation to extract the routing value from the document itself.\nThis
        does come at the (very minimal) cost of an additional document parsing pass.\nIf
        the `_routing` mapping is defined and set to be required, the index operation
        will fail if no routing value is provided or extracted.\n\nNOTE: Data streams
        do not support custom routing unless they were created with the `allow_custom_routing`
        setting enabled in the template.\n\n**Distributed**\n\nThe index operation
        is directed to the primary shard based on its route and performed on the actual
        node containing this shard.\nAfter the primary shard completes the operation,
        if needed, the update is distributed to applicable replicas.\n\n**Active shards**\n\nTo
        improve the resiliency of writes to the system, indexing operations can be
        configured to wait for a certain number of active shard copies before proceeding
        with the operation.\nIf the requisite number of active shard copies are not
        available, then the write operation must wait and retry, until either the
        requisite shard copies have started or a timeout occurs.\nBy default, write
        operations only wait for the primary shards to be active before proceeding
        (that is to say `wait_for_active_shards` is `1`).\nThis default can be overridden
        in the index settings dynamically by setting `index.write.wait_for_active_shards`.\nTo
        alter this behavior per operation, use the `wait_for_active_shards request`
        parameter.\n\nValid values are all or any positive integer up to the total
        number of configured copies per shard in the index (which is `number_of_replicas`+1).\nSpecifying
        a negative value or a number greater than the number of shard copies will
        throw an error.\n\nFor example, suppose you have a cluster of three nodes,
        A, B, and C and you create an index index with the number of replicas set
        to 3 (resulting in 4 shard copies, one more copy than there are nodes).\nIf
        you attempt an indexing operation, by default the operation will only ensure
        the primary copy of each shard is available before proceeding.\nThis means
        that even if B and C went down and A hosted the primary shard copies, the
        indexing operation would still proceed with only one copy of the data.\nIf
        `wait_for_active_shards` is set on the request to `3` (and all three nodes
        are up), the indexing operation will require 3 active shard copies before
        proceeding.\nThis requirement should be met because there are 3 active nodes
        in the cluster, each one holding a copy of the shard.\nHowever, if you set
        `wait_for_active_shards` to `all` (or to `4`, which is the same in this situation),
        the indexing operation will not proceed as you do not have all 4 copies of
        each shard active in the index.\nThe operation will timeout unless a new node
        is brought up in the cluster to host the fourth copy of the shard.\n\nIt is
        important to note that this setting greatly reduces the chances of the write
        operation not writing to the requisite number of shard copies, but it does
        not completely eliminate the possibility, because this check occurs before
        the write operation starts.\nAfter the write operation is underway, it is
        still possible for replication to fail on any number of shard copies but still
        succeed on the primary.\nThe `_shards` section of the API response reveals
        the number of shard copies on which replication succeeded and failed.\n\n##
        Required authorization\n\n* Index privileges: `create`\n"
      externalDocs:
        url: https://www.elastic.co/docs/manage-data/data-store/data-streams
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/docs-index_.html
      operationId: create
      parameters:
      - "$ref": "#/components/parameters/create-index"
      - "$ref": "#/components/parameters/create-id"
      - "$ref": "#/components/parameters/create-include_source_on_error"
      - "$ref": "#/components/parameters/create-pipeline"
      - "$ref": "#/components/parameters/create-refresh"
      - "$ref": "#/components/parameters/create-require_alias"
      - "$ref": "#/components/parameters/create-require_data_stream"
      - "$ref": "#/components/parameters/create-routing"
      - "$ref": "#/components/parameters/create-timeout"
      - "$ref": "#/components/parameters/create-version"
      - "$ref": "#/components/parameters/create-version_type"
      - "$ref": "#/components/parameters/create-wait_for_active_shards"
      requestBody:
        "$ref": "#/components/requestBodies/create"
      responses:
        '200':
          "$ref": "#/components/responses/create-200"
      x-state: Generally available; Added in 5.0.0
      x-codeSamples:
      - lang: Console
        source: |-
          PUT my-index-000001/_create/1
          {
            "@timestamp": "2099-11-15T13:12:00",
            "message": "GET /search HTTP/1.1 200 1070000",
            "user": {
              "id": "kimchy"
            }
          }
      - lang: Python
        source: |-
          resp = client.create(
              index="my-index-000001",
              id="1",
              document={
                  "@timestamp": "2099-11-15T13:12:00",
                  "message": "GET /search HTTP/1.1 200 1070000",
                  "user": {
                      "id": "kimchy"
                  }
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.create({
            index: "my-index-000001",
            id: 1,
            document: {
              "@timestamp": "2099-11-15T13:12:00",
              message: "GET /search HTTP/1.1 200 1070000",
              user: {
                id: "kimchy",
              },
            },
          });
      - lang: Ruby
        source: |-
          response = client.create(
            index: "my-index-000001",
            id: "1",
            body: {
              "@timestamp": "2099-11-15T13:12:00",
              "message": "GET /search HTTP/1.1 200 1070000",
              "user": {
                "id": "kimchy"
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->create([
              "index" => "my-index-000001",
              "id" => "1",
              "body" => [
                  "@timestamp" => "2099-11-15T13:12:00",
                  "message" => "GET /search HTTP/1.1 200 1070000",
                  "user" => [
                      "id" => "kimchy",
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"@timestamp":"2099-11-15T13:12:00","message":"GET
          /search HTTP/1.1 200 1070000","user":{"id":"kimchy"}}'' "$ELASTICSEARCH_URL/my-index-000001/_create/1"'
      - lang: Java
        source: |
          client.create(c -> c
              .id("1")
              .index("my-index-000001")
              .document(JsonData.fromJson("{\"@timestamp\":\"2099-11-15T13:12:00\",\"message\":\"GET /search HTTP/1.1 200 1070000\",\"user\":{\"id\":\"kimchy\"}}"))
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_dangling/{index_uuid}":
    post:
      tags:
      - indices
      summary: Import a dangling index
      description: |
        If Elasticsearch encounters index data that is absent from the current cluster state, those indices are considered to be dangling.
        For example, this can happen if you delete more than `cluster.indices.tombstones.size` indices while an Elasticsearch node is offline.

        ## Required authorization

        * Cluster privileges: `manage`
      operationId: dangling-indices-import-dangling-index
      parameters:
      - in: path
        name: index_uuid
        description: The UUID of the index to import. Use the get dangling indices
          API to locate the UUID.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Uuid"
        style: simple
      - in: query
        name: accept_data_loss
        description: |-
          This parameter must be set to true to import a dangling index.
          Because Elasticsearch cannot know where the dangling index data came from or determine which shard copies are fresh and which are stale, it cannot guarantee that the imported data represents the latest state of the index when it was last in the cluster.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: master_timeout
        description: The period to wait for a connection to the master node.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: timeout
        description: The period to wait for a response.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
              examples:
                ImportDanglingIndexResponseExample1:
                  description: 'A successful response from `POST /_dangling/zmM4e0JtBkeUjiHD-MihPQ?accept_data_loss=true`.

                    '
                  value: |-
                    {
                      "acknowledged": true
                    }
      x-state: Generally available; Added in 7.9.0
      x-codeSamples:
      - lang: Console
        source: 'POST /_dangling/zmM4e0JtBkeUjiHD-MihPQ?accept_data_loss=true

          '
      - lang: Python
        source: |-
          resp = client.dangling_indices.import_dangling_index(
              index_uuid="zmM4e0JtBkeUjiHD-MihPQ",
              accept_data_loss=True,
          )
      - lang: JavaScript
        source: |-
          const response = await client.danglingIndices.importDanglingIndex({
            index_uuid: "zmM4e0JtBkeUjiHD-MihPQ",
            accept_data_loss: "true",
          });
      - lang: Ruby
        source: |-
          response = client.dangling_indices.import_dangling_index(
            index_uuid: "zmM4e0JtBkeUjiHD-MihPQ",
            accept_data_loss: "true"
          )
      - lang: PHP
        source: |-
          $resp = $client->danglingIndices()->importDanglingIndex([
              "index_uuid" => "zmM4e0JtBkeUjiHD-MihPQ",
              "accept_data_loss" => "true",
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_dangling/zmM4e0JtBkeUjiHD-MihPQ?accept_data_loss=true"'
      - lang: Java
        source: |
          client.danglingIndices().importDanglingIndex(i -> i
              .acceptDataLoss(true)
              .indexUuid("zmM4e0JtBkeUjiHD-MihPQ")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    delete:
      tags:
      - indices
      summary: Delete a dangling index
      description: |
        If Elasticsearch encounters index data that is absent from the current cluster state, those indices are considered to be dangling.
        For example, this can happen if you delete more than `cluster.indices.tombstones.size` indices while an Elasticsearch node is offline.

        ## Required authorization

        * Cluster privileges: `manage`
      operationId: dangling-indices-delete-dangling-index
      parameters:
      - in: path
        name: index_uuid
        description: The UUID of the index to delete. Use the get dangling indices
          API to find the UUID.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Uuid"
        style: simple
      - in: query
        name: accept_data_loss
        description: This parameter must be set to true to acknowledge that it will
          no longer be possible to recove data from the dangling index.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: master_timeout
        description: The period to wait for a connection to the master node.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: timeout
        description: The period to wait for a response.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
      x-state: Generally available; Added in 7.9.0
      x-codeSamples:
      - lang: Console
        source: 'DELETE /_dangling/<index-uuid>?accept_data_loss=true

          '
      - lang: Python
        source: |-
          resp = client.dangling_indices.delete_dangling_index(
              index_uuid="<index-uuid>",
              accept_data_loss=True,
          )
      - lang: JavaScript
        source: |-
          const response = await client.danglingIndices.deleteDanglingIndex({
            index_uuid: "<index-uuid>",
            accept_data_loss: "true",
          });
      - lang: Ruby
        source: |-
          response = client.dangling_indices.delete_dangling_index(
            index_uuid: "<index-uuid>",
            accept_data_loss: "true"
          )
      - lang: PHP
        source: |-
          $resp = $client->danglingIndices()->deleteDanglingIndex([
              "index_uuid" => "<index-uuid>",
              "accept_data_loss" => "true",
          ]);
      - lang: curl
        source: 'curl -X DELETE -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_dangling/<index-uuid>?accept_data_loss=true"'
      - lang: Java
        source: |
          client.danglingIndices().deleteDanglingIndex(d -> d
              .acceptDataLoss(true)
              .indexUuid("<index-uuid>")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_dangling":
    get:
      tags:
      - indices
      summary: Get the dangling indices
      description: |
        If Elasticsearch encounters index data that is absent from the current cluster state, those indices are considered to be dangling.
        For example, this can happen if you delete more than `cluster.indices.tombstones.size` indices while an Elasticsearch node is offline.

        Use this API to list dangling indices, which you can then import or delete.

        ## Required authorization

        * Cluster privileges: `manage`
      operationId: dangling-indices-list-dangling-indices
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  dangling_indices:
                    type: array
                    items:
                      "$ref": "#/components/schemas/dangling_indices.list_dangling_indices.DanglingIndex"
                required:
                - dangling_indices
              examples:
                ListDanglingIndicesResponseExample1:
                  value: |-
                    {
                      "dangling_indices": [
                       {
                        "index_name": "my-index-000001",
                        "index_uuid": "zmM4e0JtBkeUjiHD-MihPQ",
                        "creation_date_millis": 1589414451372,
                        "node_ids": [
                          "pL47UN3dAb2d5RCWP6lQ3e"
                        ]
                       }
                      ]
                    }
      x-state: Generally available; Added in 7.9.0
      x-codeSamples:
      - lang: Console
        source: 'GET /_dangling

          '
      - lang: Python
        source: resp = client.dangling_indices.list_dangling_indices()
      - lang: JavaScript
        source: const response = await client.danglingIndices.listDanglingIndices();
      - lang: Ruby
        source: response = client.dangling_indices.list_dangling_indices
      - lang: PHP
        source: "$resp = $client->danglingIndices()->listDanglingIndices();"
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_dangling"'
      - lang: Java
        source: 'client.danglingIndices().listDanglingIndices();

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/{index}/_doc/{id}":
    get:
      tags:
      - document
      summary: Get a document by its ID
      description: |
        Get a document and its source or stored fields from an index.

        By default, this API is realtime and is not affected by the refresh rate of the index (when data will become visible for search).
        In the case where stored fields are requested with the `stored_fields` parameter and the document has been updated but is not yet refreshed, the API will have to parse and analyze the source to extract the stored fields.
        To turn off realtime behavior, set the `realtime` parameter to false.

        **Source filtering**

        By default, the API returns the contents of the `_source` field unless you have used the `stored_fields` parameter or the `_source` field is turned off.
        You can turn off `_source` retrieval by using the `_source` parameter:

        ```
        GET my-index-000001/_doc/0?_source=false
        ```

        If you only need one or two fields from the `_source`, use the `_source_includes` or `_source_excludes` parameters to include or filter out particular fields.
        This can be helpful with large documents where partial retrieval can save on network overhead
        Both parameters take a comma separated list of fields or wildcard expressions.
        For example:

        ```
        GET my-index-000001/_doc/0?_source_includes=*.id&_source_excludes=entities
        ```

        If you only want to specify includes, you can use a shorter notation:

        ```
        GET my-index-000001/_doc/0?_source=*.id
        ```

        **Routing**

        If routing is used during indexing, the routing value also needs to be specified to retrieve a document.
        For example:

        ```
        GET my-index-000001/_doc/2?routing=user1
        ```

        This request gets the document with ID 2, but it is routed based on the user.
        The document is not fetched if the correct routing is not specified.

        **Distributed**

        The GET operation is hashed into a specific shard ID.
        It is then redirected to one of the replicas within that shard ID and returns the result.
        The replicas are the primary shard and its replicas within that shard ID group.
        This means that the more replicas you have, the better your GET scaling will be.

        **Versioning support**

        You can use the `version` parameter to retrieve the document only if its current version is equal to the specified one.

        Internally, Elasticsearch has marked the old document as deleted and added an entirely new document.
        The old version of the document doesn't disappear immediately, although you won't be able to access it.
        Elasticsearch cleans up deleted documents in the background as you continue to index more data.

        ## Required authorization

        * Index privileges: `read`
      operationId: get
      parameters:
      - in: path
        name: index
        description: The name of the index that contains the document.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.IndexName"
        style: simple
      - in: path
        name: id
        description: A unique document identifier.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: preference
        description: |-
          The node or shard the operation should be performed on.
          By default, the operation is randomized between the shard replicas.

          If it is set to `_local`, the operation will prefer to be run on a local allocated shard when possible.
          If it is set to a custom value, the value is used to guarantee that the same shards will be used for the same custom value.
          This can help with "jumping values" when hitting different shards in different refresh states.
          A sample value can be something like the web session ID or the user name.
        deprecated: false
        schema:
          type: string
        style: form
      - in: query
        name: realtime
        description: If `true`, the request is real-time as opposed to near-real-time.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: refresh
        description: |-
          If `true`, the request refreshes the relevant shards before retrieving the document.
          Setting it to `true` should be done after careful thought and verification that this does not cause a heavy load on the system (and slow down indexing).
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: routing
        description: A custom value used to route operations to a specific shard.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Routing"
        style: form
      - in: query
        name: _source
        description: Indicates whether to return the `_source` field (`true` or `false`)
          or lists the fields to return.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_global.search._types.SourceConfigParam"
        style: form
      - in: query
        name: _source_excludes
        description: |-
          A comma-separated list of source fields to exclude from the response.
          You can also use this parameter to exclude fields from the subset specified in `_source_includes` query parameter.
          If the `_source` parameter is `false`, this parameter is ignored.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Fields"
        style: form
      - in: query
        name: _source_exclude_vectors
        description: Whether vectors should be excluded from _source
        deprecated: false
        schema:
          type: boolean
        x-state: Generally available; Added in 9.2.0
        style: form
      - in: query
        name: _source_includes
        description: |-
          A comma-separated list of source fields to include in the response.
          If this parameter is specified, only these source fields are returned.
          You can exclude fields from this subset using the `_source_excludes` query parameter.
          If the `_source` parameter is `false`, this parameter is ignored.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Fields"
        style: form
      - in: query
        name: stored_fields
        description: |-
          A comma-separated list of stored fields to return as part of a hit.
          If no fields are specified, no stored fields are included in the response.
          If this field is specified, the `_source` parameter defaults to `false`.
          Only leaf fields can be retrieved with the `stored_fields` option.
          Object fields can't be returned; if specified, the request fails.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Fields"
        style: form
      - in: query
        name: version
        description: |-
          The version number for concurrency control.
          It must match the current version of the document for the request to succeed.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.VersionNumber"
        style: form
      - in: query
        name: version_type
        description: |+
          The version type.

          Supported values include:
            - `internal`: Use internal versioning that starts at 1 and increments with each update or delete.
            - `external`: Only index the document if the specified version is strictly higher than the version of the stored document or if there is no existing document.
            - `external_gte`: Only index the document if the specified version is equal or higher than the version of the stored document or if there is no existing document.
          NOTE: The `external_gte` version type is meant for special use cases and should be used with care.
          If used incorrectly, it can result in loss of data.

        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.VersionType"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_global.get.GetResult"
              examples:
                GetResponseExample1:
                  summary: Get a document
                  description: 'A successful response from `GET my-index-000001/_doc/0`.
                    It retrieves the JSON document with the `_id` 0 from the `my-index-000001`
                    index.

                    '
                  value: |-
                    {
                      "_index": "my-index-000001",
                      "_id": "0",
                      "_version": 1,
                      "_seq_no": 0,
                      "_primary_term": 1,
                      "found": true,
                      "_source": {
                        "@timestamp": "2099-11-15T14:12:12",
                        "http": {
                          "request": {
                            "method": "get"
                          },
                          "response": {
                            "status_code": 200,
                            "bytes": 1070000
                          },
                          "version": "1.1"
                        },
                        "source": {
                          "ip": "127.0.0.1"
                        },
                        "message": "GET /search HTTP/1.1 200 1070000",
                        "user": {
                          "id": "kimchy"
                        }
                      }
                    }
                GetResponseExample2:
                  summary: Get stored fields
                  description: 'A successful response from `GET my-index-000001/_doc/1?stored_fields=tags,counter`,
                    which retrieves a set of stored fields. Field values fetched from
                    the document itself are always returned as an array. Any requested
                    fields that are not stored (such as the counter field in this
                    example) are ignored.

                    '
                  value: |-
                    {
                      "_index": "my-index-000001",
                      "_id": "1",
                      "_version": 1,
                      "_seq_no" : 22,
                      "_primary_term" : 1,
                      "found": true,
                      "fields": {
                          "tags": [
                            "production"
                          ]
                      }
                    }
                GetResponseExample3:
                  summary: Get metadata fields
                  description: 'A successful response from `GET my-index-000001/_doc/2?routing=user1&stored_fields=tags,counter`,
                    which retrieves the `_routing` metadata field.

                    '
                  value: |-
                    {
                      "_index": "my-index-000001",
                      "_id": "2",
                      "_version": 1,
                      "_seq_no" : 13,
                      "_primary_term" : 1,
                      "_routing": "user1",
                      "found": true,
                      "fields": {
                          "tags": [
                            "env2"
                          ]
                      }
                    }
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'GET my-index-000001/_doc/1?stored_fields=tags,counter

          '
      - lang: Python
        source: |-
          resp = client.get(
              index="my-index-000001",
              id="1",
              stored_fields="tags,counter",
          )
      - lang: JavaScript
        source: |-
          const response = await client.get({
            index: "my-index-000001",
            id: 1,
            stored_fields: "tags,counter",
          });
      - lang: Ruby
        source: |-
          response = client.get(
            index: "my-index-000001",
            id: "1",
            stored_fields: "tags,counter"
          )
      - lang: PHP
        source: |-
          $resp = $client->get([
              "index" => "my-index-000001",
              "id" => "1",
              "stored_fields" => "tags,counter",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/my-index-000001/_doc/1?stored_fields=tags,counter"'
      - lang: Java
        source: |
          client.get(g -> g
              .id("1")
              .index("my-index-000001")
              .storedFields(List.of("tags","counter"))
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    post:
      tags:
      - document
      summary: 'Create or update a document in an index

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/{index}/_doc</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb put\">PUT</span>\n                      <span class=\"operation-path\">/{index}/_doc/{id}</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/{index}/_doc/{id}</span>\n
        \                     </div>\n                    \n\nAdd a JSON document
        to the specified data stream or index and make it searchable.\nIf the target
        is an index and the document already exists, the request updates the document
        and increments its version.\n\nNOTE: You cannot use this API to send update
        requests for existing documents in a data stream.\n\nIf the Elasticsearch
        security features are enabled, you must have the following index privileges
        for the target data stream, index, or index alias:\n\n* To add or overwrite
        a document using the `PUT /<target>/_doc/<_id>` request format, you must have
        the `create`, `index`, or `write` index privilege.\n* To add a document using
        the `POST /<target>/_doc/` request format, you must have the `create_doc`,
        `create`, `index`, or `write` index privilege.\n* To automatically create
        a data stream or index with this API request, you must have the `auto_configure`,
        `create_index`, or `manage` index privilege.\n\nAutomatic data stream creation
        requires a matching index template with data stream enabled.\n\nNOTE: Replica
        shards might not all be started when an indexing operation returns successfully.\nBy
        default, only the primary is required. Set `wait_for_active_shards` to change
        this default behavior.\n\n**Automatically create data streams and indices**\n\nIf
        the request's target doesn't exist and matches an index template with a `data_stream`
        definition, the index operation automatically creates the data stream.\n\nIf
        the target doesn't exist and doesn't match a data stream template, the operation
        automatically creates the index and applies any matching index templates.\n\nNOTE:
        Elasticsearch includes several built-in index templates. To avoid naming collisions
        with these templates, refer to index pattern documentation.\n\nIf no mapping
        exists, the index operation creates a dynamic mapping.\nBy default, new fields
        and objects are automatically added to the mapping if needed.\n\nAutomatic
        index creation is controlled by the `action.auto_create_index` setting.\nIf
        it is `true`, any index can be created automatically.\nYou can modify this
        setting to explicitly allow or block automatic creation of indices that match
        specified patterns or set it to `false` to turn off automatic index creation
        entirely.\nSpecify a comma-separated list of patterns you want to allow or
        prefix each pattern with `+` or `-` to indicate whether it should be allowed
        or blocked.\nWhen a list is specified, the default behaviour is to disallow.\n\nNOTE:
        The `action.auto_create_index` setting affects the automatic creation of indices
        only.\nIt does not affect the creation of data streams.\n\n**Optimistic concurrency
        control**\n\nIndex operations can be made conditional and only be performed
        if the last modification to the document was assigned the sequence number
        and primary term specified by the `if_seq_no` and `if_primary_term` parameters.\nIf
        a mismatch is detected, the operation will result in a `VersionConflictException`
        and a status code of `409`.\n\n**Routing**\n\nBy default, shard placement — or
        routing — is controlled by using a hash of the document's ID value.\nFor more
        explicit control, the value fed into the hash function used by the router
        can be directly specified on a per-operation basis using the `routing` parameter.\n\nWhen
        setting up explicit mapping, you can also use the `_routing` field to direct
        the index operation to extract the routing value from the document itself.\nThis
        does come at the (very minimal) cost of an additional document parsing pass.\nIf
        the `_routing` mapping is defined and set to be required, the index operation
        will fail if no routing value is provided or extracted.\n\nNOTE: Data streams
        do not support custom routing unless they were created with the `allow_custom_routing`
        setting enabled in the template.\n\n**Distributed**\n\nThe index operation
        is directed to the primary shard based on its route and performed on the actual
        node containing this shard.\nAfter the primary shard completes the operation,
        if needed, the update is distributed to applicable replicas.\n\n**Active shards**\n\nTo
        improve the resiliency of writes to the system, indexing operations can be
        configured to wait for a certain number of active shard copies before proceeding
        with the operation.\nIf the requisite number of active shard copies are not
        available, then the write operation must wait and retry, until either the
        requisite shard copies have started or a timeout occurs.\nBy default, write
        operations only wait for the primary shards to be active before proceeding
        (that is to say `wait_for_active_shards` is `1`).\nThis default can be overridden
        in the index settings dynamically by setting `index.write.wait_for_active_shards`.\nTo
        alter this behavior per operation, use the `wait_for_active_shards request`
        parameter.\n\nValid values are all or any positive integer up to the total
        number of configured copies per shard in the index (which is `number_of_replicas`+1).\nSpecifying
        a negative value or a number greater than the number of shard copies will
        throw an error.\n\nFor example, suppose you have a cluster of three nodes,
        A, B, and C and you create an index index with the number of replicas set
        to 3 (resulting in 4 shard copies, one more copy than there are nodes).\nIf
        you attempt an indexing operation, by default the operation will only ensure
        the primary copy of each shard is available before proceeding.\nThis means
        that even if B and C went down and A hosted the primary shard copies, the
        indexing operation would still proceed with only one copy of the data.\nIf
        `wait_for_active_shards` is set on the request to `3` (and all three nodes
        are up), the indexing operation will require 3 active shard copies before
        proceeding.\nThis requirement should be met because there are 3 active nodes
        in the cluster, each one holding a copy of the shard.\nHowever, if you set
        `wait_for_active_shards` to `all` (or to `4`, which is the same in this situation),
        the indexing operation will not proceed as you do not have all 4 copies of
        each shard active in the index.\nThe operation will timeout unless a new node
        is brought up in the cluster to host the fourth copy of the shard.\n\nIt is
        important to note that this setting greatly reduces the chances of the write
        operation not writing to the requisite number of shard copies, but it does
        not completely eliminate the possibility, because this check occurs before
        the write operation starts.\nAfter the write operation is underway, it is
        still possible for replication to fail on any number of shard copies but still
        succeed on the primary.\nThe `_shards` section of the API response reveals
        the number of shard copies on which replication succeeded and failed.\n\n**No
        operation (noop) updates**\n\nWhen updating a document by using this API,
        a new version of the document is always created even if the document hasn't
        changed.\nIf this isn't acceptable use the `_update` API with `detect_noop`
        set to `true`.\nThe `detect_noop` option isn't available on this API because
        it doesn’t fetch the old source and isn't able to compare it against the new
        source.\n\nThere isn't a definitive rule for when noop updates aren't acceptable.\nIt's
        a combination of lots of factors like how frequently your data source sends
        updates that are actually noops and how many queries per second Elasticsearch
        runs on the shard receiving the updates.\n\n**Versioning**\n\nEach indexed
        document is given a version number.\nBy default, internal versioning is used
        that starts at 1 and increments with each update, deletes included.\nOptionally,
        the version number can be set to an external value (for example, if maintained
        in a database).\nTo enable this functionality, `version_type` should be set
        to `external`.\nThe value provided must be a numeric, long value greater than
        or equal to 0, and less than around `9.2e+18`.\n\nNOTE: Versioning is completely
        real time, and is not affected by the near real time aspects of search operations.\nIf
        no version is provided, the operation runs without any version checks.\n\nWhen
        using the external version type, the system checks to see if the version number
        passed to the index request is greater than the version of the currently stored
        document.\nIf true, the document will be indexed and the new version number
        used.\nIf the value provided is less than or equal to the stored document's
        version number, a version conflict will occur and the index operation will
        fail. For example:\n\n```\nPUT my-index-000001/_doc/1?version=2&version_type=external\n{\n
        \ \"user\": {\n    \"id\": \"elkbee\"\n  }\n}\n```\n\nIn this example, the
        operation will succeed since the supplied version of 2 is higher than the
        current document version of 1.\nIf the document was already updated and its
        version was set to 2 or higher, the indexing command will fail and result
        in a conflict (409 HTTP status code).\n\nA nice side effect is that there
        is no need to maintain strict ordering of async indexing operations run as
        a result of changes to a source database, as long as version numbers from
        the source database are used.\nEven the simple case of updating the Elasticsearch
        index using data from a database is simplified if external versioning is used,
        as only the latest version will be used if the index operations arrive out
        of order.\n\n## Required authorization\n\n* Index privileges: `index`\n"
      externalDocs:
        url: https://www.elastic.co/docs/manage-data/data-store/data-streams
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/docs-index_.html
      operationId: index
      parameters:
      - "$ref": "#/components/parameters/index-index"
      - "$ref": "#/components/parameters/index-id"
      - "$ref": "#/components/parameters/index-if_primary_term"
      - "$ref": "#/components/parameters/index-if_seq_no"
      - "$ref": "#/components/parameters/index-include_source_on_error"
      - "$ref": "#/components/parameters/index-op_type"
      - "$ref": "#/components/parameters/index-pipeline"
      - "$ref": "#/components/parameters/index-refresh"
      - "$ref": "#/components/parameters/index-routing"
      - "$ref": "#/components/parameters/index-timeout"
      - "$ref": "#/components/parameters/index-version"
      - "$ref": "#/components/parameters/index-version_type"
      - "$ref": "#/components/parameters/index-wait_for_active_shards"
      - "$ref": "#/components/parameters/index-require_alias"
      - "$ref": "#/components/parameters/index-require_data_stream"
      requestBody:
        "$ref": "#/components/requestBodies/index"
      responses:
        '200':
          "$ref": "#/components/responses/index-200"
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: |-
          POST my-index-000001/_doc/
          {
            "@timestamp": "2099-11-15T13:12:00",
            "message": "GET /search HTTP/1.1 200 1070000",
            "user": {
              "id": "kimchy"
            }
          }
      - lang: Python
        source: |-
          resp = client.index(
              index="my-index-000001",
              document={
                  "@timestamp": "2099-11-15T13:12:00",
                  "message": "GET /search HTTP/1.1 200 1070000",
                  "user": {
                      "id": "kimchy"
                  }
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.index({
            index: "my-index-000001",
            document: {
              "@timestamp": "2099-11-15T13:12:00",
              message: "GET /search HTTP/1.1 200 1070000",
              user: {
                id: "kimchy",
              },
            },
          });
      - lang: Ruby
        source: |-
          response = client.index(
            index: "my-index-000001",
            body: {
              "@timestamp": "2099-11-15T13:12:00",
              "message": "GET /search HTTP/1.1 200 1070000",
              "user": {
                "id": "kimchy"
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->index([
              "index" => "my-index-000001",
              "body" => [
                  "@timestamp" => "2099-11-15T13:12:00",
                  "message" => "GET /search HTTP/1.1 200 1070000",
                  "user" => [
                      "id" => "kimchy",
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"@timestamp":"2099-11-15T13:12:00","message":"GET
          /search HTTP/1.1 200 1070000","user":{"id":"kimchy"}}'' "$ELASTICSEARCH_URL/my-index-000001/_doc/"'
      - lang: Java
        source: |
          client.index(i -> i
              .index("my-index-000001")
              .document(JsonData.fromJson("{\"@timestamp\":\"2099-11-15T13:12:00\",\"message\":\"GET /search HTTP/1.1 200 1070000\",\"user\":{\"id\":\"kimchy\"}}"))
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    delete:
      tags:
      - document
      summary: Delete a document
      description: |
        Remove a JSON document from the specified index.

        NOTE: You cannot send deletion requests directly to a data stream.
        To delete a document in a data stream, you must target the backing index containing the document.

        **Optimistic concurrency control**

        Delete operations can be made conditional and only be performed if the last modification to the document was assigned the sequence number and primary term specified by the `if_seq_no` and `if_primary_term` parameters.
        If a mismatch is detected, the operation will result in a `VersionConflictException` and a status code of `409`.

        **Versioning**

        Each document indexed is versioned.
        When deleting a document, the version can be specified to make sure the relevant document you are trying to delete is actually being deleted and it has not changed in the meantime.
        Every write operation run on a document, deletes included, causes its version to be incremented.
        The version number of a deleted document remains available for a short time after deletion to allow for control of concurrent operations.
        The length of time for which a deleted document's version remains available is determined by the `index.gc_deletes` index setting.

        **Routing**

        If routing is used during indexing, the routing value also needs to be specified to delete a document.

        If the `_routing` mapping is set to `required` and no routing value is specified, the delete API throws a `RoutingMissingException` and rejects the request.

        For example:

        ```
        DELETE /my-index-000001/_doc/1?routing=shard-1
        ```

        This request deletes the document with ID 1, but it is routed based on the user.
        The document is not deleted if the correct routing is not specified.

        **Distributed**

        The delete operation gets hashed into a specific shard ID.
        It then gets redirected into the primary shard within that ID group and replicated (if needed) to shard replicas within that ID group.

        ## Required authorization

        * Index privileges: `delete`
      operationId: delete
      parameters:
      - in: path
        name: index
        description: The name of the target index.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.IndexName"
        style: simple
      - in: path
        name: id
        description: A unique identifier for the document.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: if_primary_term
        description: Only perform the operation if the document has this primary term.
        deprecated: false
        schema:
          type: number
        style: form
      - in: query
        name: if_seq_no
        description: Only perform the operation if the document has this sequence
          number.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.SequenceNumber"
        style: form
      - in: query
        name: refresh
        description: |-
          If `true`, Elasticsearch refreshes the affected shards to make this operation visible to search.
          If `wait_for`, it waits for a refresh to make this operation visible to search.
          If `false`, it does nothing with refreshes.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Refresh"
        style: form
      - in: query
        name: routing
        description: A custom value used to route operations to a specific shard.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Routing"
        style: form
      - in: query
        name: timeout
        description: |-
          The period to wait for active shards.

          This parameter is useful for situations where the primary shard assigned to perform the delete operation might not be available when the delete operation runs.
          Some reasons for this might be that the primary shard is currently recovering from a store or undergoing relocation.
          By default, the delete operation will wait on the primary shard to become available for up to 1 minute before failing and responding with an error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: version
        description: |-
          An explicit version number for concurrency control.
          It must match the current version of the document for the request to succeed.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.VersionNumber"
        style: form
      - in: query
        name: version_type
        description: |+
          The version type.

          Supported values include:
            - `internal`: Use internal versioning that starts at 1 and increments with each update or delete.
            - `external`: Only index the document if the specified version is strictly higher than the version of the stored document or if there is no existing document.
            - `external_gte`: Only index the document if the specified version is equal or higher than the version of the stored document or if there is no existing document.
          NOTE: The `external_gte` version type is meant for special use cases and should be used with care.
          If used incorrectly, it can result in loss of data.

        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.VersionType"
        style: form
      - in: query
        name: wait_for_active_shards
        description: |-
          The minimum number of shard copies that must be active before proceeding with the operation.
          You can set it to `all` or any positive integer up to the total number of shards in the index (`number_of_replicas+1`).
          The default value of `1` means it waits for each primary shard to be active.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.WaitForActiveShards"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.WriteResponseBase"
              examples:
                DeleteResponseExample1:
                  description: A successful response from `DELETE /my-index-000001/_doc/1`,
                    which deletes the JSON document 1 from the `my-index-000001` index.
                  value: |-
                    {
                      "_shards": {
                        "total": 2,
                        "failed": 0,
                        "successful": 2
                      },
                      "_index": "my-index-000001",
                      "_id": "1",
                      "_version": 2,
                      "_primary_term": 1,
                      "_seq_no": 5,
                      "result": "deleted"
                    }
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'DELETE /my-index-000001/_doc/1

          '
      - lang: Python
        source: |-
          resp = client.delete(
              index="my-index-000001",
              id="1",
          )
      - lang: JavaScript
        source: |-
          const response = await client.delete({
            index: "my-index-000001",
            id: 1,
          });
      - lang: Ruby
        source: |-
          response = client.delete(
            index: "my-index-000001",
            id: "1"
          )
      - lang: PHP
        source: |-
          $resp = $client->delete([
              "index" => "my-index-000001",
              "id" => "1",
          ]);
      - lang: curl
        source: 'curl -X DELETE -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/my-index-000001/_doc/1"'
      - lang: Java
        source: |
          client.delete(d -> d
              .id("1")
              .index("my-index-000001")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    head:
      tags:
      - document
      summary: Check a document
      description: |-
        Verify that a document exists.
        For example, check to see if a document with the `_id` 0 exists:

        ```
        HEAD my-index-000001/_doc/0
        ```

        If the document exists, the API returns a status code of `200 - OK`.
        If the document doesn’t exist, the API returns `404 - Not Found`.

        **Versioning support**

        You can use the `version` parameter to check the document only if its current version is equal to the specified one.

        Internally, Elasticsearch has marked the old document as deleted and added an entirely new document.
        The old version of the document doesn't disappear immediately, although you won't be able to access it.
        Elasticsearch cleans up deleted documents in the background as you continue to index more data.
      operationId: exists
      parameters:
      - in: path
        name: index
        description: |-
          A comma-separated list of data streams, indices, and aliases.
          It supports wildcards (`*`).
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.IndexName"
        style: simple
      - in: path
        name: id
        description: A unique document identifier.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: preference
        description: |-
          The node or shard the operation should be performed on.
          By default, the operation is randomized between the shard replicas.

          If it is set to `_local`, the operation will prefer to be run on a local allocated shard when possible.
          If it is set to a custom value, the value is used to guarantee that the same shards will be used for the same custom value.
          This can help with "jumping values" when hitting different shards in different refresh states.
          A sample value can be something like the web session ID or the user name.
        deprecated: false
        schema:
          type: string
        style: form
      - in: query
        name: realtime
        description: If `true`, the request is real-time as opposed to near-real-time.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: refresh
        description: |-
          If `true`, the request refreshes the relevant shards before retrieving the document.
          Setting it to `true` should be done after careful thought and verification that this does not cause a heavy load on the system (and slow down indexing).
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: routing
        description: A custom value used to route operations to a specific shard.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Routing"
        style: form
      - in: query
        name: _source
        description: Indicates whether to return the `_source` field (`true` or `false`)
          or lists the fields to return.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_global.search._types.SourceConfigParam"
        style: form
      - in: query
        name: _source_excludes
        description: |-
          A comma-separated list of source fields to exclude from the response.
          You can also use this parameter to exclude fields from the subset specified in `_source_includes` query parameter.
          If the `_source` parameter is `false`, this parameter is ignored.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Fields"
        style: form
      - in: query
        name: _source_includes
        description: |-
          A comma-separated list of source fields to include in the response.
          If this parameter is specified, only these source fields are returned.
          You can exclude fields from this subset using the `_source_excludes` query parameter.
          If the `_source` parameter is `false`, this parameter is ignored.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Fields"
        style: form
      - in: query
        name: stored_fields
        description: |-
          A comma-separated list of stored fields to return as part of a hit.
          If no fields are specified, no stored fields are included in the response.
          If this field is specified, the `_source` parameter defaults to `false`.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Fields"
        style: form
      - in: query
        name: version
        description: |-
          Explicit version number for concurrency control.
          The specified version must match the current version of the document for the request to succeed.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.VersionNumber"
        style: form
      - in: query
        name: version_type
        description: |+
          The version type.

          Supported values include:
            - `internal`: Use internal versioning that starts at 1 and increments with each update or delete.
            - `external`: Only index the document if the specified version is strictly higher than the version of the stored document or if there is no existing document.
            - `external_gte`: Only index the document if the specified version is equal or higher than the version of the stored document or if there is no existing document.
          NOTE: The `external_gte` version type is meant for special use cases and should be used with care.
          If used incorrectly, it can result in loss of data.

        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.VersionType"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json: {}
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'HEAD my-index-000001/_doc/0

          '
      - lang: Python
        source: |-
          resp = client.exists(
              index="my-index-000001",
              id="0",
          )
      - lang: JavaScript
        source: |-
          const response = await client.exists({
            index: "my-index-000001",
            id: 0,
          });
      - lang: Ruby
        source: |-
          response = client.exists(
            index: "my-index-000001",
            id: "0"
          )
      - lang: PHP
        source: |-
          $resp = $client->exists([
              "index" => "my-index-000001",
              "id" => "0",
          ]);
      - lang: curl
        source: 'curl --head -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/my-index-000001/_doc/0"'
      - lang: Java
        source: |
          client.exists(e -> e
              .id("0")
              .index("my-index-000001")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/{index}/_delete_by_query":
    post:
      tags:
      - document
      summary: Delete documents
      description: |
        Deletes documents that match the specified query.

        If the Elasticsearch security features are enabled, you must have the following index privileges for the target data stream, index, or alias:

        * `read`
        * `delete` or `write`

        You can specify the query criteria in the request URI or the request body using the same syntax as the search API.
        When you submit a delete by query request, Elasticsearch gets a snapshot of the data stream or index when it begins processing the request and deletes matching documents using internal versioning.
        If a document changes between the time that the snapshot is taken and the delete operation is processed, it results in a version conflict and the delete operation fails.

        NOTE: Documents with a version equal to 0 cannot be deleted using delete by query because internal versioning does not support 0 as a valid version number.

        While processing a delete by query request, Elasticsearch performs multiple search requests sequentially to find all of the matching documents to delete.
        A bulk delete request is performed for each batch of matching documents.
        If a search or bulk request is rejected, the requests are retried up to 10 times, with exponential back off.
        If the maximum retry limit is reached, processing halts and all failed requests are returned in the response.
        Any delete requests that completed successfully still stick, they are not rolled back.

        You can opt to count version conflicts instead of halting and returning by setting `conflicts` to `proceed`.
        Note that if you opt to count version conflicts the operation could attempt to delete more documents from the source than `max_docs` until it has successfully deleted `max_docs documents`, or it has gone through every document in the source query.

        **Throttling delete requests**

        To control the rate at which delete by query issues batches of delete operations, you can set `requests_per_second` to any positive decimal number.
        This pads each batch with a wait time to throttle the rate.
        Set `requests_per_second` to `-1` to disable throttling.

        Throttling uses a wait time between batches so that the internal scroll requests can be given a timeout that takes the request padding into account.
        The padding time is the difference between the batch size divided by the `requests_per_second` and the time spent writing.
        By default the batch size is `1000`, so if `requests_per_second` is set to `500`:

        ```
        target_time = 1000 / 500 per second = 2 seconds
        wait_time = target_time - write_time = 2 seconds - .5 seconds = 1.5 seconds
        ```

        Since the batch is issued as a single `_bulk` request, large batch sizes cause Elasticsearch to create many requests and wait before starting the next set.
        This is "bursty" instead of "smooth".

        **Slicing**

        Delete by query supports sliced scroll to parallelize the delete process.
        This can improve efficiency and provide a convenient way to break the request down into smaller parts.

        Setting `slices` to `auto` lets Elasticsearch choose the number of slices to use.
        This setting will use one slice per shard, up to a certain limit.
        If there are multiple source data streams or indices, it will choose the number of slices based on the index or backing index with the smallest number of shards.
        Adding slices to the delete by query operation creates sub-requests which means it has some quirks:

        * You can see these requests in the tasks APIs. These sub-requests are "child" tasks of the task for the request with slices.
        * Fetching the status of the task for the request with slices only contains the status of completed slices.
        * These sub-requests are individually addressable for things like cancellation and rethrottling.
        * Rethrottling the request with `slices` will rethrottle the unfinished sub-request proportionally.
        * Canceling the request with `slices` will cancel each sub-request.
        * Due to the nature of `slices` each sub-request won't get a perfectly even portion of the documents. All documents will be addressed, but some slices may be larger than others. Expect larger slices to have a more even distribution.
        * Parameters like `requests_per_second` and `max_docs` on a request with `slices` are distributed proportionally to each sub-request. Combine that with the earlier point about distribution being uneven and you should conclude that using `max_docs` with `slices` might not result in exactly `max_docs` documents being deleted.
        * Each sub-request gets a slightly different snapshot of the source data stream or index though these are all taken at approximately the same time.

        If you're slicing manually or otherwise tuning automatic slicing, keep in mind that:

        * Query performance is most efficient when the number of slices is equal to the number of shards in the index or backing index. If that number is large (for example, 500), choose a lower number as too many `slices` hurts performance. Setting `slices` higher than the number of shards generally does not improve efficiency and adds overhead.
        * Delete performance scales linearly across available resources with the number of slices.

        Whether query or delete performance dominates the runtime depends on the documents being reindexed and cluster resources.

        **Cancel a delete by query operation**

        Any delete by query can be canceled using the task cancel API. For example:

        ```
        POST _tasks/r1A2WoRbTwKZ516z6NEs5A:36619/_cancel
        ```

        The task ID can be found by using the get tasks API.

        Cancellation should happen quickly but might take a few seconds.
        The get task status API will continue to list the delete by query task until this task checks that it has been cancelled and terminates itself.

        ## Required authorization

        * Index privileges: `read`,`delete`
      operationId: delete-by-query
      parameters:
      - in: path
        name: index
        description: |-
          A comma-separated list of data streams, indices, and aliases to search.
          It supports wildcards (`*`).
          To search all data streams or indices, omit this parameter or use `*` or `_all`.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Indices"
        style: simple
      - in: query
        name: allow_no_indices
        description: |-
          If `false`, the request returns an error if any wildcard expression, index alias, or `_all` value targets only missing or closed indices.
          This behavior applies even if the request targets other open indices.
          For example, a request targeting `foo*,bar*` returns an error if an index starts with `foo` but no index starts with `bar`.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: analyzer
        description: |-
          Analyzer to use for the query string.
          This parameter can be used only when the `q` query string parameter is specified.
        deprecated: false
        schema:
          type: string
        style: form
      - in: query
        name: analyze_wildcard
        description: |-
          If `true`, wildcard and prefix queries are analyzed.
          This parameter can be used only when the `q` query string parameter is specified.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: conflicts
        description: |+
          What to do if delete by query hits version conflicts: `abort` or `proceed`.

          Supported values include:
            - `abort`: Stop reindexing if there are conflicts.
            - `proceed`: Continue reindexing even if there are conflicts.

        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Conflicts"
        style: form
      - in: query
        name: default_operator
        description: |-
          The default operator for query string query: `and` or `or`.
          This parameter can be used only when the `q` query string parameter is specified.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.query_dsl.Operator"
        style: form
      - in: query
        name: df
        description: |-
          The field to use as default where no field prefix is given in the query string.
          This parameter can be used only when the `q` query string parameter is specified.
        deprecated: false
        schema:
          type: string
        style: form
      - in: query
        name: expand_wildcards
        description: |+
          The type of index that wildcard patterns can match.
          If the request can target data streams, this argument determines whether wildcard expressions match hidden data streams.
          It supports comma-separated values, such as `open,hidden`.

          Supported values include:
            - `all`: Match any data stream or index, including hidden ones.
            - `open`: Match open, non-hidden indices. Also matches any non-hidden data stream.
            - `closed`: Match closed, non-hidden indices. Also matches any non-hidden data stream. Data streams cannot be closed.
            - `hidden`: Match hidden data streams and hidden indices. Must be combined with `open`, `closed`, or `both`.
            - `none`: Wildcard expressions are not accepted.

        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.ExpandWildcards"
        style: form
      - in: query
        name: from
        description: Skips the specified number of documents.
        deprecated: false
        schema:
          type: number
        style: form
      - in: query
        name: ignore_unavailable
        description: If `false`, the request returns an error if it targets a missing
          or closed index.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: lenient
        description: |-
          If `true`, format-based query failures (such as providing text to a numeric field) in the query string will be ignored.
          This parameter can be used only when the `q` query string parameter is specified.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: max_docs
        description: |-
          The maximum number of documents to process.
          Defaults to all documents.
          When set to a value less then or equal to `scroll_size`, a scroll will not be used to retrieve the results for the operation.
        deprecated: false
        schema:
          type: number
        style: form
      - in: query
        name: preference
        description: |-
          The node or shard the operation should be performed on.
          It is random by default.
        deprecated: false
        schema:
          type: string
        style: form
      - in: query
        name: refresh
        description: |-
          If `true`, Elasticsearch refreshes all shards involved in the delete by query after the request completes.
          This is different than the delete API's `refresh` parameter, which causes just the shard that received the delete request to be refreshed.
          Unlike the delete API, it does not support `wait_for`.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: request_cache
        description: |-
          If `true`, the request cache is used for this request.
          Defaults to the index-level setting.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: requests_per_second
        description: The throttle for this request in sub-requests per second.
        deprecated: false
        schema:
          type: number
        style: form
      - in: query
        name: routing
        description: A custom value used to route operations to a specific shard.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Routing"
        style: form
      - in: query
        name: q
        description: A query in the Lucene query string syntax.
        deprecated: false
        schema:
          type: string
        style: form
      - in: query
        name: scroll
        description: The period to retain the search context for scrolling.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: scroll_size
        description: The size of the scroll request that powers the operation.
        deprecated: false
        schema:
          type: number
        style: form
      - in: query
        name: search_timeout
        description: |-
          The explicit timeout for each search request.
          It defaults to no timeout.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: search_type
        description: |+
          The type of the search operation.
          Available options include `query_then_fetch` and `dfs_query_then_fetch`.

          Supported values include:
            - `query_then_fetch`: Documents are scored using local term and document frequencies for the shard. This is usually faster but less accurate.
            - `dfs_query_then_fetch`: Documents are scored using global term and document frequencies across all shards. This is usually slower but more accurate.

        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.SearchType"
        style: form
      - in: query
        name: slices
        description: The number of slices this task should be divided into.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Slices"
        style: form
      - in: query
        name: sort
        description: A comma-separated list of `<field>:<direction>` pairs.
        deprecated: true
        schema:
          type: array
          items:
            type: string
        style: form
      - in: query
        name: stats
        description: The specific `tag` of the request for logging and statistical
          purposes.
        deprecated: false
        schema:
          type: array
          items:
            type: string
        style: form
      - in: query
        name: terminate_after
        description: |-
          The maximum number of documents to collect for each shard.
          If a query reaches this limit, Elasticsearch terminates the query early.
          Elasticsearch collects documents before sorting.

          Use with caution.
          Elasticsearch applies this parameter to each shard handling the request.
          When possible, let Elasticsearch perform early termination automatically.
          Avoid specifying this parameter for requests that target data streams with backing indices across multiple data tiers.
        deprecated: false
        schema:
          type: number
        style: form
      - in: query
        name: timeout
        description: The period each deletion request waits for active shards.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: version
        description: If `true`, returns the document version as part of a hit.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: wait_for_active_shards
        description: |-
          The number of shard copies that must be active before proceeding with the operation.
          Set to `all` or any positive integer up to the total number of shards in the index (`number_of_replicas+1`).
          The `timeout` value controls how long each write request waits for unavailable shards to become available.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.WaitForActiveShards"
        style: form
      - in: query
        name: wait_for_completion
        description: |-
          If `true`, the request blocks until the operation is complete.
          If `false`, Elasticsearch performs some preflight checks, launches the request, and returns a task you can use to cancel or get the status of the task. Elasticsearch creates a record of this task as a document at `.tasks/task/${taskId}`. When you are done with a task, you should delete the task document so Elasticsearch can reclaim the space.
        deprecated: false
        schema:
          type: boolean
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                max_docs:
                  description: The maximum number of documents to delete.
                  type: number
                query:
                  description: The documents to delete specified with Query DSL.
                  allOf:
                  - "$ref": "#/components/schemas/_types.query_dsl.QueryContainer"
                slice:
                  description: Slice the request manually using the provided slice
                    ID and total number of slices.
                  allOf:
                  - "$ref": "#/components/schemas/_types.SlicedScroll"
                sort:
                  description: A sort object that specifies the order of deleted documents.
                  allOf:
                  - "$ref": "#/components/schemas/_types.Sort"
            examples:
              DeleteByQueryRequestExample1:
                summary: Delete all documents
                description: Run `POST /my-index-000001,my-index-000002/_delete_by_query`
                  to delete all documents from multiple data streams or indices.
                value: |-
                  {
                    "query": {
                      "match_all": {}
                    }
                  }
              DeleteByQueryRequestExample2:
                summary: Delete a single document
                description: Run `POST my-index-000001/_delete_by_query` to delete
                  a document by using a unique attribute.
                value: |-
                  {
                    "query": {
                      "term": {
                        "user.id": "kimchy"
                      }
                    },
                    "max_docs": 1
                  }
              DeleteByQueryRequestExample3:
                summary: Slice manually
                description: 'Run `POST my-index-000001/_delete_by_query` to slice
                  a delete by query manually. Provide a slice ID and total number
                  of slices.

                  '
                value: |-
                  {
                    "slice": {
                      "id": 0,
                      "max": 2
                    },
                    "query": {
                      "range": {
                        "http.response.bytes": {
                          "lt": 2000000
                        }
                      }
                    }
                  }
              DeleteByQueryRequestExample4:
                summary: Automatic slicing
                description: 'Run `POST my-index-000001/_delete_by_query?refresh&slices=5`
                  to let delete by query automatically parallelize using sliced scroll
                  to slice on `_id`. The `slices` query parameter value specifies
                  the number of slices to use.

                  '
                value: |-
                  {
                    "query": {
                      "range": {
                        "http.response.bytes": {
                          "lt": 2000000
                        }
                      }
                    }
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  batches:
                    description: The number of scroll responses pulled back by the
                      delete by query.
                    type: number
                  deleted:
                    description: The number of documents that were successfully deleted.
                    type: number
                  failures:
                    description: |-
                      An array of failures if there were any unrecoverable errors during the process.
                      If this array is not empty, the request ended abnormally because of those failures.
                      Delete by query is implemented using batches and any failures cause the entire process to end but all failures in the current batch are collected into the array.
                      You can use the `conflicts` option to prevent reindex from ending on version conflicts.
                    type: array
                    items:
                      "$ref": "#/components/schemas/_types.BulkIndexByScrollFailure"
                  noops:
                    description: |-
                      This field is always equal to zero for delete by query.
                      It exists only so that delete by query, update by query, and reindex APIs return responses with the same structure.
                    type: number
                  requests_per_second:
                    description: The number of requests per second effectively run
                      during the delete by query.
                    type: number
                  retries:
                    description: |-
                      The number of retries attempted by delete by query.
                      `bulk` is the number of bulk actions retried.
                      `search` is the number of search actions retried.
                    allOf:
                    - "$ref": "#/components/schemas/_types.Retries"
                  slice_id:
                    type: number
                  slices:
                    description: Status of each slice if the delete by query was sliced
                    type: array
                    items:
                      "$ref": "#/components/schemas/_types.ReindexStatus"
                  task:
                    allOf:
                    - "$ref": "#/components/schemas/_types.TaskId"
                  throttled:
                    allOf:
                    - "$ref": "#/components/schemas/_types.Duration"
                  throttled_millis:
                    description: The number of milliseconds the request slept to conform
                      to `requests_per_second`.
                    allOf:
                    - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
                  throttled_until:
                    allOf:
                    - "$ref": "#/components/schemas/_types.Duration"
                  throttled_until_millis:
                    description: |-
                      This field should always be equal to zero in a `_delete_by_query` response.
                      It has meaning only when using the task API, where it indicates the next time (in milliseconds since epoch) a throttled request will be run again in order to conform to `requests_per_second`.
                    allOf:
                    - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
                  timed_out:
                    description: If `true`, some requests run during the delete by
                      query operation timed out.
                    type: boolean
                  took:
                    description: The number of milliseconds from start to end of the
                      whole operation.
                    allOf:
                    - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
                  total:
                    description: The number of documents that were successfully processed.
                    type: number
                  version_conflicts:
                    description: The number of version conflicts that the delete by
                      query hit.
                    type: number
              examples:
                DeleteByQueryResponseExample1:
                  description: A successful response from `POST /my-index-000001/_delete_by_query`.
                  value: |-
                    {
                      "took" : 147,
                      "timed_out": false,
                      "total": 119,
                      "deleted": 119,
                      "batches": 1,
                      "version_conflicts": 0,
                      "noops": 0,
                      "retries": {
                        "bulk": 0,
                        "search": 0
                      },
                      "throttled_millis": 0,
                      "requests_per_second": -1.0,
                      "throttled_until_millis": 0,
                      "failures" : [ ]
                    }
      x-state: Generally available; Added in 5.0.0
      x-codeSamples:
      - lang: Console
        source: |-
          POST /my-index-000001,my-index-000002/_delete_by_query
          {
            "query": {
              "match_all": {}
            }
          }
      - lang: Python
        source: |-
          resp = client.delete_by_query(
              index="my-index-000001,my-index-000002",
              query={
                  "match_all": {}
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.deleteByQuery({
            index: "my-index-000001,my-index-000002",
            query: {
              match_all: {},
            },
          });
      - lang: Ruby
        source: |-
          response = client.delete_by_query(
            index: "my-index-000001,my-index-000002",
            body: {
              "query": {
                "match_all": {}
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->deleteByQuery([
              "index" => "my-index-000001,my-index-000002",
              "body" => [
                  "query" => [
                      "match_all" => new ArrayObject([]),
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"query":{"match_all":{}}}'' "$ELASTICSEARCH_URL/my-index-000001,my-index-000002/_delete_by_query"'
      - lang: Java
        source: |
          client.deleteByQuery(d -> d
              .index(List.of("my-index-000001","my-index-000002"))
              .query(q -> q
                  .matchAll(m -> m)
              )
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_delete_by_query/{task_id}/_rethrottle":
    post:
      tags:
      - document
      summary: Throttle a delete by query operation
      description: |-
        Change the number of requests per second for a particular delete by query operation.
        Rethrottling that speeds up the query takes effect immediately but rethrotting that slows down the query takes effect after completing the current batch to prevent scroll timeouts.
      operationId: delete-by-query-rethrottle
      parameters:
      - in: path
        name: task_id
        description: The ID for the task.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.TaskId"
        style: simple
      - in: query
        name: requests_per_second
        description: |-
          The throttle for this request in sub-requests per second.
          To disable throttling, set it to `-1`.
        required: true
        deprecated: false
        schema:
          type: number
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/tasks._types.TaskListResponseBase"
      x-state: Generally available; Added in 6.5.0
      x-codeSamples:
      - lang: Console
        source: 'POST _delete_by_query/r1A2WoRbTwKZ516z6NEs5A:36619/_rethrottle?requests_per_second=-1

          '
      - lang: Python
        source: |-
          resp = client.delete_by_query_rethrottle(
              task_id="r1A2WoRbTwKZ516z6NEs5A:36619",
              requests_per_second="-1",
          )
      - lang: JavaScript
        source: |-
          const response = await client.deleteByQueryRethrottle({
            task_id: "r1A2WoRbTwKZ516z6NEs5A:36619",
            requests_per_second: "-1",
          });
      - lang: Ruby
        source: |-
          response = client.delete_by_query_rethrottle(
            task_id: "r1A2WoRbTwKZ516z6NEs5A:36619",
            requests_per_second: "-1"
          )
      - lang: PHP
        source: |-
          $resp = $client->deleteByQueryRethrottle([
              "task_id" => "r1A2WoRbTwKZ516z6NEs5A:36619",
              "requests_per_second" => "-1",
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_delete_by_query/r1A2WoRbTwKZ516z6NEs5A:36619/_rethrottle?requests_per_second=-1"'
      - lang: Java
        source: |
          client.deleteByQueryRethrottle(d -> d
              .requestsPerSecond(-1.0F)
              .taskId("r1A2WoRbTwKZ516z6NEs5A:36619")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_scripts/{id}":
    get:
      tags:
      - script
      summary: Get a script or search template
      description: |
        Retrieves a stored script or search template.

        ## Required authorization

        * Cluster privileges: `manage`
      operationId: get-script
      parameters:
      - in: path
        name: id
        description: The identifier for the stored script or search template.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: master_timeout
        description: |-
          The period to wait for the master node.
          If the master node is not available before the timeout expires, the request fails and returns an error.
          It can also be set to `-1` to indicate that the request should never timeout.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  _id:
                    allOf:
                    - "$ref": "#/components/schemas/_types.Id"
                  found:
                    type: boolean
                  script:
                    allOf:
                    - "$ref": "#/components/schemas/_types.StoredScript"
                required:
                - _id
                - found
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'GET _scripts/my-search-template

          '
      - lang: Python
        source: |-
          resp = client.get_script(
              id="my-search-template",
          )
      - lang: JavaScript
        source: |-
          const response = await client.getScript({
            id: "my-search-template",
          });
      - lang: Ruby
        source: |-
          response = client.get_script(
            id: "my-search-template"
          )
      - lang: PHP
        source: |-
          $resp = $client->getScript([
              "id" => "my-search-template",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_scripts/my-search-template"'
      - lang: Java
        source: |
          client.getScript(g -> g
              .id("my-search-template")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    delete:
      tags:
      - script
      summary: Delete a script or search template
      description: |
        Deletes a stored script or search template.

        ## Required authorization

        * Cluster privileges: `manage`
      operationId: delete-script
      parameters:
      - in: path
        name: id
        description: The identifier for the stored script or search template.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: master_timeout
        description: |-
          The period to wait for a connection to the master node.
          If no response is received before the timeout expires, the request fails and returns an error.
          It can also be set to `-1` to indicate that the request should never timeout.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: timeout
        description: |-
          The period to wait for a response.
          If no response is received before the timeout expires, the request fails and returns an error.
          It can also be set to `-1` to indicate that the request should never timeout.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'DELETE _scripts/my-search-template

          '
      - lang: Python
        source: |-
          resp = client.delete_script(
              id="my-search-template",
          )
      - lang: JavaScript
        source: |-
          const response = await client.deleteScript({
            id: "my-search-template",
          });
      - lang: Ruby
        source: |-
          response = client.delete_script(
            id: "my-search-template"
          )
      - lang: PHP
        source: |-
          $resp = $client->deleteScript([
              "id" => "my-search-template",
          ]);
      - lang: curl
        source: 'curl -X DELETE -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_scripts/my-search-template"'
      - lang: Java
        source: |
          client.deleteScript(d -> d
              .id("my-search-template")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_enrich/policy/{name}":
    get:
      tags:
      - enrich
      summary: 'Get an enrich policy

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_enrich/policy</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_enrich/policy/{name}</span>\n
        \                     </div>\n                    \n\nReturns information
        about an enrich policy."
      operationId: enrich-get-policy
      parameters:
      - "$ref": "#/components/parameters/enrich.get_policy-name"
      - "$ref": "#/components/parameters/enrich.get_policy-master_timeout"
      responses:
        '200':
          "$ref": "#/components/responses/enrich.get_policy-200"
      x-state: Generally available; Added in 7.5.0
      x-codeSamples:
      - lang: Console
        source: 'GET /_enrich/policy/my-policy

          '
      - lang: Python
        source: |-
          resp = client.enrich.get_policy(
              name="my-policy",
          )
      - lang: JavaScript
        source: |-
          const response = await client.enrich.getPolicy({
            name: "my-policy",
          });
      - lang: Ruby
        source: |-
          response = client.enrich.get_policy(
            name: "my-policy"
          )
      - lang: PHP
        source: |-
          $resp = $client->enrich()->getPolicy([
              "name" => "my-policy",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_enrich/policy/my-policy"'
      - lang: Java
        source: |
          client.enrich().getPolicy(g -> g
              .name("my-policy")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    put:
      tags:
      - enrich
      summary: Create an enrich policy
      description: Creates an enrich policy.
      operationId: enrich-put-policy
      parameters:
      - in: path
        name: name
        description: Name of the enrich policy to create or update.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Name"
        style: simple
      - in: query
        name: master_timeout
        description: Period to wait for a connection to the master node.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                geo_match:
                  description: Matches enrich data to incoming documents based on
                    a `geo_shape` query.
                  allOf:
                  - "$ref": "#/components/schemas/enrich._types.Policy"
                match:
                  description: Matches enrich data to incoming documents based on
                    a `term` query.
                  allOf:
                  - "$ref": "#/components/schemas/enrich._types.Policy"
                range:
                  description: Matches a number, date, or IP address in incoming documents
                    to a range in the enrich index based on a `term` query.
                  allOf:
                  - "$ref": "#/components/schemas/enrich._types.Policy"
            examples:
              EnrichPutPolicyExample1:
                description: An example body for a `PUT /_enrich/policy/postal_policy`
                  request.
                value: |-
                  {
                    "geo_match": {
                      "indices": "postal_codes",
                      "match_field": "location",
                      "enrich_fields": [ "location", "postal_code" ]
                    }
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
      x-state: Generally available; Added in 7.5.0
      x-codeSamples:
      - lang: Console
        source: |-
          PUT /_enrich/policy/postal_policy
          {
            "geo_match": {
              "indices": "postal_codes",
              "match_field": "location",
              "enrich_fields": [ "location", "postal_code" ]
            }
          }
      - lang: Python
        source: |-
          resp = client.enrich.put_policy(
              name="postal_policy",
              geo_match={
                  "indices": "postal_codes",
                  "match_field": "location",
                  "enrich_fields": [
                      "location",
                      "postal_code"
                  ]
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.enrich.putPolicy({
            name: "postal_policy",
            geo_match: {
              indices: "postal_codes",
              match_field: "location",
              enrich_fields: ["location", "postal_code"],
            },
          });
      - lang: Ruby
        source: |-
          response = client.enrich.put_policy(
            name: "postal_policy",
            body: {
              "geo_match": {
                "indices": "postal_codes",
                "match_field": "location",
                "enrich_fields": [
                  "location",
                  "postal_code"
                ]
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->enrich()->putPolicy([
              "name" => "postal_policy",
              "body" => [
                  "geo_match" => [
                      "indices" => "postal_codes",
                      "match_field" => "location",
                      "enrich_fields" => array(
                          "location",
                          "postal_code",
                      ),
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"geo_match":{"indices":"postal_codes","match_field":"location","enrich_fields":["location","postal_code"]}}''
          "$ELASTICSEARCH_URL/_enrich/policy/postal_policy"'
      - lang: Java
        source: |
          client.enrich().putPolicy(p -> p
              .geoMatch(g -> g
                  .enrichFields(List.of("location","postal_code"))
                  .indices("postal_codes")
                  .matchField("location")
              )
              .name("postal_policy")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    delete:
      tags:
      - enrich
      summary: Delete an enrich policy
      description: Deletes an existing enrich policy and its enrich index.
      operationId: enrich-delete-policy
      parameters:
      - in: path
        name: name
        description: Enrich policy to delete.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Name"
        style: simple
      - in: query
        name: master_timeout
        description: Period to wait for a connection to the master node.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
      x-state: Generally available; Added in 7.5.0
      x-codeSamples:
      - lang: Console
        source: 'DELETE /_enrich/policy/my-policy

          '
      - lang: Python
        source: |-
          resp = client.enrich.delete_policy(
              name="my-policy",
          )
      - lang: JavaScript
        source: |-
          const response = await client.enrich.deletePolicy({
            name: "my-policy",
          });
      - lang: Ruby
        source: |-
          response = client.enrich.delete_policy(
            name: "my-policy"
          )
      - lang: PHP
        source: |-
          $resp = $client->enrich()->deletePolicy([
              "name" => "my-policy",
          ]);
      - lang: curl
        source: 'curl -X DELETE -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_enrich/policy/my-policy"'
      - lang: Java
        source: |
          client.enrich().deletePolicy(d -> d
              .name("my-policy")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_enrich/policy/{name}/_execute":
    put:
      tags:
      - enrich
      summary: Run an enrich policy
      description: Create the enrich index for an existing enrich policy.
      operationId: enrich-execute-policy
      parameters:
      - in: path
        name: name
        description: Enrich policy to execute.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Name"
        style: simple
      - in: query
        name: master_timeout
        description: Period to wait for a connection to the master node.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: wait_for_completion
        description: If `true`, the request blocks other enrich policy execution requests
          until complete.
        deprecated: false
        schema:
          type: boolean
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    allOf:
                    - "$ref": "#/components/schemas/enrich.execute_policy.ExecuteEnrichPolicyStatus"
                  task:
                    allOf:
                    - "$ref": "#/components/schemas/_types.TaskId"
      x-state: Generally available; Added in 7.5.0
      x-codeSamples:
      - lang: Console
        source: 'PUT /_enrich/policy/my-policy/_execute?wait_for_completion=false

          '
      - lang: Python
        source: |-
          resp = client.enrich.execute_policy(
              name="my-policy",
              wait_for_completion=False,
          )
      - lang: JavaScript
        source: |-
          const response = await client.enrich.executePolicy({
            name: "my-policy",
            wait_for_completion: "false",
          });
      - lang: Ruby
        source: |-
          response = client.enrich.execute_policy(
            name: "my-policy",
            wait_for_completion: "false"
          )
      - lang: PHP
        source: |-
          $resp = $client->enrich()->executePolicy([
              "name" => "my-policy",
              "wait_for_completion" => "false",
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_enrich/policy/my-policy/_execute?wait_for_completion=false"'
      - lang: Java
        source: |
          client.enrich().executePolicy(e -> e
              .name("my-policy")
              .waitForCompletion(false)
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_enrich/_stats":
    get:
      tags:
      - enrich
      summary: Get enrich stats
      description: Returns enrich coordinator statistics and information about enrich
        policies that are currently executing.
      operationId: enrich-stats
      parameters:
      - in: query
        name: master_timeout
        description: Period to wait for a connection to the master node.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  coordinator_stats:
                    description: Objects containing information about each coordinating
                      ingest node for configured enrich processors.
                    type: array
                    items:
                      "$ref": "#/components/schemas/enrich.stats.CoordinatorStats"
                  executing_policies:
                    description: Objects containing information about each enrich
                      policy that is currently executing.
                    type: array
                    items:
                      "$ref": "#/components/schemas/enrich.stats.ExecutingPolicy"
                  cache_stats:
                    description: Objects containing information about the enrich cache
                      stats on each ingest node.
                    x-state: Generally available; Added in 7.16.0
                    type: array
                    items:
                      "$ref": "#/components/schemas/enrich.stats.CacheStats"
                required:
                - coordinator_stats
                - executing_policies
      x-state: Generally available; Added in 7.5.0
      x-codeSamples:
      - lang: Console
        source: 'GET /_enrich/_stats

          '
      - lang: Python
        source: resp = client.enrich.stats()
      - lang: JavaScript
        source: const response = await client.enrich.stats();
      - lang: Ruby
        source: response = client.enrich.stats
      - lang: PHP
        source: "$resp = $client->enrich()->stats();"
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_enrich/_stats"'
      - lang: Java
        source: 'client.enrich().stats(s -> s);

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_eql/search/{id}":
    get:
      tags:
      - eql
      summary: Get async EQL search results
      description: Get the current status and available results for an async EQL search
        or a stored synchronous EQL search.
      operationId: eql-get
      parameters:
      - in: path
        name: id
        description: Identifier for the search.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: keep_alive
        description: |-
          Period for which the search and its results are stored on the cluster.
          Defaults to the keep_alive value set by the search’s EQL search API request.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: wait_for_completion_timeout
        description: |-
          Timeout duration to wait for the request to finish.
          Defaults to no timeout, meaning the request waits for complete search results.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/eql._types.EqlSearchResponseBase"
      x-state: Generally available; Added in 7.9.0
      x-codeSamples:
      - lang: Console
        source: 'GET /_eql/search/FmNJRUZ1YWZCU3dHY1BIOUhaenVSRkEaaXFlZ3h4c1RTWFNocDdnY2FSaERnUTozNDE=?wait_for_completion_timeout=2s

          '
      - lang: Python
        source: |-
          resp = client.eql.get(
              id="FmNJRUZ1YWZCU3dHY1BIOUhaenVSRkEaaXFlZ3h4c1RTWFNocDdnY2FSaERnUTozNDE=",
              wait_for_completion_timeout="2s",
          )
      - lang: JavaScript
        source: |-
          const response = await client.eql.get({
            id: "FmNJRUZ1YWZCU3dHY1BIOUhaenVSRkEaaXFlZ3h4c1RTWFNocDdnY2FSaERnUTozNDE=",
            wait_for_completion_timeout: "2s",
          });
      - lang: Ruby
        source: |-
          response = client.eql.get(
            id: "FmNJRUZ1YWZCU3dHY1BIOUhaenVSRkEaaXFlZ3h4c1RTWFNocDdnY2FSaERnUTozNDE=",
            wait_for_completion_timeout: "2s"
          )
      - lang: PHP
        source: |-
          $resp = $client->eql()->get([
              "id" => "FmNJRUZ1YWZCU3dHY1BIOUhaenVSRkEaaXFlZ3h4c1RTWFNocDdnY2FSaERnUTozNDE=",
              "wait_for_completion_timeout" => "2s",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_eql/search/FmNJRUZ1YWZCU3dHY1BIOUhaenVSRkEaaXFlZ3h4c1RTWFNocDdnY2FSaERnUTozNDE=?wait_for_completion_timeout=2s"'
      - lang: Java
        source: |
          client.eql().get(g -> g
              .id("FmNJRUZ1YWZCU3dHY1BIOUhaenVSRkEaaXFlZ3h4c1RTWFNocDdnY2FSaERnUTozNDE=")
              .waitForCompletionTimeout(w -> w
                  .offset(2)
              )
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    delete:
      tags:
      - eql
      summary: Delete an async EQL search
      description: |-
        Delete an async EQL search or a stored synchronous EQL search.
        The API also deletes results for the search.
      operationId: eql-delete
      parameters:
      - in: path
        name: id
        description: |-
          Identifier for the search to delete.
          A search ID is provided in the EQL search API's response for an async search.
          A search ID is also provided if the request’s `keep_on_completion` parameter is `true`.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
      x-state: Generally available; Added in 7.9.0
      x-codeSamples:
      - lang: Console
        source: 'DELETE /_eql/search/FmNJRUZ1YWZCU3dHY1BIOUhaenVSRkEaaXFlZ3h4c1RTWFNocDdnY2FSaERnUTozNDE=

          '
      - lang: Python
        source: |-
          resp = client.eql.delete(
              id="FmNJRUZ1YWZCU3dHY1BIOUhaenVSRkEaaXFlZ3h4c1RTWFNocDdnY2FSaERnUTozNDE=",
          )
      - lang: JavaScript
        source: |-
          const response = await client.eql.delete({
            id: "FmNJRUZ1YWZCU3dHY1BIOUhaenVSRkEaaXFlZ3h4c1RTWFNocDdnY2FSaERnUTozNDE=",
          });
      - lang: Ruby
        source: |-
          response = client.eql.delete(
            id: "FmNJRUZ1YWZCU3dHY1BIOUhaenVSRkEaaXFlZ3h4c1RTWFNocDdnY2FSaERnUTozNDE="
          )
      - lang: PHP
        source: |-
          $resp = $client->eql()->delete([
              "id" => "FmNJRUZ1YWZCU3dHY1BIOUhaenVSRkEaaXFlZ3h4c1RTWFNocDdnY2FSaERnUTozNDE=",
          ]);
      - lang: curl
        source: 'curl -X DELETE -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_eql/search/FmNJRUZ1YWZCU3dHY1BIOUhaenVSRkEaaXFlZ3h4c1RTWFNocDdnY2FSaERnUTozNDE="'
      - lang: Java
        source: |
          client.eql().delete(d -> d
              .id("FmNJRUZ1YWZCU3dHY1BIOUhaenVSRkEaaXFlZ3h4c1RTWFNocDdnY2FSaERnUTozNDE=")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_eql/search/status/{id}":
    get:
      tags:
      - eql
      summary: Get the async EQL status
      description: Get the current status for an async EQL search or a stored synchronous
        EQL search without returning results.
      operationId: eql-get-status
      parameters:
      - in: path
        name: id
        description: Identifier for the search.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    description: Identifier for the search.
                    allOf:
                    - "$ref": "#/components/schemas/_types.Id"
                  is_partial:
                    description: If true, the search request is still executing. If
                      false, the search is completed.
                    type: boolean
                  is_running:
                    description: If true, the response does not contain complete search
                      results. This could be because either the search is still running
                      (is_running status is false), or because it is already completed
                      (is_running status is true) and results are partial due to failures
                      or timeouts.
                    type: boolean
                  start_time_in_millis:
                    description: For a running search shows a timestamp when the eql
                      search started, in milliseconds since the Unix epoch.
                    allOf:
                    - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
                  expiration_time_in_millis:
                    description: Shows a timestamp when the eql search will be expired,
                      in milliseconds since the Unix epoch. When this time is reached,
                      the search and its results are deleted, even if the search is
                      still ongoing.
                    allOf:
                    - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
                  completion_status:
                    description: For a completed search shows the http status code
                      of the completed search.
                    type: number
                required:
                - id
                - is_partial
                - is_running
              examples:
                EqlGetStatusResponseExample1:
                  description: A successful response for getting status information
                    for an async EQL search.
                  value: |-
                    {
                      "id": "FmNJRUZ1YWZCU3dHY1BIOUhaenVSRkEaaXFlZ3h4c1RTWFNocDdnY2FSaERnUTozNDE=",
                      "is_running" : true,
                      "is_partial" : true,
                      "start_time_in_millis" : 1611690235000,
                      "expiration_time_in_millis" : 1611690295000
                    }
      x-state: Generally available; Added in 7.9.0
      x-codeSamples:
      - lang: Console
        source: 'GET /_eql/search/status/FmNJRUZ1YWZCU3dHY1BIOUhaenVSRkEaaXFlZ3h4c1RTWFNocDdnY2FSaERnUTozNDE=

          '
      - lang: Python
        source: |-
          resp = client.eql.get_status(
              id="FmNJRUZ1YWZCU3dHY1BIOUhaenVSRkEaaXFlZ3h4c1RTWFNocDdnY2FSaERnUTozNDE=",
          )
      - lang: JavaScript
        source: |-
          const response = await client.eql.getStatus({
            id: "FmNJRUZ1YWZCU3dHY1BIOUhaenVSRkEaaXFlZ3h4c1RTWFNocDdnY2FSaERnUTozNDE=",
          });
      - lang: Ruby
        source: |-
          response = client.eql.get_status(
            id: "FmNJRUZ1YWZCU3dHY1BIOUhaenVSRkEaaXFlZ3h4c1RTWFNocDdnY2FSaERnUTozNDE="
          )
      - lang: PHP
        source: |-
          $resp = $client->eql()->getStatus([
              "id" => "FmNJRUZ1YWZCU3dHY1BIOUhaenVSRkEaaXFlZ3h4c1RTWFNocDdnY2FSaERnUTozNDE=",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_eql/search/status/FmNJRUZ1YWZCU3dHY1BIOUhaenVSRkEaaXFlZ3h4c1RTWFNocDdnY2FSaERnUTozNDE="'
      - lang: Java
        source: |
          client.eql().getStatus(g -> g
              .id("FmNJRUZ1YWZCU3dHY1BIOUhaenVSRkEaaXFlZ3h4c1RTWFNocDdnY2FSaERnUTozNDE=")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/{index}/_eql/search":
    post:
      tags:
      - eql
      summary: 'Get EQL search results

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/{index}/_eql/search</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/{index}/_eql/search</span>\n
        \                     </div>\n                    \n\nReturns search results
        for an Event Query Language (EQL) query.\nEQL assumes each document in a data
        stream or index corresponds to an event."
      externalDocs:
        url: https://www.elastic.co/docs/explore-analyze/query-filter/languages/eql
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/eql-search-api.html
      operationId: eql-search
      parameters:
      - "$ref": "#/components/parameters/eql.search-index"
      - "$ref": "#/components/parameters/eql.search-allow_no_indices"
      - "$ref": "#/components/parameters/eql.search-allow_partial_search_results"
      - "$ref": "#/components/parameters/eql.search-allow_partial_sequence_results"
      - "$ref": "#/components/parameters/eql.search-expand_wildcards"
      - "$ref": "#/components/parameters/eql.search-ccs_minimize_roundtrips"
      - "$ref": "#/components/parameters/eql.search-ignore_unavailable"
      - "$ref": "#/components/parameters/eql.search-keep_alive"
      - "$ref": "#/components/parameters/eql.search-keep_on_completion"
      - "$ref": "#/components/parameters/eql.search-wait_for_completion_timeout"
      requestBody:
        "$ref": "#/components/requestBodies/eql.search"
      responses:
        '200':
          "$ref": "#/components/responses/eql.search-200"
      x-state: Generally available; Added in 7.9.0
      x-codeSamples:
      - lang: Console
        source: |-
          GET /my-data-stream/_eql/search
          {
            "query": """
              process where (process.name == "cmd.exe" and process.pid != 2013)
            """
          }
      - lang: Python
        source: |-
          resp = client.eql.search(
              index="my-data-stream",
              query="\n    process where (process.name == \"cmd.exe\" and process.pid != 2013)\n  ",
          )
      - lang: JavaScript
        source: |-
          const response = await client.eql.search({
            index: "my-data-stream",
            query:
              '\n    process where (process.name == "cmd.exe" and process.pid != 2013)\n  ',
          });
      - lang: Ruby
        source: |-
          response = client.eql.search(
            index: "my-data-stream",
            body: {
              "query": "\n    process where (process.name == \"cmd.exe\" and process.pid != 2013)\n  "
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->eql()->search([
              "index" => "my-data-stream",
              "body" => [
                  "query" => "\n    process where (process.name == \"cmd.exe\" and process.pid != 2013)\n  ",
              ],
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"query":"\n    process where (process.name == \"cmd.exe\"
          and process.pid != 2013)\n  "}'' "$ELASTICSEARCH_URL/my-data-stream/_eql/search"'
      - lang: Java
        source: |
          client.eql().search(s -> s
              .index("my-data-stream")
              .query("
              process where (process.name == "cmd.exe" and process.pid != 2013)
            ")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_query/async":
    post:
      tags:
      - esql
      summary: Run an async ES|QL query
      description: |
        Asynchronously run an ES|QL (Elasticsearch query language) query, monitor its progress, and retrieve results when they become available.

        The API accepts the same parameters and request body as the synchronous query API, along with additional async related properties.

        ## Required authorization

        * Index privileges: `read`
      externalDocs:
        url: https://www.elastic.co/docs/explore-analyze/query-filter/languages/esql
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/esql-async-query-api.html
      operationId: esql-async-query
      parameters:
      - in: query
        name: allow_partial_results
        description: |-
          If `true`, partial results will be returned if there are shard failures, but the query can continue to execute on other clusters and shards.
          If `false`, the query will fail if there are any failures.

          To override the default behavior, you can set the `esql.query.allow_partial_results` cluster setting to `false`.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: delimiter
        description: |-
          The character to use between values within a CSV row.
          It is valid only for the CSV format.
        deprecated: false
        schema:
          type: string
        style: form
      - in: query
        name: drop_null_columns
        description: |-
          Indicates whether columns that are entirely `null` will be removed from the `columns` and `values` portion of the results.
          If `true`, the response will include an extra section under the name `all_columns` which has the name of all the columns.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: format
        description: |-
          A short version of the Accept header, e.g. json, yaml.

          `csv`, `tsv`, and `txt` formats will return results in a tabular format, excluding other metadata fields from the response.

          For async requests, nothing will be returned if the async query doesn't finish within the timeout.
          The query ID and running status are available in the `X-Elasticsearch-Async-Id` and `X-Elasticsearch-Async-Is-Running` HTTP headers of the response, respectively.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/esql._types.EsqlFormat"
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                columnar:
                  description: By default, ES|QL returns results as rows. For example,
                    FROM returns each individual document as one row. For the JSON,
                    YAML, CBOR and smile formats, ES|QL can return the results in
                    a columnar fashion where one row represents all the values of
                    a certain column in the results.
                  type: boolean
                filter:
                  description: Specify a Query DSL query in the filter parameter to
                    filter the set of documents that an ES|QL query runs on.
                  allOf:
                  - "$ref": "#/components/schemas/_types.query_dsl.QueryContainer"
                time_zone:
                  description: Sets the default timezone of the query.
                  x-state: Generally available; Added in 9.4.0
                  type: string
                locale:
                  description: Returns results (especially dates) formatted per the
                    conventions of the locale.
                  type: string
                params:
                  description: To avoid any attempts of hacking or code injection,
                    extract the values in a separate list of parameters. Use question
                    mark placeholders (?) in the query string for each of the parameters.
                  type: array
                  items:
                    "$ref": "#/components/schemas/_types.FieldValue"
                profile:
                  description: |-
                    If provided and `true` the response will include an extra `profile` object
                    with information on how the query was executed. This information is for human debugging
                    and its format can change at any time but it can give some insight into the performance
                    of each part of the query.
                  type: boolean
                query:
                  description: The ES|QL query API accepts an ES|QL query string in
                    the query parameter, runs it, and returns the results.
                  type: string
                tables:
                  description: |-
                    Tables to use with the LOOKUP operation. The top level key is the table
                    name and the next level key is the column name.
                  type: object
                  additionalProperties:
                    type: object
                    additionalProperties:
                      "$ref": "#/components/schemas/esql._types.TableValuesContainer"
                include_ccs_metadata:
                  description: |-
                    When set to `true` and performing a cross-cluster/cross-project query, the response will include an extra `_clusters`
                    object with information about the clusters that participated in the search along with info such as shards
                    count.
                  default: false
                  type: boolean
                include_execution_metadata:
                  description: |-
                    When set to `true`, the response will include an extra `_clusters`
                    object with information about the clusters that participated in the search along with info such as shards
                    count.
                    This is similar to `include_ccs_metadata`, but it also returns metadata when the query is not CCS/CPS
                  default: false
                  type: boolean
                wait_for_completion_timeout:
                  description: |-
                    The period to wait for the request to finish.
                    By default, the request waits for 1 second for the query results.
                    If the query completes during this period, results are returned
                    Otherwise, a query ID is returned that can later be used to retrieve the results.
                  default: 1s
                  allOf:
                  - "$ref": "#/components/schemas/_types.Duration"
                keep_alive:
                  description: |-
                    The period for which the query and its results are stored in the cluster.
                    The default period is five days.
                    When this period expires, the query and its results are deleted, even if the query is still ongoing.
                    If the `keep_on_completion` parameter is false, Elasticsearch only stores async queries that do not complete within the period set by the `wait_for_completion_timeout` parameter, regardless of this value.
                  default: 5d
                  allOf:
                  - "$ref": "#/components/schemas/_types.Duration"
                keep_on_completion:
                  description: |-
                    Indicates whether the query and its results are stored in the cluster.
                    If false, the query and its results are stored in the cluster only if the request does not complete during the period set by the `wait_for_completion_timeout` parameter.
                  default: false
                  type: boolean
              required:
              - query
            examples:
              AsyncQueryRequestExample1:
                value: |-
                  {
                    "query": """
                      FROM library,remote-*:library
                      | EVAL year = DATE_TRUNC(1 YEARS, release_date)
                      | STATS MAX(page_count) BY year
                      | SORT year
                      | LIMIT 5
                    """,
                    "wait_for_completion_timeout": "2s",
                    "include_ccs_metadata": true
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/esql._types.AsyncEsqlResult"
      x-state: Generally available; Added in 8.13.0
      x-codeSamples:
      - lang: Console
        source: |-
          POST /_query/async
          {
            "query": """
              FROM library,remote-*:library
              | EVAL year = DATE_TRUNC(1 YEARS, release_date)
              | STATS MAX(page_count) BY year
              | SORT year
              | LIMIT 5
            """,
            "wait_for_completion_timeout": "2s",
            "include_ccs_metadata": true
          }
      - lang: Python
        source: |-
          resp = client.esql.async_query(
              query="\n    FROM library,remote-*:library\n    | EVAL year = DATE_TRUNC(1 YEARS, release_date)\n    | STATS MAX(page_count) BY year\n    | SORT year\n    | LIMIT 5\n  ",
              wait_for_completion_timeout="2s",
              include_ccs_metadata=True,
          )
      - lang: JavaScript
        source: |-
          const response = await client.esql.asyncQuery({
            query:
              "\n    FROM library,remote-*:library\n    | EVAL year = DATE_TRUNC(1 YEARS, release_date)\n    | STATS MAX(page_count) BY year\n    | SORT year\n    | LIMIT 5\n  ",
            wait_for_completion_timeout: "2s",
            include_ccs_metadata: true,
          });
      - lang: Ruby
        source: |-
          response = client.esql.async_query(
            body: {
              "query": "\n    FROM library,remote-*:library\n    | EVAL year = DATE_TRUNC(1 YEARS, release_date)\n    | STATS MAX(page_count) BY year\n    | SORT year\n    | LIMIT 5\n  ",
              "wait_for_completion_timeout": "2s",
              "include_ccs_metadata": true
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->esql()->asyncQuery([
              "body" => [
                  "query" => "\n    FROM library,remote-*:library\n    | EVAL year = DATE_TRUNC(1 YEARS, release_date)\n    | STATS MAX(page_count) BY year\n    | SORT year\n    | LIMIT 5\n  ",
                  "wait_for_completion_timeout" => "2s",
                  "include_ccs_metadata" => true,
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"query":"\n    FROM library,remote-*:library\n    |
          EVAL year = DATE_TRUNC(1 YEARS, release_date)\n    | STATS MAX(page_count)
          BY year\n    | SORT year\n    | LIMIT 5\n  ","wait_for_completion_timeout":"2s","include_ccs_metadata":true}''
          "$ELASTICSEARCH_URL/_query/async"'
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_query/async/{id}":
    get:
      tags:
      - esql
      summary: Get async ES|QL query results
      description: |-
        Get the current status and available results or stored results for an ES|QL asynchronous query.
        If the Elasticsearch security features are enabled, only the user who first submitted the ES|QL query can retrieve the results using this API.
      externalDocs:
        url: https://www.elastic.co/docs/explore-analyze/query-filter/languages/esql
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/esql-async-query-get-api.html
      operationId: esql-async-query-get
      parameters:
      - in: path
        name: id
        description: |-
          The unique identifier of the query.
          A query ID is provided in the ES|QL async query API response for a query that does not complete in the designated time.
          A query ID is also provided when the request was submitted with the `keep_on_completion` parameter set to `true`.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: drop_null_columns
        description: |-
          Indicates whether columns that are entirely `null` will be removed from the `columns` and `values` portion of the results.
          If `true`, the response will include an extra section under the name `all_columns` which has the name of all the columns.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: format
        description: A short version of the Accept header, for example `json` or `yaml`.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/esql._types.EsqlFormat"
        style: form
      - in: query
        name: keep_alive
        description: |-
          The period for which the query and its results are stored in the cluster.
          When this period expires, the query and its results are deleted, even if the query is still ongoing.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: wait_for_completion_timeout
        description: |-
          The period to wait for the request to finish.
          By default, the request waits for complete query results.
          If the request completes during the period specified in this parameter, complete query results are returned.
          Otherwise, the response returns an `is_running` value of `true` and no results.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/esql._types.AsyncEsqlResult"
      x-state: Generally available; Added in 8.13.0
      x-codeSamples:
      - lang: Console
        source: 'GET /_query/async/FmNJRUZ1YWZCU3dHY1BIOUhaenVSRkEaaXFlZ3h4c1RTWFNocDdnY2FSaERnUTozNDE=?wait_for_completion_timeout=30s

          '
      - lang: Python
        source: |-
          resp = client.esql.async_query_get(
              id="FmNJRUZ1YWZCU3dHY1BIOUhaenVSRkEaaXFlZ3h4c1RTWFNocDdnY2FSaERnUTozNDE=",
              wait_for_completion_timeout="30s",
          )
      - lang: JavaScript
        source: |-
          const response = await client.esql.asyncQueryGet({
            id: "FmNJRUZ1YWZCU3dHY1BIOUhaenVSRkEaaXFlZ3h4c1RTWFNocDdnY2FSaERnUTozNDE=",
            wait_for_completion_timeout: "30s",
          });
      - lang: Ruby
        source: |-
          response = client.esql.async_query_get(
            id: "FmNJRUZ1YWZCU3dHY1BIOUhaenVSRkEaaXFlZ3h4c1RTWFNocDdnY2FSaERnUTozNDE=",
            wait_for_completion_timeout: "30s"
          )
      - lang: PHP
        source: |-
          $resp = $client->esql()->asyncQueryGet([
              "id" => "FmNJRUZ1YWZCU3dHY1BIOUhaenVSRkEaaXFlZ3h4c1RTWFNocDdnY2FSaERnUTozNDE=",
              "wait_for_completion_timeout" => "30s",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_query/async/FmNJRUZ1YWZCU3dHY1BIOUhaenVSRkEaaXFlZ3h4c1RTWFNocDdnY2FSaERnUTozNDE=?wait_for_completion_timeout=30s"'
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    delete:
      tags:
      - esql
      summary: Delete an async ES|QL query
      description: |-
        If the query is still running, it is cancelled.
        Otherwise, the stored results are deleted.

        If the Elasticsearch security features are enabled, only the following users can use this API to delete a query:

        * The authenticated user that submitted the original query request
        * Users with the `cancel_task` cluster privilege
      externalDocs:
        url: https://www.elastic.co/docs/explore-analyze/query-filter/languages/esql
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/esql-async-query-delete-api.html
      operationId: esql-async-query-delete
      parameters:
      - in: path
        name: id
        description: |-
          The unique identifier of the query.
          A query ID is provided in the ES|QL async query API response for a query that does not complete in the designated time.
          A query ID is also provided when the request was submitted with the `keep_on_completion` parameter set to `true`.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
      x-state: Generally available; Added in 8.13.0
      x-codeSamples:
      - lang: Console
        source: 'DELETE /_query/async/FmdMX2pIang3UWhLRU5QS0lqdlppYncaMUpYQ05oSkpTc3kwZ21EdC1tbFJXQToxOTI=

          '
      - lang: Python
        source: |-
          resp = client.esql.async_query_delete(
              id="FmdMX2pIang3UWhLRU5QS0lqdlppYncaMUpYQ05oSkpTc3kwZ21EdC1tbFJXQToxOTI=",
          )
      - lang: JavaScript
        source: |-
          const response = await client.esql.asyncQueryDelete({
            id: "FmdMX2pIang3UWhLRU5QS0lqdlppYncaMUpYQ05oSkpTc3kwZ21EdC1tbFJXQToxOTI=",
          });
      - lang: Ruby
        source: |-
          response = client.esql.async_query_delete(
            id: "FmdMX2pIang3UWhLRU5QS0lqdlppYncaMUpYQ05oSkpTc3kwZ21EdC1tbFJXQToxOTI="
          )
      - lang: PHP
        source: |-
          $resp = $client->esql()->asyncQueryDelete([
              "id" => "FmdMX2pIang3UWhLRU5QS0lqdlppYncaMUpYQ05oSkpTc3kwZ21EdC1tbFJXQToxOTI=",
          ]);
      - lang: curl
        source: 'curl -X DELETE -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_query/async/FmdMX2pIang3UWhLRU5QS0lqdlppYncaMUpYQ05oSkpTc3kwZ21EdC1tbFJXQToxOTI="'
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_query/async/{id}/stop":
    post:
      tags:
      - esql
      summary: Stop async ES|QL query
      description: |-
        This API interrupts the query execution and returns the results so far.
        If the Elasticsearch security features are enabled, only the user who first submitted the ES|QL query can stop it.
      externalDocs:
        url: https://www.elastic.co/docs/explore-analyze/query-filter/languages/esql
      operationId: esql-async-query-stop
      parameters:
      - in: path
        name: id
        description: |-
          The unique identifier of the query.
          A query ID is provided in the ES|QL async query API response for a query that does not complete in the designated time.
          A query ID is also provided when the request was submitted with the `keep_on_completion` parameter set to `true`.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: drop_null_columns
        description: |-
          Indicates whether columns that are entirely `null` will be removed from the `columns` and `values` portion of the results.
          If `true`, the response will include an extra section under the name `all_columns` which has the name of all the columns.
        deprecated: false
        schema:
          type: boolean
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/esql._types.EsqlResult"
      x-state: Generally available; Added in 8.18.0
      x-codeSamples:
      - lang: Console
        source: 'POST /_query/async/FkpMRkJGS1gzVDRlM3g4ZzMyRGlLbkEaTXlJZHdNT09TU2VTZVBoNDM3cFZMUToxMDM=/stop

          '
      - lang: Python
        source: |-
          resp = client.esql.async_query_stop(
              id="FkpMRkJGS1gzVDRlM3g4ZzMyRGlLbkEaTXlJZHdNT09TU2VTZVBoNDM3cFZMUToxMDM=",
          )
      - lang: JavaScript
        source: |-
          const response = await client.esql.asyncQueryStop({
            id: "FkpMRkJGS1gzVDRlM3g4ZzMyRGlLbkEaTXlJZHdNT09TU2VTZVBoNDM3cFZMUToxMDM=",
          });
      - lang: Ruby
        source: |-
          response = client.esql.async_query_stop(
            id: "FkpMRkJGS1gzVDRlM3g4ZzMyRGlLbkEaTXlJZHdNT09TU2VTZVBoNDM3cFZMUToxMDM="
          )
      - lang: PHP
        source: |-
          $resp = $client->esql()->asyncQueryStop([
              "id" => "FkpMRkJGS1gzVDRlM3g4ZzMyRGlLbkEaTXlJZHdNT09TU2VTZVBoNDM3cFZMUToxMDM=",
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_query/async/FkpMRkJGS1gzVDRlM3g4ZzMyRGlLbkEaTXlJZHdNT09TU2VTZVBoNDM3cFZMUToxMDM=/stop"'
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_query/queries/{id}":
    get:
      tags:
      - esql
      summary: Get a specific running ES|QL query information
      description: |
        Returns an object extended information about a running ES|QL query.

        ## Required authorization

        * Cluster privileges: `monitor_esql`
      operationId: esql-get-query
      parameters:
      - in: path
        name: id
        description: The query ID
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: number
                  node:
                    allOf:
                    - "$ref": "#/components/schemas/_types.NodeId"
                  start_time_millis:
                    type: number
                  running_time_nanos:
                    type: number
                  query:
                    type: string
                  coordinating_node:
                    allOf:
                    - "$ref": "#/components/schemas/_types.NodeId"
                  data_nodes:
                    type: array
                    items:
                      "$ref": "#/components/schemas/_types.NodeId"
                required:
                - id
                - node
                - start_time_millis
                - running_time_nanos
                - query
                - coordinating_node
                - data_nodes
      x-state: Technical preview; Added in 9.1.0
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_query/queries":
    get:
      tags:
      - esql
      summary: Get running ES|QL queries information
      description: |
        Returns an object containing IDs and other information about the running ES|QL queries.

        ## Required authorization

        * Cluster privileges: `monitor_esql`
      operationId: esql-list-queries
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  queries:
                    type: object
                    additionalProperties:
                      "$ref": "#/components/schemas/esql.list_queries.Body"
                required:
                - queries
      x-state: Technical preview; Added in 9.1.0
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_query":
    post:
      tags:
      - esql
      summary: Run an ES|QL query
      description: Get search results for an ES|QL (Elasticsearch query language)
        query.
      externalDocs:
        url: https://www.elastic.co/docs/explore-analyze/query-filter/languages/esql
      operationId: esql-query
      parameters:
      - in: query
        name: format
        description: |-
          A short version of the Accept header, e.g. json, yaml.

          `csv`, `tsv`, and `txt` formats will return results in a tabular format, excluding other metadata fields from the response.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/esql._types.EsqlFormat"
        style: form
      - in: query
        name: delimiter
        description: The character to use between values within a CSV row. Only valid
          for the CSV format.
        deprecated: false
        schema:
          type: string
        style: form
      - in: query
        name: drop_null_columns
        description: |-
          Should columns that are entirely `null` be removed from the `columns` and `values` portion of the results?
          Defaults to `false`. If `true` then the response will include an extra section under the name `all_columns` which has the name of all columns.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: allow_partial_results
        description: |-
          If `true`, partial results will be returned if there are shard failures, but the query can continue to execute on other clusters and shards.
          If `false`, the query will fail if there are any failures.

          To override the default behavior, you can set the `esql.query.allow_partial_results` cluster setting to `false`.
        deprecated: false
        schema:
          type: boolean
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                columnar:
                  description: By default, ES|QL returns results as rows. For example,
                    FROM returns each individual document as one row. For the JSON,
                    YAML, CBOR and smile formats, ES|QL can return the results in
                    a columnar fashion where one row represents all the values of
                    a certain column in the results.
                  type: boolean
                filter:
                  description: Specify a Query DSL query in the filter parameter to
                    filter the set of documents that an ES|QL query runs on.
                  allOf:
                  - "$ref": "#/components/schemas/_types.query_dsl.QueryContainer"
                time_zone:
                  description: Sets the default timezone of the query.
                  x-state: Generally available; Added in 9.4.0
                  type: string
                locale:
                  description: Returns results (especially dates) formatted per the
                    conventions of the locale.
                  type: string
                params:
                  description: To avoid any attempts of hacking or code injection,
                    extract the values in a separate list of parameters. Use question
                    mark placeholders (?) in the query string for each of the parameters.
                  allOf:
                  - "$ref": "#/components/schemas/esql._types.ESQLParams"
                profile:
                  description: |-
                    If provided and `true` the response will include an extra `profile` object
                    with information on how the query was executed. This information is for human debugging
                    and its format can change at any time but it can give some insight into the performance
                    of each part of the query.
                  type: boolean
                query:
                  description: The ES|QL query API accepts an ES|QL query string in
                    the query parameter, runs it, and returns the results.
                  type: string
                tables:
                  description: |-
                    Tables to use with the LOOKUP operation. The top level key is the table
                    name and the next level key is the column name.
                  type: object
                  additionalProperties:
                    type: object
                    additionalProperties:
                      "$ref": "#/components/schemas/esql._types.TableValuesContainer"
                include_ccs_metadata:
                  description: |-
                    When set to `true` and performing a cross-cluster/cross-project query, the response will include an extra `_clusters`
                    object with information about the clusters that participated in the search along with info such as shards
                    count.
                  default: false
                  type: boolean
                include_execution_metadata:
                  description: |-
                    When set to `true`, the response will include an extra `_clusters`
                    object with information about the clusters that participated in the search along with info such as shards
                    count.
                    This is similar to `include_ccs_metadata`, but it also returns metadata when the query is not CCS/CPS
                  default: false
                  type: boolean
              required:
              - query
            examples:
              QueryRequestExample1:
                description: Run `POST /_query` to get results for an ES|QL query.
                value: |-
                  {
                    "query": """
                      FROM library,remote-*:library
                      | EVAL year = DATE_TRUNC(1 YEARS, release_date)
                      | STATS MAX(page_count) BY year
                      | SORT year
                      | LIMIT 5
                    """,
                    "include_ccs_metadata": true
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/esql._types.EsqlResult"
      x-state: Generally available; Added in 8.11.0
      x-codeSamples:
      - lang: Console
        source: |-
          POST /_query
          {
            "query": """
              FROM library,remote-*:library
              | EVAL year = DATE_TRUNC(1 YEARS, release_date)
              | STATS MAX(page_count) BY year
              | SORT year
              | LIMIT 5
            """,
            "include_ccs_metadata": true
          }
      - lang: Python
        source: |-
          resp = client.esql.query(
              query="\n    FROM library,remote-*:library\n    | EVAL year = DATE_TRUNC(1 YEARS, release_date)\n    | STATS MAX(page_count) BY year\n    | SORT year\n    | LIMIT 5\n  ",
              include_ccs_metadata=True,
          )
      - lang: JavaScript
        source: |-
          const response = await client.esql.query({
            query:
              "\n    FROM library,remote-*:library\n    | EVAL year = DATE_TRUNC(1 YEARS, release_date)\n    | STATS MAX(page_count) BY year\n    | SORT year\n    | LIMIT 5\n  ",
            include_ccs_metadata: true,
          });
      - lang: Ruby
        source: |-
          response = client.esql.query(
            body: {
              "query": "\n    FROM library,remote-*:library\n    | EVAL year = DATE_TRUNC(1 YEARS, release_date)\n    | STATS MAX(page_count) BY year\n    | SORT year\n    | LIMIT 5\n  ",
              "include_ccs_metadata": true
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->esql()->query([
              "body" => [
                  "query" => "\n    FROM library,remote-*:library\n    | EVAL year = DATE_TRUNC(1 YEARS, release_date)\n    | STATS MAX(page_count) BY year\n    | SORT year\n    | LIMIT 5\n  ",
                  "include_ccs_metadata" => true,
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"query":"\n    FROM library,remote-*:library\n    |
          EVAL year = DATE_TRUNC(1 YEARS, release_date)\n    | STATS MAX(page_count)
          BY year\n    | SORT year\n    | LIMIT 5\n  ","include_ccs_metadata":true}''
          "$ELASTICSEARCH_URL/_query"'
      - lang: Java
        source: |
          client.esql().query(q -> q
              .includeCcsMetadata(true)
              .query("
              FROM library,remote-*:library
              | EVAL year = DATE_TRUNC(1 YEARS, release_date)
              | STATS MAX(page_count) BY year
              | SORT year
              | LIMIT 5
            ")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/{index}/_source/{id}":
    get:
      tags:
      - document
      summary: Get a document's source
      description: |
        Get the source of a document.
        For example:

        ```
        GET my-index-000001/_source/1
        ```

        You can use the source filtering parameters to control which parts of the `_source` are returned:

        ```
        GET my-index-000001/_source/1/?_source_includes=*.id&_source_excludes=entities
        ```

        ## Required authorization

        * Index privileges: `read`
      externalDocs:
        url: https://www.elastic.co/docs/reference/elasticsearch/mapping-reference/mapping-source-field
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/docs-get.html
      operationId: get-source
      parameters:
      - in: path
        name: index
        description: The name of the index that contains the document.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.IndexName"
        style: simple
      - in: path
        name: id
        description: A unique document identifier.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: preference
        description: |-
          The node or shard the operation should be performed on.
          By default, the operation is randomized between the shard replicas.
        deprecated: false
        schema:
          type: string
        style: form
      - in: query
        name: realtime
        description: If `true`, the request is real-time as opposed to near-real-time.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: refresh
        description: |-
          If `true`, the request refreshes the relevant shards before retrieving the document.
          Setting it to `true` should be done after careful thought and verification that this does not cause a heavy load on the system (and slow down indexing).
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: routing
        description: A custom value used to route operations to a specific shard.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Routing"
        style: form
      - in: query
        name: _source
        description: Indicates whether to return the `_source` field (`true` or `false`)
          or lists the fields to return.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_global.search._types.SourceConfigParam"
        style: form
      - in: query
        name: _source_excludes
        description: A comma-separated list of source fields to exclude in the response.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Fields"
        style: form
      - in: query
        name: _source_includes
        description: A comma-separated list of source fields to include in the response.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Fields"
        style: form
      - in: query
        name: version
        description: |-
          The version number for concurrency control.
          It must match the current version of the document for the request to succeed.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.VersionNumber"
        style: form
      - in: query
        name: version_type
        description: |+
          The version type.

          Supported values include:
            - `internal`: Use internal versioning that starts at 1 and increments with each update or delete.
            - `external`: Only index the document if the specified version is strictly higher than the version of the stored document or if there is no existing document.
            - `external_gte`: Only index the document if the specified version is equal or higher than the version of the stored document or if there is no existing document.
          NOTE: The `external_gte` version type is meant for special use cases and should be used with care.
          If used incorrectly, it can result in loss of data.

        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.VersionType"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'GET my-index-000001/_source/1

          '
      - lang: Python
        source: |-
          resp = client.get_source(
              index="my-index-000001",
              id="1",
          )
      - lang: JavaScript
        source: |-
          const response = await client.getSource({
            index: "my-index-000001",
            id: 1,
          });
      - lang: Ruby
        source: |-
          response = client.get_source(
            index: "my-index-000001",
            id: "1"
          )
      - lang: PHP
        source: |-
          $resp = $client->getSource([
              "index" => "my-index-000001",
              "id" => "1",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/my-index-000001/_source/1"'
      - lang: Java
        source: |
          client.getSource(g -> g
              .id("1")
              .index("my-index-000001")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    head:
      tags:
      - document
      summary: Check for a document source
      description: |
        Check whether a document source exists in an index.
        For example:

        ```
        HEAD my-index-000001/_source/1
        ```

        A document's source is not available if it is disabled in the mapping.

        ## Required authorization

        * Index privileges: `read`
      externalDocs:
        url: https://www.elastic.co/docs/reference/elasticsearch/mapping-reference/mapping-source-field
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/docs-get.html
      operationId: exists-source
      parameters:
      - in: path
        name: index
        description: |-
          A comma-separated list of data streams, indices, and aliases.
          It supports wildcards (`*`).
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.IndexName"
        style: simple
      - in: path
        name: id
        description: A unique identifier for the document.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: preference
        description: |-
          The node or shard the operation should be performed on.
          By default, the operation is randomized between the shard replicas.
        deprecated: false
        schema:
          type: string
        style: form
      - in: query
        name: realtime
        description: If `true`, the request is real-time as opposed to near-real-time.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: refresh
        description: |-
          If `true`, the request refreshes the relevant shards before retrieving the document.
          Setting it to `true` should be done after careful thought and verification that this does not cause a heavy load on the system (and slow down indexing).
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: routing
        description: A custom value used to route operations to a specific shard.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Routing"
        style: form
      - in: query
        name: _source
        description: Indicates whether to return the `_source` field (`true` or `false`)
          or lists the fields to return.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_global.search._types.SourceConfigParam"
        style: form
      - in: query
        name: _source_excludes
        description: A comma-separated list of source fields to exclude in the response.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Fields"
        style: form
      - in: query
        name: _source_includes
        description: A comma-separated list of source fields to include in the response.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Fields"
        style: form
      - in: query
        name: version
        description: |-
          The version number for concurrency control.
          It must match the current version of the document for the request to succeed.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.VersionNumber"
        style: form
      - in: query
        name: version_type
        description: |+
          The version type.

          Supported values include:
            - `internal`: Use internal versioning that starts at 1 and increments with each update or delete.
            - `external`: Only index the document if the specified version is strictly higher than the version of the stored document or if there is no existing document.
            - `external_gte`: Only index the document if the specified version is equal or higher than the version of the stored document or if there is no existing document.
          NOTE: The `external_gte` version type is meant for special use cases and should be used with care.
          If used incorrectly, it can result in loss of data.

        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.VersionType"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json: {}
      x-state: Generally available; Added in 5.4.0
      x-codeSamples:
      - lang: Console
        source: 'HEAD my-index-000001/_source/1

          '
      - lang: Python
        source: |-
          resp = client.exists_source(
              index="my-index-000001",
              id="1",
          )
      - lang: JavaScript
        source: |-
          const response = await client.existsSource({
            index: "my-index-000001",
            id: 1,
          });
      - lang: Ruby
        source: |-
          response = client.exists_source(
            index: "my-index-000001",
            id: "1"
          )
      - lang: PHP
        source: |-
          $resp = $client->existsSource([
              "index" => "my-index-000001",
              "id" => "1",
          ]);
      - lang: curl
        source: 'curl --head -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/my-index-000001/_source/1"'
      - lang: Java
        source: |
          client.existsSource(e -> e
              .id("1")
              .index("my-index-000001")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/{index}/_explain/{id}":
    post:
      tags:
      - search
      summary: 'Explain a document match result

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/{index}/_explain/{id}</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/{index}/_explain/{id}</span>\n
        \                     </div>\n                    \n\nGet information about
        why a specific document matches, or doesn't match, a query.\nIt computes a
        score explanation for a query and a specific document.\n\n## Required authorization\n\n*
        Index privileges: `read`\n"
      operationId: explain
      parameters:
      - "$ref": "#/components/parameters/explain-index"
      - "$ref": "#/components/parameters/explain-id"
      - "$ref": "#/components/parameters/explain-analyzer"
      - "$ref": "#/components/parameters/explain-analyze_wildcard"
      - "$ref": "#/components/parameters/explain-default_operator"
      - "$ref": "#/components/parameters/explain-df"
      - "$ref": "#/components/parameters/explain-lenient"
      - "$ref": "#/components/parameters/explain-preference"
      - "$ref": "#/components/parameters/explain-routing"
      - "$ref": "#/components/parameters/explain-_source"
      - "$ref": "#/components/parameters/explain-_source_excludes"
      - "$ref": "#/components/parameters/explain-_source_includes"
      - "$ref": "#/components/parameters/explain-stored_fields"
      - "$ref": "#/components/parameters/explain-q"
      requestBody:
        "$ref": "#/components/requestBodies/explain"
      responses:
        '200':
          "$ref": "#/components/responses/explain-200"
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: |-
          GET /my-index-000001/_explain/0
          {
            "query" : {
              "match" : { "message" : "elasticsearch" }
            }
          }
      - lang: Python
        source: |-
          resp = client.explain(
              index="my-index-000001",
              id="0",
              query={
                  "match": {
                      "message": "elasticsearch"
                  }
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.explain({
            index: "my-index-000001",
            id: 0,
            query: {
              match: {
                message: "elasticsearch",
              },
            },
          });
      - lang: Ruby
        source: |-
          response = client.explain(
            index: "my-index-000001",
            id: "0",
            body: {
              "query": {
                "match": {
                  "message": "elasticsearch"
                }
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->explain([
              "index" => "my-index-000001",
              "id" => "0",
              "body" => [
                  "query" => [
                      "match" => [
                          "message" => "elasticsearch",
                      ],
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"query":{"match":{"message":"elasticsearch"}}}''
          "$ELASTICSEARCH_URL/my-index-000001/_explain/0"'
      - lang: Java
        source: |
          client.explain(e -> e
              .id("0")
              .index("my-index-000001")
              .query(q -> q
                  .match(m -> m
                      .field("message")
                      .query(FieldValue.of("elasticsearch"))
                  )
              )
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_features":
    get:
      tags:
      - features
      summary: Get the features
      description: |-
        Get a list of features that can be included in snapshots using the `feature_states` field when creating a snapshot.
        You can use this API to determine which feature states to include when taking a snapshot.
        By default, all feature states are included in a snapshot if that snapshot includes the global state, or none if it does not.

        A feature state includes one or more system indices necessary for a given feature to function.
        In order to ensure data integrity, all system indices that comprise a feature state are snapshotted and restored together.

        The features listed by this API are a combination of built-in features and features defined by plugins.
        In order for a feature state to be listed in this API and recognized as a valid feature state by the create snapshot API, the plugin that defines that feature must be installed on the master node.
      externalDocs:
        url: https://www.elastic.co/docs/deploy-manage/tools/snapshot-and-restore/create-snapshots
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/get-features-api.html
      operationId: features-get-features
      parameters:
      - in: query
        name: master_timeout
        description: Period to wait for a connection to the master node.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  features:
                    type: array
                    items:
                      "$ref": "#/components/schemas/features._types.Feature"
                required:
                - features
              examples:
                GetFeaturesResponseExample1:
                  description: A successful response for retrieving a list of feature
                    states that can be included when taking a snapshot.
                  value: |-
                    {
                      "features": [
                        {
                          "name": "tasks",
                          "description": "Manages task results"
                        },
                        {
                          "name": "kibana",
                          "description": "Manages Kibana configuration and reports"
                        }
                      ]
                    }
      x-state: Generally available; Added in 7.12.0
      x-codeSamples:
      - lang: Console
        source: 'GET _features

          '
      - lang: Python
        source: resp = client.features.get_features()
      - lang: JavaScript
        source: const response = await client.features.getFeatures();
      - lang: Ruby
        source: response = client.features.get_features
      - lang: PHP
        source: "$resp = $client->features()->getFeatures();"
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_features"'
      - lang: Java
        source: 'client.features().getFeatures(g -> g);

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_features/_reset":
    post:
      tags:
      - features
      summary: Reset the features
      description: |-
        Clear all of the state information stored in system indices by Elasticsearch features, including the security and machine learning indices.

        WARNING: Intended for development and testing use only. Do not reset features on a production cluster.

        Return a cluster to the same state as a new installation by resetting the feature state for all Elasticsearch features.
        This deletes all state information stored in system indices.

        The response code is HTTP 200 if the state is successfully reset for all features.
        It is HTTP 500 if the reset operation failed for any feature.

        Note that select features might provide a way to reset particular system indices.
        Using this API resets all features, both those that are built-in and implemented as plugins.

        To list the features that will be affected, use the get features API.

        IMPORTANT: The features installed on the node you submit this request to are the features that will be reset. Run on the master node if you have any doubts about which plugins are installed on individual nodes.
      operationId: features-reset-features
      parameters:
      - in: query
        name: master_timeout
        description: Period to wait for a connection to the master node.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  features:
                    type: array
                    items:
                      "$ref": "#/components/schemas/features._types.Feature"
                required:
                - features
              examples:
                ResetFeaturesResponseExample1:
                  description: A successful response for clearing state information
                    stored in system indices by Elasticsearch features.
                  value: |-
                    {
                      "features" : [
                        {
                          "feature_name" : "security",
                          "status" : "SUCCESS"
                        },
                        {
                          "feature_name" : "tasks",
                          "status" : "SUCCESS"
                        }
                      ]
                    }
      x-state: Technical preview; Added in 7.12.0
      x-codeSamples:
      - lang: Console
        source: 'POST /_features/_reset

          '
      - lang: Python
        source: resp = client.features.reset_features()
      - lang: JavaScript
        source: const response = await client.features.resetFeatures();
      - lang: Ruby
        source: response = client.features.reset_features
      - lang: PHP
        source: "$resp = $client->features()->resetFeatures();"
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_features/_reset"'
      - lang: Java
        source: 'client.features().resetFeatures(r -> r);

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/{index}/_field_caps":
    post:
      tags:
      - search
      summary: 'Get the field capabilities

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_field_caps</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_field_caps</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/{index}/_field_caps</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/{index}/_field_caps</span>\n
        \                     </div>\n                    \n\nGet information about
        the capabilities of fields among multiple indices.\n\nFor data streams, the
        API returns field capabilities among the stream’s backing indices.\nIt returns
        runtime fields like any other field.\nFor example, a runtime field with a
        type of keyword is returned the same as any other field that belongs to the
        `keyword` family.\n\n## Required authorization\n\n* Index privileges: `view_index_metadata`,`read`\n"
      operationId: field-caps
      parameters:
      - "$ref": "#/components/parameters/field_caps-index"
      - "$ref": "#/components/parameters/field_caps-allow_no_indices"
      - "$ref": "#/components/parameters/field_caps-expand_wildcards"
      - "$ref": "#/components/parameters/field_caps-fields"
      - "$ref": "#/components/parameters/field_caps-ignore_unavailable"
      - "$ref": "#/components/parameters/field_caps-include_unmapped"
      - "$ref": "#/components/parameters/field_caps-filters"
      - "$ref": "#/components/parameters/field_caps-types"
      - "$ref": "#/components/parameters/field_caps-include_empty_fields"
      requestBody:
        "$ref": "#/components/requestBodies/field_caps"
      responses:
        '200':
          "$ref": "#/components/responses/field_caps-200"
      x-state: Generally available; Added in 5.4.0
      x-codeSamples:
      - lang: Console
        source: |-
          POST my-index-*/_field_caps?fields=rating
          {
            "index_filter": {
              "range": {
                "@timestamp": {
                  "gte": "2018"
                }
              }
            }
          }
      - lang: Python
        source: |-
          resp = client.field_caps(
              index="my-index-*",
              fields="rating",
              index_filter={
                  "range": {
                      "@timestamp": {
                          "gte": "2018"
                      }
                  }
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.fieldCaps({
            index: "my-index-*",
            fields: "rating",
            index_filter: {
              range: {
                "@timestamp": {
                  gte: "2018",
                },
              },
            },
          });
      - lang: Ruby
        source: |-
          response = client.field_caps(
            index: "my-index-*",
            fields: "rating",
            body: {
              "index_filter": {
                "range": {
                  "@timestamp": {
                    "gte": "2018"
                  }
                }
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->fieldCaps([
              "index" => "my-index-*",
              "fields" => "rating",
              "body" => [
                  "index_filter" => [
                      "range" => [
                          "@timestamp" => [
                              "gte" => "2018",
                          ],
                      ],
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"index_filter":{"range":{"@timestamp":{"gte":"2018"}}}}''
          "$ELASTICSEARCH_URL/my-index-*/_field_caps?fields=rating"'
      - lang: Java
        source: |
          client.fieldCaps(f -> f
              .fields("rating")
              .index("my-index-*")
              .indexFilter(i -> i
                  .range(r -> r
                      .untyped(u -> u
                          .field("@timestamp")
                          .gte(JsonData.fromJson("\"2018\""))
                      )
                  )
              )
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/{index}/_fleet/global_checkpoints":
    get:
      tags:
      - fleet
      summary: Get global checkpoints
      description: |-
        Get the current global checkpoints for an index.
        This API is designed for internal use by the Fleet server project.
      operationId: fleet-global-checkpoints
      parameters:
      - in: path
        name: index
        description: A single index or index alias that resolves to a single index.
        required: true
        deprecated: false
        schema:
          oneOf:
          - "$ref": "#/components/schemas/_types.IndexName"
          - "$ref": "#/components/schemas/_types.IndexAlias"
        style: simple
      - in: query
        name: wait_for_advance
        description: |-
          A boolean value which controls whether to wait (until the timeout) for the global checkpoints
          to advance past the provided `checkpoints`.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: wait_for_index
        description: |-
          A boolean value which controls whether to wait (until the timeout) for the target index to exist
          and all primary shards be active. Can only be true when `wait_for_advance` is true.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: checkpoints
        description: |-
          A comma separated list of previous global checkpoints. When used in combination with `wait_for_advance`,
          the API will only return once the global checkpoints advances past the checkpoints. Providing an empty list
          will cause Elasticsearch to immediately return the current global checkpoints.
        deprecated: false
        schema:
          type: array
          items:
            "$ref": "#/components/schemas/fleet._types.Checkpoint"
        style: form
      - in: query
        name: timeout
        description: Period to wait for a global checkpoints to advance past `checkpoints`.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  global_checkpoints:
                    type: array
                    items:
                      "$ref": "#/components/schemas/fleet._types.Checkpoint"
                  timed_out:
                    type: boolean
                required:
                - global_checkpoints
                - timed_out
      x-state: Generally available; Added in 7.13.0
      x-metaTags:
      - content: Elasticsearch, Fleet
        name: product_name
  "/{index}/_fleet/_fleet_msearch":
    post:
      tags:
      - fleet
      summary: 'Run multiple Fleet searches

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_fleet/_fleet_msearch</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_fleet/_fleet_msearch</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/{index}/_fleet/_fleet_msearch</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/{index}/_fleet/_fleet_msearch</span>\n
        \                     </div>\n                    \n\nRun several Fleet searches
        with a single API request.\nThe API follows the same structure as the multi
        search API.\nHowever, similar to the Fleet search API, it supports the `wait_for_checkpoints`
        parameter.\n\n## Required authorization\n\n* Index privileges: `read`\n"
      operationId: fleet-msearch
      parameters:
      - "$ref": "#/components/parameters/fleet.msearch-index"
      - "$ref": "#/components/parameters/fleet.msearch-allow_no_indices"
      - "$ref": "#/components/parameters/fleet.msearch-ccs_minimize_roundtrips"
      - "$ref": "#/components/parameters/fleet.msearch-expand_wildcards"
      - "$ref": "#/components/parameters/fleet.msearch-ignore_throttled"
      - "$ref": "#/components/parameters/fleet.msearch-ignore_unavailable"
      - "$ref": "#/components/parameters/fleet.msearch-max_concurrent_searches"
      - "$ref": "#/components/parameters/fleet.msearch-max_concurrent_shard_requests"
      - "$ref": "#/components/parameters/fleet.msearch-pre_filter_shard_size"
      - "$ref": "#/components/parameters/fleet.msearch-search_type"
      - "$ref": "#/components/parameters/fleet.msearch-rest_total_hits_as_int"
      - "$ref": "#/components/parameters/fleet.msearch-typed_keys"
      - "$ref": "#/components/parameters/fleet.msearch-wait_for_checkpoints"
      - "$ref": "#/components/parameters/fleet.msearch-allow_partial_search_results"
      requestBody:
        "$ref": "#/components/requestBodies/fleet.msearch"
      responses:
        '200':
          "$ref": "#/components/responses/fleet.msearch-200"
      x-state: Technical preview; Added in 7.16.0
      x-metaTags:
      - content: Elasticsearch, Fleet
        name: product_name
  "/{index}/_fleet/_fleet_search":
    post:
      tags:
      - fleet
      summary: 'Run a Fleet search

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/{index}/_fleet/_fleet_search</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/{index}/_fleet/_fleet_search</span>\n
        \                     </div>\n                    \n\nThe purpose of the Fleet
        search API is to provide an API where the search will be run only\nafter the
        provided checkpoint has been processed and is visible for searches inside
        of Elasticsearch.\n\n## Required authorization\n\n* Index privileges: `read`\n"
      operationId: fleet-search
      parameters:
      - "$ref": "#/components/parameters/fleet.search-index"
      - "$ref": "#/components/parameters/fleet.search-allow_no_indices"
      - "$ref": "#/components/parameters/fleet.search-analyzer"
      - "$ref": "#/components/parameters/fleet.search-analyze_wildcard"
      - "$ref": "#/components/parameters/fleet.search-batched_reduce_size"
      - "$ref": "#/components/parameters/fleet.search-ccs_minimize_roundtrips"
      - "$ref": "#/components/parameters/fleet.search-default_operator"
      - "$ref": "#/components/parameters/fleet.search-df"
      - "$ref": "#/components/parameters/fleet.search-docvalue_fields"
      - "$ref": "#/components/parameters/fleet.search-expand_wildcards"
      - "$ref": "#/components/parameters/fleet.search-explain"
      - "$ref": "#/components/parameters/fleet.search-ignore_throttled"
      - "$ref": "#/components/parameters/fleet.search-ignore_unavailable"
      - "$ref": "#/components/parameters/fleet.search-lenient"
      - "$ref": "#/components/parameters/fleet.search-max_concurrent_shard_requests"
      - "$ref": "#/components/parameters/fleet.search-preference"
      - "$ref": "#/components/parameters/fleet.search-pre_filter_shard_size"
      - "$ref": "#/components/parameters/fleet.search-request_cache"
      - "$ref": "#/components/parameters/fleet.search-routing"
      - "$ref": "#/components/parameters/fleet.search-scroll"
      - "$ref": "#/components/parameters/fleet.search-search_type"
      - "$ref": "#/components/parameters/fleet.search-stats"
      - "$ref": "#/components/parameters/fleet.search-stored_fields"
      - "$ref": "#/components/parameters/fleet.search-suggest_field"
      - "$ref": "#/components/parameters/fleet.search-suggest_mode"
      - "$ref": "#/components/parameters/fleet.search-suggest_size"
      - "$ref": "#/components/parameters/fleet.search-suggest_text"
      - "$ref": "#/components/parameters/fleet.search-terminate_after"
      - "$ref": "#/components/parameters/fleet.search-timeout"
      - "$ref": "#/components/parameters/fleet.search-track_total_hits"
      - "$ref": "#/components/parameters/fleet.search-track_scores"
      - "$ref": "#/components/parameters/fleet.search-typed_keys"
      - "$ref": "#/components/parameters/fleet.search-rest_total_hits_as_int"
      - "$ref": "#/components/parameters/fleet.search-version"
      - "$ref": "#/components/parameters/fleet.search-_source"
      - "$ref": "#/components/parameters/fleet.search-_source_excludes"
      - "$ref": "#/components/parameters/fleet.search-_source_includes"
      - "$ref": "#/components/parameters/fleet.search-seq_no_primary_term"
      - "$ref": "#/components/parameters/fleet.search-q"
      - "$ref": "#/components/parameters/fleet.search-size"
      - "$ref": "#/components/parameters/fleet.search-from"
      - "$ref": "#/components/parameters/fleet.search-sort"
      - "$ref": "#/components/parameters/fleet.search-wait_for_checkpoints"
      - "$ref": "#/components/parameters/fleet.search-allow_partial_search_results"
      requestBody:
        "$ref": "#/components/requestBodies/fleet.search"
      responses:
        '200':
          "$ref": "#/components/responses/fleet.search-200"
      x-state: Technical preview; Added in 7.16.0
      x-metaTags:
      - content: Elasticsearch, Fleet
        name: product_name
  "/_script_context":
    get:
      tags:
      - script
      summary: Get script contexts
      description: |
        Get a list of supported script contexts and their methods.

        ## Required authorization

        * Cluster privileges: `manage`
      operationId: get-script-context
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  contexts:
                    type: array
                    items:
                      "$ref": "#/components/schemas/_global.get_script_context.Context"
                required:
                - contexts
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'GET _script_context

          '
      - lang: Python
        source: resp = client.get_script_context()
      - lang: JavaScript
        source: const response = await client.getScriptContext();
      - lang: Ruby
        source: response = client.get_script_context
      - lang: PHP
        source: "$resp = $client->getScriptContext();"
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_script_context"'
      - lang: Java
        source: 'client.getScriptContext();

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_script_language":
    get:
      tags:
      - script
      summary: Get script languages
      description: |
        Get a list of available script types, languages, and contexts.

        ## Required authorization

        * Cluster privileges: `manage`
      operationId: get-script-languages
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  language_contexts:
                    type: array
                    items:
                      "$ref": "#/components/schemas/_global.get_script_languages.LanguageContext"
                  types_allowed:
                    type: array
                    items:
                      type: string
                required:
                - language_contexts
                - types_allowed
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'GET _script_language

          '
      - lang: Python
        source: resp = client.get_script_languages()
      - lang: JavaScript
        source: const response = await client.getScriptLanguages();
      - lang: Ruby
        source: response = client.get_script_languages
      - lang: PHP
        source: "$resp = $client->getScriptLanguages();"
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_script_language"'
      - lang: Java
        source: 'client.getScriptLanguages();

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/{index}/_graph/explore":
    post:
      tags:
      - graph
      summary: 'Explore graph analytics

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/{index}/_graph/explore</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/{index}/_graph/explore</span>\n
        \                     </div>\n                    \n\nExtract and summarize
        information about the documents and terms in an Elasticsearch data stream
        or index.\nThe easiest way to understand the behavior of this API is to use
        the Graph UI to explore connections.\nAn initial request to the `_explore`
        API contains a seed query that identifies the documents of interest and specifies
        the fields that define the vertices and connections you want to include in
        the graph.\nSubsequent requests enable you to spider out from one more vertices
        of interest.\nYou can exclude vertices that have already been returned."
      externalDocs:
        url: https://www.elastic.co/docs/explore-analyze/visualize/graph
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/graph-explore-api.html
      operationId: graph-explore
      parameters:
      - "$ref": "#/components/parameters/graph.explore-index"
      - "$ref": "#/components/parameters/graph.explore-routing"
      - "$ref": "#/components/parameters/graph.explore-timeout"
      requestBody:
        "$ref": "#/components/requestBodies/graph.explore"
      responses:
        '200':
          "$ref": "#/components/responses/graph.explore-200"
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: |-
          POST clicklogs/_graph/explore
          {
            "query": {
              "match": {
                "query.raw": "midi"
              }
            },
            "vertices": [
              {
                "field": "product"
              }
            ],
            "connections": {
              "vertices": [
                {
                  "field": "query.raw"
                }
              ]
            }
          }
      - lang: Python
        source: |-
          resp = client.graph.explore(
              index="clicklogs",
              query={
                  "match": {
                      "query.raw": "midi"
                  }
              },
              vertices=[
                  {
                      "field": "product"
                  }
              ],
              connections={
                  "vertices": [
                      {
                          "field": "query.raw"
                      }
                  ]
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.graph.explore({
            index: "clicklogs",
            query: {
              match: {
                "query.raw": "midi",
              },
            },
            vertices: [
              {
                field: "product",
              },
            ],
            connections: {
              vertices: [
                {
                  field: "query.raw",
                },
              ],
            },
          });
      - lang: Ruby
        source: |-
          response = client.graph.explore(
            index: "clicklogs",
            body: {
              "query": {
                "match": {
                  "query.raw": "midi"
                }
              },
              "vertices": [
                {
                  "field": "product"
                }
              ],
              "connections": {
                "vertices": [
                  {
                    "field": "query.raw"
                  }
                ]
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->graph()->explore([
              "index" => "clicklogs",
              "body" => [
                  "query" => [
                      "match" => [
                          "query.raw" => "midi",
                      ],
                  ],
                  "vertices" => array(
                      [
                          "field" => "product",
                      ],
                  ),
                  "connections" => [
                      "vertices" => array(
                          [
                              "field" => "query.raw",
                          ],
                      ),
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"query":{"match":{"query.raw":"midi"}},"vertices":[{"field":"product"}],"connections":{"vertices":[{"field":"query.raw"}]}}''
          "$ELASTICSEARCH_URL/clicklogs/_graph/explore"'
      - lang: Java
        source: |
          client.graph().explore(e -> e
              .connections(c -> c
                  .vertices(v -> v
                      .field("query.raw")
                  )
              )
              .index("clicklogs")
              .query(q -> q
                  .match(m -> m
                      .field("query.raw")
                      .query(FieldValue.of("midi"))
                  )
              )
              .vertices(v -> v
                  .field("product")
              )
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_health_report/{feature}":
    get:
      tags:
      - health_report
      summary: 'Get the cluster health

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_health_report</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_health_report/{feature}</span>\n
        \                     </div>\n                    \n\nGet a report with the
        health status of an Elasticsearch cluster.\nThe report contains a list of
        indicators that compose Elasticsearch functionality.\n\nEach indicator has
        a health status of: green, unknown, yellow or red.\nThe indicator will provide
        an explanation and metadata describing the reason for its current health status.\n\nThe
        cluster’s status is controlled by the worst indicator status.\n\nIn the event
        that an indicator’s status is non-green, a list of impacts may be present
        in the indicator result which detail the functionalities that are negatively
        affected by the health issue.\nEach impact carries with it a severity level,
        an area of the system that is affected, and a simple description of the impact
        on the system.\n\nSome health indicators can determine the root cause of a
        health problem and prescribe a set of steps that can be performed in order
        to improve the health of the system.\nThe root cause and remediation steps
        are encapsulated in a diagnosis.\nA diagnosis contains a cause detailing a
        root cause analysis, an action containing a brief description of the steps
        to take to fix the problem, the list of affected resources (if applicable),
        and a detailed step-by-step troubleshooting guide to fix the diagnosed problem.\n\nNOTE:
        The health indicators perform root cause analysis of non-green health statuses.
        This can be computationally expensive when called frequently.\nWhen setting
        up automated polling of the API for health status, set verbose to false to
        disable the more expensive analysis logic."
      operationId: health-report
      parameters:
      - "$ref": "#/components/parameters/health_report-feature"
      - "$ref": "#/components/parameters/health_report-timeout"
      - "$ref": "#/components/parameters/health_report-verbose"
      - "$ref": "#/components/parameters/health_report-size"
      responses:
        '200':
          "$ref": "#/components/responses/health_report-200"
      x-state: Generally available; Added in 8.7.0
      x-codeSamples:
      - lang: Console
        source: 'GET _health_report

          '
      - lang: Python
        source: resp = client.health_report()
      - lang: JavaScript
        source: const response = await client.healthReport();
      - lang: Ruby
        source: response = client.health_report
      - lang: PHP
        source: "$resp = $client->healthReport();"
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_health_report"'
      - lang: Java
        source: 'client.healthReport(h -> h);

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_ilm/policy/{policy}":
    get:
      tags:
      - ilm
      summary: 'Get lifecycle policies

        '
      description: |
        **All methods and paths for this operation:**

        <div>
                              <span class="operation-verb get">GET</span>
                              <span class="operation-path">/_ilm/policy</span>
                              </div>
                            <div>
                              <span class="operation-verb get">GET</span>
                              <span class="operation-path">/_ilm/policy/{policy}</span>
                              </div>

        ## Required authorization

        * Cluster privileges: `manage_ilm`,`read_ilm`
      operationId: ilm-get-lifecycle
      parameters:
      - "$ref": "#/components/parameters/ilm.get_lifecycle-policy"
      - "$ref": "#/components/parameters/ilm.get_lifecycle-master_timeout"
      - "$ref": "#/components/parameters/ilm.get_lifecycle-timeout"
      responses:
        '200':
          "$ref": "#/components/responses/ilm.get_lifecycle-200"
      x-state: Generally available; Added in 6.6.0
      x-codeSamples:
      - lang: Console
        source: 'GET _ilm/policy/my_policy

          '
      - lang: Python
        source: |-
          resp = client.ilm.get_lifecycle(
              name="my_policy",
          )
      - lang: JavaScript
        source: |-
          const response = await client.ilm.getLifecycle({
            name: "my_policy",
          });
      - lang: Ruby
        source: |-
          response = client.ilm.get_lifecycle(
            policy: "my_policy"
          )
      - lang: PHP
        source: |-
          $resp = $client->ilm()->getLifecycle([
              "policy" => "my_policy",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_ilm/policy/my_policy"'
      - lang: Java
        source: |
          client.ilm().getLifecycle(g -> g
              .name("my_policy")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    put:
      tags:
      - ilm
      summary: Create or update a lifecycle policy
      description: |
        If the specified policy exists, it is replaced and the policy version is incremented.

        NOTE: Only the latest version of the policy is stored, you cannot revert to previous versions.

        ## Required authorization

        * Index privileges: `manage`
        * Cluster privileges: `manage_ilm`
      externalDocs:
        url: https://www.elastic.co/docs/manage-data/lifecycle/index-lifecycle-management/index-lifecycle
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/ilm-put-lifecycle.html
      operationId: ilm-put-lifecycle
      parameters:
      - in: path
        name: policy
        description: Identifier for the policy.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Name"
        style: simple
      - in: query
        name: master_timeout
        description: Period to wait for a connection to the master node. If no response
          is received before the timeout expires, the request fails and returns an
          error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: timeout
        description: Period to wait for a response. If no response is received before
          the timeout expires, the request fails and returns an error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                policy:
                  allOf:
                  - "$ref": "#/components/schemas/ilm._types.Policy"
            examples:
              PutLifecycleRequestExample1:
                description: 'Run `PUT _ilm/policy/my_policy` to create a new policy
                  with arbitrary metadata.

                  '
                value: |-
                  {
                    "policy": {
                      "_meta": {
                        "description": "used for nginx log",
                        "project": {
                          "name": "myProject",
                          "department": "myDepartment"
                        }
                      },
                      "phases": {
                        "warm": {
                          "min_age": "10d",
                          "actions": {
                            "forcemerge": {
                              "max_num_segments": 1
                            }
                          }
                        },
                        "delete": {
                          "min_age": "30d",
                          "actions": {
                            "delete": {}
                          }
                        }
                      }
                    }
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
              examples:
                PutLifecycleResponseExample1:
                  description: A successful response when creating a new lifecycle
                    policy.
                  value: |-
                    {
                      "acknowledged": true
                    }
      x-state: Generally available; Added in 6.6.0
      x-codeSamples:
      - lang: Console
        source: |-
          PUT _ilm/policy/my_policy
          {
            "policy": {
              "_meta": {
                "description": "used for nginx log",
                "project": {
                  "name": "myProject",
                  "department": "myDepartment"
                }
              },
              "phases": {
                "warm": {
                  "min_age": "10d",
                  "actions": {
                    "forcemerge": {
                      "max_num_segments": 1
                    }
                  }
                },
                "delete": {
                  "min_age": "30d",
                  "actions": {
                    "delete": {}
                  }
                }
              }
            }
          }
      - lang: Python
        source: |-
          resp = client.ilm.put_lifecycle(
              name="my_policy",
              policy={
                  "_meta": {
                      "description": "used for nginx log",
                      "project": {
                          "name": "myProject",
                          "department": "myDepartment"
                      }
                  },
                  "phases": {
                      "warm": {
                          "min_age": "10d",
                          "actions": {
                              "forcemerge": {
                                  "max_num_segments": 1
                              }
                          }
                      },
                      "delete": {
                          "min_age": "30d",
                          "actions": {
                              "delete": {}
                          }
                      }
                  }
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.ilm.putLifecycle({
            name: "my_policy",
            policy: {
              _meta: {
                description: "used for nginx log",
                project: {
                  name: "myProject",
                  department: "myDepartment",
                },
              },
              phases: {
                warm: {
                  min_age: "10d",
                  actions: {
                    forcemerge: {
                      max_num_segments: 1,
                    },
                  },
                },
                delete: {
                  min_age: "30d",
                  actions: {
                    delete: {},
                  },
                },
              },
            },
          });
      - lang: Ruby
        source: |-
          response = client.ilm.put_lifecycle(
            policy: "my_policy",
            body: {
              "policy": {
                "_meta": {
                  "description": "used for nginx log",
                  "project": {
                    "name": "myProject",
                    "department": "myDepartment"
                  }
                },
                "phases": {
                  "warm": {
                    "min_age": "10d",
                    "actions": {
                      "forcemerge": {
                        "max_num_segments": 1
                      }
                    }
                  },
                  "delete": {
                    "min_age": "30d",
                    "actions": {
                      "delete": {}
                    }
                  }
                }
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->ilm()->putLifecycle([
              "policy" => "my_policy",
              "body" => [
                  "policy" => [
                      "_meta" => [
                          "description" => "used for nginx log",
                          "project" => [
                              "name" => "myProject",
                              "department" => "myDepartment",
                          ],
                      ],
                      "phases" => [
                          "warm" => [
                              "min_age" => "10d",
                              "actions" => [
                                  "forcemerge" => [
                                      "max_num_segments" => 1,
                                  ],
                              ],
                          ],
                          "delete" => [
                              "min_age" => "30d",
                              "actions" => [
                                  "delete" => new ArrayObject([]),
                              ],
                          ],
                      ],
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"policy":{"_meta":{"description":"used for nginx
          log","project":{"name":"myProject","department":"myDepartment"}},"phases":{"warm":{"min_age":"10d","actions":{"forcemerge":{"max_num_segments":1}}},"delete":{"min_age":"30d","actions":{"delete":{}}}}}}''
          "$ELASTICSEARCH_URL/_ilm/policy/my_policy"'
      - lang: Java
        source: |
          client.ilm().putLifecycle(p -> p
              .name("my_policy")
              .policy(po -> po
                  .phases(ph -> ph
                      .delete(d -> d
                          .actions(a -> a
                              .delete(de -> de)
                          )
                          .minAge(m -> m
                              .time("30d")
                          )
                      )
                      .warm(w -> w
                          .actions(a -> a
                              .forcemerge(f -> f
                                  .maxNumSegments(1)
                              )
                          )
                          .minAge(m -> m
                              .time("10d")
                          )
                      )
                  )
                  .meta(Map.of("description", JsonData.fromJson("\"used for nginx log\""),"project", JsonData.fromJson("{\"name\":\"myProject\",\"department\":\"myDepartment\"}")))
              )
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    delete:
      tags:
      - ilm
      summary: Delete a lifecycle policy
      description: |
        You cannot delete policies that are currently in use. If the policy is being used to manage any indices, the request fails and returns an error.

        ## Required authorization

        * Cluster privileges: `manage_ilm`
      operationId: ilm-delete-lifecycle
      parameters:
      - in: path
        name: policy
        description: Identifier for the policy.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Name"
        style: simple
      - in: query
        name: master_timeout
        description: Period to wait for a connection to the master node. If no response
          is received before the timeout expires, the request fails and returns an
          error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: timeout
        description: Period to wait for a response. If no response is received before
          the timeout expires, the request fails and returns an error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
              examples:
                DeleteLifecycleResponseExample1:
                  description: A successful response when deleting a lifecycle policy.
                  value: |-
                    {
                      "acknowledged": true
                    }
      x-state: Generally available; Added in 6.6.0
      x-codeSamples:
      - lang: Console
        source: 'DELETE _ilm/policy/my_policy

          '
      - lang: Python
        source: |-
          resp = client.ilm.delete_lifecycle(
              name="my_policy",
          )
      - lang: JavaScript
        source: |-
          const response = await client.ilm.deleteLifecycle({
            name: "my_policy",
          });
      - lang: Ruby
        source: |-
          response = client.ilm.delete_lifecycle(
            policy: "my_policy"
          )
      - lang: PHP
        source: |-
          $resp = $client->ilm()->deleteLifecycle([
              "policy" => "my_policy",
          ]);
      - lang: curl
        source: 'curl -X DELETE -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_ilm/policy/my_policy"'
      - lang: Java
        source: |
          client.ilm().deleteLifecycle(d -> d
              .name("my_policy")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/{index}/_ilm/explain":
    get:
      tags:
      - ilm
      summary: Explain the lifecycle state
      description: |
        Get the current lifecycle status for one or more indices.
        For data streams, the API retrieves the current lifecycle status for the stream's backing indices.

        The response indicates when the index entered each lifecycle state, provides the definition of the running phase, and information about any failures.

        ## Required authorization

        * Index privileges: `view_index_metadata`,`manage_ilm`
      operationId: ilm-explain-lifecycle
      parameters:
      - in: path
        name: index
        description: |-
          Comma-separated list of data streams, indices, and aliases to target. Supports wildcards (`*`).
          To target all data streams and indices, use `*` or `_all`.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.IndexName"
        style: simple
      - in: query
        name: only_errors
        description: Filters the returned indices to only indices that are managed
          by ILM and are in an error state, either due to an encountering an error
          while executing the policy, or attempting to use a policy that does not
          exist.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: only_managed
        description: Filters the returned indices to only indices that are managed
          by ILM.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: master_timeout
        description: Period to wait for a connection to the master node. If no response
          is received before the timeout expires, the request fails and returns an
          error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  indices:
                    type: object
                    additionalProperties:
                      "$ref": "#/components/schemas/ilm.explain_lifecycle.LifecycleExplain"
                required:
                - indices
              examples:
                ExplainLifecycleResponseExample1:
                  description: A successful response when retrieving the current ILM
                    status for an index.
                  value: |-
                    {
                      "indices": {
                        "my-index-000001": {
                          "index": "my-index-000001",
                          "index_creation_date_millis": 1538475653281,
                          "index_creation_date": "2018-10-15T13:45:21.981Z",
                          "time_since_index_creation": "15s",
                          "managed": true,
                          "policy": "my_policy",
                          "lifecycle_date_millis": 1538475653281,
                          "lifecycle_date": "2018-10-15T13:45:21.981Z",
                          "age": "15s",
                          "phase": "new",
                          "phase_time_millis": 1538475653317,
                          "phase_time": "2018-10-15T13:45:22.577Z",
                          "action": "complete"
                          "action_time_millis": 1538475653317,
                          "action_time": "2018-10-15T13:45:22.577Z",
                          "step": "complete",
                          "step_time_millis": 1538475653317,
                          "step_time": "2018-10-15T13:45:22.577Z"
                        }
                      }
                    }
      x-state: Generally available; Added in 6.6.0
      x-codeSamples:
      - lang: Console
        source: 'GET .ds-timeseries-*/_ilm/explain

          '
      - lang: Python
        source: |-
          resp = client.ilm.explain_lifecycle(
              index=".ds-timeseries-*",
          )
      - lang: JavaScript
        source: |-
          const response = await client.ilm.explainLifecycle({
            index: ".ds-timeseries-*",
          });
      - lang: Ruby
        source: |-
          response = client.ilm.explain_lifecycle(
            index: ".ds-timeseries-*"
          )
      - lang: PHP
        source: |-
          $resp = $client->ilm()->explainLifecycle([
              "index" => ".ds-timeseries-*",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/.ds-timeseries-*/_ilm/explain"'
      - lang: Java
        source: |
          client.ilm().explainLifecycle(e -> e
              .index(".ds-timeseries-*")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_ilm/status":
    get:
      tags:
      - ilm
      summary: Get the ILM status
      description: |
        Get the current index lifecycle management status.

        ## Required authorization

        * Cluster privileges: `read_ilm`
      operationId: ilm-get-status
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  operation_mode:
                    allOf:
                    - "$ref": "#/components/schemas/_types.LifecycleOperationMode"
                required:
                - operation_mode
              examples:
                GetILMStatusResponseExample1:
                  description: A successful response when retrieving the current ILM
                    status.
                  value: |-
                    {
                      "operation_mode": "RUNNING"
                    }
      x-state: Generally available; Added in 6.6.0
      x-codeSamples:
      - lang: Console
        source: 'GET _ilm/status

          '
      - lang: Python
        source: resp = client.ilm.get_status()
      - lang: JavaScript
        source: const response = await client.ilm.getStatus();
      - lang: Ruby
        source: response = client.ilm.get_status
      - lang: PHP
        source: "$resp = $client->ilm()->getStatus();"
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_ilm/status"'
      - lang: Java
        source: 'client.ilm().getStatus();

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_ilm/migrate_to_data_tiers":
    post:
      tags:
      - ilm
      summary: Migrate to data tiers routing
      description: |-
        Switch the indices, ILM policies, and legacy, composable, and component templates from using custom node attributes and attribute-based allocation filters to using data tiers.
        Optionally, delete one legacy index template.
        Using node roles enables ILM to automatically move the indices between data tiers.

        Migrating away from custom node attributes routing can be manually performed.
        This API provides an automated way of performing three out of the four manual steps listed in the migration guide:

        1. Stop setting the custom hot attribute on new indices.
        1. Remove custom allocation settings from existing ILM policies.
        1. Replace custom allocation settings from existing indices with the corresponding tier preference.

        ILM must be stopped before performing the migration.
        Use the stop ILM and get ILM status APIs to wait until the reported operation mode is `STOPPED`.
      externalDocs:
        url: https://www.elastic.co/docs/manage-data/lifecycle/index-lifecycle-management/migrate-index-allocation-filters-to-node-roles
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/ilm-migrate-to-data-tiers.html
      operationId: ilm-migrate-to-data-tiers
      parameters:
      - in: query
        name: dry_run
        description: |-
          If true, simulates the migration from node attributes based allocation filters to data tiers, but does not perform the migration.
          This provides a way to retrieve the indices and ILM policies that need to be migrated.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: master_timeout
        description: |-
          The period to wait for a connection to the master node.
          If no response is received before the timeout expires, the request fails and returns an error.
          It can also be set to `-1` to indicate that the request should never timeout.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                legacy_template_to_delete:
                  type: string
                node_attribute:
                  type: string
            examples:
              MigrateToDataTiersRequestExample1:
                description: 'Run `POST /_ilm/migrate_to_data_tiers` to migrate the
                  indices, ILM policies, legacy templates, composable, and component
                  templates away from defining custom allocation filtering using the
                  `custom_attribute_name` node attribute. It also deletes the legacy
                  template with name `global-template` if it exists in the system.

                  '
                value: |-
                  {
                    "legacy_template_to_delete": "global-template",
                    "node_attribute": "custom_attribute_name"
                  }
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  dry_run:
                    type: boolean
                  removed_legacy_template:
                    description: |-
                      The name of the legacy index template that was deleted.
                      This information is missing if no legacy index templates were deleted.
                    type: string
                  migrated_ilm_policies:
                    description: The ILM policies that were updated.
                    type: array
                    items:
                      type: string
                  migrated_indices:
                    description: The indices that were migrated to tier preference
                      routing.
                    allOf:
                    - "$ref": "#/components/schemas/_types.Indices"
                  migrated_legacy_templates:
                    description: The legacy index templates that were updated to not
                      contain custom routing settings for the provided data attribute.
                    type: array
                    items:
                      type: string
                  migrated_composable_templates:
                    description: The composable index templates that were updated
                      to not contain custom routing settings for the provided data
                      attribute.
                    type: array
                    items:
                      type: string
                  migrated_component_templates:
                    description: The component templates that were updated to not
                      contain custom routing settings for the provided data attribute.
                    type: array
                    items:
                      type: string
                required:
                - dry_run
                - removed_legacy_template
                - migrated_ilm_policies
                - migrated_indices
                - migrated_legacy_templates
                - migrated_composable_templates
                - migrated_component_templates
              examples:
                MigrateToDataTiersResponseExample1:
                  description: 'A successful response when migrating indices, ILMs,
                    and templates from custom node attributes to data tiers.

                    '
                  value: |-
                    {
                      "dry_run": false,
                      "removed_legacy_template":"global-template",
                      "migrated_ilm_policies":["policy_with_allocate_action"],
                      "migrated_indices":["warm-index-to-migrate-000001"],
                      "migrated_legacy_templates":["a-legacy-template"],
                      "migrated_composable_templates":["a-composable-template"],
                      "migrated_component_templates":["a-component-template"]
                    }
      x-state: Generally available; Added in 7.14.0
      x-codeSamples:
      - lang: Console
        source: |-
          POST /_ilm/migrate_to_data_tiers
          {
            "legacy_template_to_delete": "global-template",
            "node_attribute": "custom_attribute_name"
          }
      - lang: Python
        source: |-
          resp = client.ilm.migrate_to_data_tiers(
              legacy_template_to_delete="global-template",
              node_attribute="custom_attribute_name",
          )
      - lang: JavaScript
        source: |-
          const response = await client.ilm.migrateToDataTiers({
            legacy_template_to_delete: "global-template",
            node_attribute: "custom_attribute_name",
          });
      - lang: Ruby
        source: |-
          response = client.ilm.migrate_to_data_tiers(
            body: {
              "legacy_template_to_delete": "global-template",
              "node_attribute": "custom_attribute_name"
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->ilm()->migrateToDataTiers([
              "body" => [
                  "legacy_template_to_delete" => "global-template",
                  "node_attribute" => "custom_attribute_name",
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"legacy_template_to_delete":"global-template","node_attribute":"custom_attribute_name"}''
          "$ELASTICSEARCH_URL/_ilm/migrate_to_data_tiers"'
      - lang: Java
        source: |
          client.ilm().migrateToDataTiers(m -> m
              .legacyTemplateToDelete("global-template")
              .nodeAttribute("custom_attribute_name")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_ilm/move/{index}":
    post:
      tags:
      - ilm
      summary: Move to a lifecycle step
      description: |
        Manually move an index into a specific step in the lifecycle policy and run that step.

        WARNING: This operation can result in the loss of data. Manually moving an index into a specific step runs that step even if it has already been performed. This is a potentially destructive action and this should be considered an expert level API.

        You must specify both the current step and the step to be executed in the body of the request.
        The request will fail if the current step does not match the step currently running for the index
        This is to prevent the index from being moved from an unexpected step into the next step.

        When specifying the target (`next_step`) to which the index will be moved, either the name or both the action and name fields are optional.
        If only the phase is specified, the index will move to the first step of the first action in the target phase.
        If the phase and action are specified, the index will move to the first step of the specified action in the specified phase.
        Only actions specified in the ILM policy are considered valid.
        An index cannot move to a step that is not part of its policy.

        ## Required authorization

        * Index privileges: `manage_ilm`
      operationId: ilm-move-to-step
      parameters:
      - in: path
        name: index
        description: The name of the index whose lifecycle step is to change
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.IndexName"
        style: simple
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                current_step:
                  description: The step that the index is expected to be in.
                  allOf:
                  - "$ref": "#/components/schemas/ilm.move_to_step.StepKey"
                next_step:
                  description: The step that you want to run.
                  allOf:
                  - "$ref": "#/components/schemas/ilm.move_to_step.StepKey"
              required:
              - current_step
              - next_step
            examples:
              MoveToStepRequestExample1:
                summary: Move to forcemerge step
                description: 'Run `POST _ilm/move/my-index-000001` to move `my-index-000001`
                  from the initial step to the `forcemerge` step.

                  '
                value: |-
                  {
                    "current_step": {
                      "phase": "new",
                      "action": "complete",
                      "name": "complete"
                    },
                    "next_step": {
                      "phase": "warm",
                      "action": "forcemerge",
                      "name": "forcemerge"
                    }
                  }
              MoveToStepRequestExample2:
                summary: Move to warm step
                description: 'Run `POST _ilm/move/my-index-000001` to move `my-index-000001`
                  from the end of hot phase into the start of warm.

                  '
                value: |-
                  {
                    "current_step": {
                      "phase": "hot",
                      "action": "complete",
                      "name": "complete"
                    },
                    "next_step": {
                      "phase": "warm"
                    }
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
              examples:
                MoveToStepResponseExample1:
                  description: 'A successful response when running a specific step
                    in a lifecycle policy.

                    '
                  value: |-
                    {
                      "acknowledged": true
                    }
      x-state: Generally available; Added in 6.6.0
      x-codeSamples:
      - lang: Console
        source: |-
          POST _ilm/move/my-index-000001
          {
            "current_step": {
              "phase": "new",
              "action": "complete",
              "name": "complete"
            },
            "next_step": {
              "phase": "warm",
              "action": "forcemerge",
              "name": "forcemerge"
            }
          }
      - lang: Python
        source: |-
          resp = client.ilm.move_to_step(
              index="my-index-000001",
              current_step={
                  "phase": "new",
                  "action": "complete",
                  "name": "complete"
              },
              next_step={
                  "phase": "warm",
                  "action": "forcemerge",
                  "name": "forcemerge"
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.ilm.moveToStep({
            index: "my-index-000001",
            current_step: {
              phase: "new",
              action: "complete",
              name: "complete",
            },
            next_step: {
              phase: "warm",
              action: "forcemerge",
              name: "forcemerge",
            },
          });
      - lang: Ruby
        source: |-
          response = client.ilm.move_to_step(
            index: "my-index-000001",
            body: {
              "current_step": {
                "phase": "new",
                "action": "complete",
                "name": "complete"
              },
              "next_step": {
                "phase": "warm",
                "action": "forcemerge",
                "name": "forcemerge"
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->ilm()->moveToStep([
              "index" => "my-index-000001",
              "body" => [
                  "current_step" => [
                      "phase" => "new",
                      "action" => "complete",
                      "name" => "complete",
                  ],
                  "next_step" => [
                      "phase" => "warm",
                      "action" => "forcemerge",
                      "name" => "forcemerge",
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"current_step":{"phase":"new","action":"complete","name":"complete"},"next_step":{"phase":"warm","action":"forcemerge","name":"forcemerge"}}''
          "$ELASTICSEARCH_URL/_ilm/move/my-index-000001"'
      - lang: Java
        source: |
          client.ilm().moveToStep(m -> m
              .currentStep(c -> c
                  .action("complete")
                  .name("complete")
                  .phase("new")
              )
              .index("my-index-000001")
              .nextStep(n -> n
                  .action("forcemerge")
                  .name("forcemerge")
                  .phase("warm")
              )
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/{index}/_ilm/remove":
    post:
      tags:
      - ilm
      summary: Remove policies from an index
      description: |
        Remove the assigned lifecycle policies from an index or a data stream's backing indices.
        It also stops managing the indices.

        ## Required authorization

        * Index privileges: `manage_ilm`
      operationId: ilm-remove-policy
      parameters:
      - in: path
        name: index
        description: The name of the index to remove policy on
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.IndexName"
        style: simple
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  failed_indexes:
                    type: array
                    items:
                      "$ref": "#/components/schemas/_types.IndexName"
                  has_failures:
                    type: boolean
                required:
                - failed_indexes
                - has_failures
              examples:
                RemovePolicyResponseExample1:
                  description: A successful response when removing a lifecycle policy
                    from an index.
                  value: |-
                    {
                      "has_failures" : false,
                      "failed_indexes" : []
                    }
      x-state: Generally available; Added in 6.6.0
      x-codeSamples:
      - lang: Console
        source: 'POST logs-my_app-default/_ilm/remove

          '
      - lang: Python
        source: |-
          resp = client.ilm.remove_policy(
              index="logs-my_app-default",
          )
      - lang: JavaScript
        source: |-
          const response = await client.ilm.removePolicy({
            index: "logs-my_app-default",
          });
      - lang: Ruby
        source: |-
          response = client.ilm.remove_policy(
            index: "logs-my_app-default"
          )
      - lang: PHP
        source: |-
          $resp = $client->ilm()->removePolicy([
              "index" => "logs-my_app-default",
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/logs-my_app-default/_ilm/remove"'
      - lang: Java
        source: |
          client.ilm().removePolicy(r -> r
              .index("logs-my_app-default")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/{index}/_ilm/retry":
    post:
      tags:
      - ilm
      summary: Retry a policy
      description: |
        Retry running the lifecycle policy for an index that is in the ERROR step.
        The API sets the policy back to the step where the error occurred and runs the step.
        Use the explain lifecycle state API to determine whether an index is in the ERROR step.

        ## Required authorization

        * Index privileges: `manage_ilm`
      operationId: ilm-retry
      parameters:
      - in: path
        name: index
        description: The name of the indices (comma-separated) whose failed lifecycle
          step is to be retry
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.IndexName"
        style: simple
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
      x-state: Generally available; Added in 6.6.0
      x-codeSamples:
      - lang: Console
        source: 'POST /my-index-000001/_ilm/retry

          '
      - lang: Python
        source: |-
          resp = client.ilm.retry(
              index="my-index-000001",
          )
      - lang: JavaScript
        source: |-
          const response = await client.ilm.retry({
            index: "my-index-000001",
          });
      - lang: Ruby
        source: |-
          response = client.ilm.retry(
            index: "my-index-000001"
          )
      - lang: PHP
        source: |-
          $resp = $client->ilm()->retry([
              "index" => "my-index-000001",
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/my-index-000001/_ilm/retry"'
      - lang: Java
        source: |
          client.ilm().retry(r -> r
              .index("my-index-000001")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_ilm/start":
    post:
      tags:
      - ilm
      summary: Start the ILM plugin
      description: |
        Start the index lifecycle management plugin if it is currently stopped.
        ILM is started automatically when the cluster is formed.
        Restarting ILM is necessary only when it has been stopped using the stop ILM API.

        ## Required authorization

        * Cluster privileges: `manage_ilm`
      operationId: ilm-start
      parameters:
      - in: query
        name: master_timeout
        description: Period to wait for a connection to the master node. If no response
          is received before the timeout expires, the request fails and returns an
          error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: timeout
        description: Period to wait for a response. If no response is received before
          the timeout expires, the request fails and returns an error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
              examples:
                StartILMResponseExample1:
                  description: A successful response when stating the ILM plugin.
                  value: |-
                    {
                      "acknowledged": true
                    }
      x-state: Generally available; Added in 6.6.0
      x-codeSamples:
      - lang: Console
        source: 'POST _ilm/start

          '
      - lang: Python
        source: resp = client.ilm.start()
      - lang: JavaScript
        source: const response = await client.ilm.start();
      - lang: Ruby
        source: response = client.ilm.start
      - lang: PHP
        source: "$resp = $client->ilm()->start();"
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_ilm/start"'
      - lang: Java
        source: 'client.ilm().start(s -> s);

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_ilm/stop":
    post:
      tags:
      - ilm
      summary: Stop the ILM plugin
      description: |
        Halt all lifecycle management operations and stop the index lifecycle management plugin.
        This is useful when you are performing maintenance on the cluster and need to prevent ILM from performing any actions on your indices.

        The API returns as soon as the stop request has been acknowledged, but the plugin might continue to run until in-progress operations complete and the plugin can be safely stopped.
        Use the get ILM status API to check whether ILM is running.

        ## Required authorization

        * Cluster privileges: `manage_ilm`
      operationId: ilm-stop
      parameters:
      - in: query
        name: master_timeout
        description: Period to wait for a connection to the master node. If no response
          is received before the timeout expires, the request fails and returns an
          error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: timeout
        description: Period to wait for a response. If no response is received before
          the timeout expires, the request fails and returns an error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
              examples:
                StopILMResponseExample1:
                  description: A successful response when stopping the ILM plugin.
                  value: |-
                    {
                      "acknowledged": true
                    }
      x-state: Generally available; Added in 6.6.0
      x-codeSamples:
      - lang: Console
        source: 'POST _ilm/stop

          '
      - lang: Python
        source: resp = client.ilm.stop()
      - lang: JavaScript
        source: const response = await client.ilm.stop();
      - lang: Ruby
        source: response = client.ilm.stop
      - lang: PHP
        source: "$resp = $client->ilm()->stop();"
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_ilm/stop"'
      - lang: Java
        source: 'client.ilm().stop(s -> s);

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/{index}/_block/{block}":
    put:
      tags:
      - indices
      summary: Add an index block
      description: |-
        Add an index block to an index.
        Index blocks limit the operations allowed on an index by blocking specific operation types.
      operationId: indices-add-block
      parameters:
      - in: path
        name: index
        description: |-
          A comma-separated list or wildcard expression of index names used to limit the request.
          By default, you must explicitly name the indices you are adding blocks to.
          To allow the adding of blocks to indices with `_all`, `*`, or other wildcard expressions, change the `action.destructive_requires_name` setting to `false`.
          You can update this setting in the `elasticsearch.yml` file or by using the cluster update settings API.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Indices"
        style: simple
      - in: path
        name: block
        description: |+
          The block type to add to the index.

          Supported values include:
            - `metadata`: Disable metadata changes, such as closing the index.
            - `read`: Disable read operations.
            - `read_only`: Disable write operations and metadata changes.
            - `write`: Disable write operations. However, metadata changes are still allowed.

        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/indices._types.IndicesBlockOptions"
        style: simple
      - in: query
        name: allow_no_indices
        description: |-
          If `false`, the request returns an error if any wildcard expression, index alias, or `_all` value targets only missing or closed indices.
          This behavior applies even if the request targets other open indices.
          For example, a request targeting `foo*,bar*` returns an error if an index starts with `foo` but no index starts with `bar`.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: expand_wildcards
        description: |+
          The type of index that wildcard patterns can match.
          If the request can target data streams, this argument determines whether wildcard expressions match hidden data streams.
          It supports comma-separated values, such as `open,hidden`.

          Supported values include:
            - `all`: Match any data stream or index, including hidden ones.
            - `open`: Match open, non-hidden indices. Also matches any non-hidden data stream.
            - `closed`: Match closed, non-hidden indices. Also matches any non-hidden data stream. Data streams cannot be closed.
            - `hidden`: Match hidden data streams and hidden indices. Must be combined with `open`, `closed`, or `both`.
            - `none`: Wildcard expressions are not accepted.

        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.ExpandWildcards"
        style: form
      - in: query
        name: ignore_unavailable
        description: If `false`, the request returns an error if it targets a missing
          or closed index.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: master_timeout
        description: |-
          The period to wait for the master node.
          If the master node is not available before the timeout expires, the request fails and returns an error.
          It can also be set to `-1` to indicate that the request should never timeout.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: timeout
        description: |-
          The period to wait for a response from all relevant nodes in the cluster after updating the cluster metadata.
          If no response is received before the timeout expires, the cluster metadata update still applies but the response will indicate that it was not completely acknowledged.
          It can also be set to `-1` to indicate that the request should never timeout.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  acknowledged:
                    type: boolean
                  shards_acknowledged:
                    type: boolean
                  indices:
                    type: array
                    items:
                      "$ref": "#/components/schemas/indices.add_block.AddIndicesBlockStatus"
                required:
                - acknowledged
                - shards_acknowledged
                - indices
              examples:
                IndicesAddBlockResponseExample1:
                  description: A successful response from `PUT /my-index-000001/_block/write`,
                    which adds an index block to an index.'
                  value: |-
                    {
                      "acknowledged" : true,
                      "shards_acknowledged" : true,
                      "indices" : [ {
                        "name" : "my-index-000001",
                        "blocked" : true
                      } ]
                    }
      x-state: Generally available; Added in 7.9.0
      x-codeSamples:
      - lang: Console
        source: 'PUT /my-index-000001/_block/write

          '
      - lang: Python
        source: |-
          resp = client.indices.add_block(
              index="my-index-000001",
              block="write",
          )
      - lang: JavaScript
        source: |-
          const response = await client.indices.addBlock({
            index: "my-index-000001",
            block: "write",
          });
      - lang: Ruby
        source: |-
          response = client.indices.add_block(
            index: "my-index-000001",
            block: "write"
          )
      - lang: PHP
        source: |-
          $resp = $client->indices()->addBlock([
              "index" => "my-index-000001",
              "block" => "write",
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/my-index-000001/_block/write"'
      - lang: Java
        source: |
          client.indices().addBlock(a -> a
              .block(IndicesBlockOptions.Write)
              .index("my-index-000001")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    delete:
      tags:
      - indices
      summary: Remove an index block
      description: |
        Remove an index block from an index.
        Index blocks limit the operations allowed on an index by blocking specific operation types.

        ## Required authorization

        * Index privileges: `manage`
      operationId: indices-remove-block
      parameters:
      - in: path
        name: index
        description: |-
          A comma-separated list or wildcard expression of index names used to limit the request.
          By default, you must explicitly name the indices you are removing blocks from.
          To allow the removal of blocks from indices with `_all`, `*`, or other wildcard expressions, change the `action.destructive_requires_name` setting to `false`.
          You can update this setting in the `elasticsearch.yml` file or by using the cluster update settings API.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Indices"
        style: simple
      - in: path
        name: block
        description: |+
          The block type to remove from the index.

          Supported values include:
            - `metadata`: Disable metadata changes, such as closing the index.
            - `read`: Disable read operations.
            - `read_only`: Disable write operations and metadata changes.
            - `write`: Disable write operations. However, metadata changes are still allowed.

        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/indices._types.IndicesBlockOptions"
        style: simple
      - in: query
        name: allow_no_indices
        description: |-
          If `false`, the request returns an error if any wildcard expression, index alias, or `_all` value targets only missing or closed indices.
          This behavior applies even if the request targets other open indices.
          For example, a request targeting `foo*,bar*` returns an error if an index starts with `foo` but no index starts with `bar`.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: expand_wildcards
        description: |+
          The type of index that wildcard patterns can match.
          If the request can target data streams, this argument determines whether wildcard expressions match hidden data streams.
          It supports comma-separated values, such as `open,hidden`.

          Supported values include:
            - `all`: Match any data stream or index, including hidden ones.
            - `open`: Match open, non-hidden indices. Also matches any non-hidden data stream.
            - `closed`: Match closed, non-hidden indices. Also matches any non-hidden data stream. Data streams cannot be closed.
            - `hidden`: Match hidden data streams and hidden indices. Must be combined with `open`, `closed`, or `both`.
            - `none`: Wildcard expressions are not accepted.

        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.ExpandWildcards"
        style: form
      - in: query
        name: ignore_unavailable
        description: If `false`, the request returns an error if it targets a missing
          or closed index.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: master_timeout
        description: |-
          The period to wait for the master node.
          If the master node is not available before the timeout expires, the request fails and returns an error.
          It can also be set to `-1` to indicate that the request should never timeout.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: timeout
        description: |-
          The period to wait for a response from all relevant nodes in the cluster after updating the cluster metadata.
          If no response is received before the timeout expires, the cluster metadata update still applies but the response will indicate that it was not completely acknowledged.
          It can also be set to `-1` to indicate that the request should never timeout.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  acknowledged:
                    type: boolean
                  indices:
                    type: array
                    items:
                      "$ref": "#/components/schemas/indices.remove_block.RemoveIndicesBlockStatus"
                required:
                - acknowledged
                - indices
              examples:
                IndicesRemoveBlockResponseExample1:
                  description: A successful response from `DELETE /my-index-000001/_block/write`,
                    which removes an index block from an index.'
                  value: |-
                    {
                      "acknowledged" : true,
                      "indices" : [ {
                        "name" : "my-index-000001",
                        "unblocked" : true
                      } ]
                    }
      x-state: Generally available; Added in 9.1.0
      x-codeSamples:
      - lang: Console
        source: 'DELETE /my-index-000001/_block/write

          '
      - lang: Python
        source: |-
          resp = client.indices.remove_block(
              index="my-index-000001",
              block="write",
          )
      - lang: JavaScript
        source: |-
          const response = await client.indices.removeBlock({
            index: "my-index-000001",
            block: "write",
          });
      - lang: Ruby
        source: |-
          response = client.indices.remove_block(
            index: "my-index-000001",
            block: "write"
          )
      - lang: PHP
        source: |-
          $resp = $client->indices()->removeBlock([
              "index" => "my-index-000001",
              "block" => "write",
          ]);
      - lang: curl
        source: 'curl -X DELETE -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/my-index-000001/_block/write"'
      - lang: Java
        source: |
          client.indices().removeBlock(r -> r
              .block(IndicesBlockOptions.Write)
              .index("my-index-000001")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/{index}/_analyze":
    post:
      tags:
      - indices
      summary: 'Get tokens from text analysis

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_analyze</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_analyze</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/{index}/_analyze</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/{index}/_analyze</span>\n
        \                     </div>\n                    \n\nThe analyze API performs
        analysis on a text string and returns the resulting tokens.\n\nGenerating
        excessive amount of tokens may cause a node to run out of memory.\nThe `index.analyze.max_token_count`
        setting enables you to limit the number of tokens that can be produced.\nIf
        more than this limit of tokens gets generated, an error occurs.\nThe `_analyze`
        endpoint without a specified index will always use `10000` as its limit.\n\n##
        Required authorization\n\n* Index privileges: `index`\n"
      externalDocs:
        url: https://www.elastic.co/docs/manage-data/data-store/text-analysis
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/indices-analyze.html
      operationId: indices-analyze
      parameters:
      - "$ref": "#/components/parameters/indices.analyze-index"
      - "$ref": "#/components/parameters/indices.analyze-index_"
      requestBody:
        "$ref": "#/components/requestBodies/indices.analyze"
      responses:
        '200':
          "$ref": "#/components/responses/indices.analyze-200"
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: |-
          GET /_analyze
          {
            "analyzer": "standard",
            "text": "this is a test"
          }
      - lang: Python
        source: |-
          resp = client.indices.analyze(
              analyzer="standard",
              text="this is a test",
          )
      - lang: JavaScript
        source: |-
          const response = await client.indices.analyze({
            analyzer: "standard",
            text: "this is a test",
          });
      - lang: Ruby
        source: |-
          response = client.indices.analyze(
            body: {
              "analyzer": "standard",
              "text": "this is a test"
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->indices()->analyze([
              "body" => [
                  "analyzer" => "standard",
                  "text" => "this is a test",
              ],
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"analyzer":"standard","text":"this is a test"}''
          "$ELASTICSEARCH_URL/_analyze"'
      - lang: Java
        source: |
          client.indices().analyze(a -> a
              .analyzer("standard")
              .text("this is a test")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_migration/reindex/{index}/_cancel":
    post:
      tags:
      - migration
      summary: Cancel a migration reindex operation
      description: Cancel a migration reindex attempt for a data stream or index.
      operationId: indices-cancel-migrate-reindex
      parameters:
      - in: path
        name: index
        description: The index or data stream name
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Indices"
        style: simple
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
      x-state: Generally available; Added in 8.18.0
      x-codeSamples:
      - lang: Console
        source: 'POST /_migration/reindex/my-data-stream/_cancel

          '
      - lang: Python
        source: |-
          resp = client.perform_request(
              "POST",
              "/_migration/reindex/my-data-stream/_cancel",
          )
      - lang: JavaScript
        source: |-
          const response = await client.transport.request({
            method: "POST",
            path: "/_migration/reindex/my-data-stream/_cancel",
          });
      - lang: Ruby
        source: |-
          response = client.perform_request(
            "POST",
            "/_migration/reindex/my-data-stream/_cancel",
            {},
          )
      - lang: PHP
        source: |-
          $requestFactory = Psr17FactoryDiscovery::findRequestFactory();
          $request = $requestFactory->createRequest(
              "POST",
              "/_migration/reindex/my-data-stream/_cancel",
          );
          $resp = $client->sendRequest($request);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_migration/reindex/my-data-stream/_cancel"'
      - lang: Java
        source: |
          client.indices().cancelMigrateReindex(c -> c
              .index("my-data-stream")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/{index}/_cache/clear":
    post:
      tags:
      - indices
      summary: 'Clear the cache

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_cache/clear</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/{index}/_cache/clear</span>\n
        \                     </div>\n                    \n\nClear the cache of one
        or more indices.\nFor data streams, the API clears the caches of the stream's
        backing indices.\n\nBy default, the clear cache API clears all caches.\nTo
        clear only specific caches, use the `fielddata`, `query`, or `request` parameters.\nTo
        clear the cache only of specific fields, use the `fields` parameter.\n\n##
        Required authorization\n\n* Index privileges: `manage`\n"
      operationId: indices-clear-cache
      parameters:
      - "$ref": "#/components/parameters/indices.clear_cache-index"
      - "$ref": "#/components/parameters/indices.clear_cache-index_"
      - "$ref": "#/components/parameters/indices.clear_cache-allow_no_indices"
      - "$ref": "#/components/parameters/indices.clear_cache-expand_wildcards"
      - "$ref": "#/components/parameters/indices.clear_cache-fielddata"
      - "$ref": "#/components/parameters/indices.clear_cache-fields"
      - "$ref": "#/components/parameters/indices.clear_cache-ignore_unavailable"
      - "$ref": "#/components/parameters/indices.clear_cache-query"
      - "$ref": "#/components/parameters/indices.clear_cache-request"
      responses:
        '200':
          "$ref": "#/components/responses/indices.clear_cache-200"
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'POST /my-index-000001,my-index-000002/_cache/clear?request=true

          '
      - lang: Python
        source: |-
          resp = client.indices.clear_cache(
              index="my-index-000001,my-index-000002",
              request=True,
          )
      - lang: JavaScript
        source: |-
          const response = await client.indices.clearCache({
            index: "my-index-000001,my-index-000002",
            request: "true",
          });
      - lang: Ruby
        source: |-
          response = client.indices.clear_cache(
            index: "my-index-000001,my-index-000002",
            request: "true"
          )
      - lang: PHP
        source: |-
          $resp = $client->indices()->clearCache([
              "index" => "my-index-000001,my-index-000002",
              "request" => "true",
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/my-index-000001,my-index-000002/_cache/clear?request=true"'
      - lang: Java
        source: |
          client.indices().clearCache(c -> c
              .index(List.of("my-index-000001","my-index-000002"))
              .request(true)
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/{index}/_clone/{target}":
    post:
      tags:
      - indices
      summary: 'Clone an index

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb put\">PUT</span>\n                      <span class=\"operation-path\">/{index}/_clone/{target}</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/{index}/_clone/{target}</span>\n
        \                     </div>\n                    \n\nClone an existing index
        into a new index.\nEach original primary shard is cloned into a new primary
        shard in the new index.\n\nIMPORTANT: Elasticsearch does not apply index templates
        to the resulting index.\nThe API also does not copy index metadata from the
        original index.\nIndex metadata includes aliases, index lifecycle management
        phase definitions, and cross-cluster replication (CCR) follower information.\nFor
        example, if you clone a CCR follower index, the resulting clone will not be
        a follower index.\n\nThe clone API copies most index settings from the source
        index to the resulting index, with the exception of `index.number_of_replicas`
        and `index.auto_expand_replicas`.\nTo set the number of replicas in the resulting
        index, configure these settings in the clone request.\n\nCloning works as
        follows:\n\n* First, it creates a new target index with the same definition
        as the source index.\n* Then it hard-links segments from the source index
        into the target index. If the file system does not support hard-linking, all
        segments are copied into the new index, which is a much more time consuming
        process.\n* Finally, it recovers the target index as though it were a closed
        index which had just been re-opened.\n\nIMPORTANT: Indices can only be cloned
        if they meet the following requirements:\n\n* The index must be marked as
        read-only and have a cluster health status of green.\n* The target index must
        not exist.\n* The source index must have the same number of primary shards
        as the target index.\n* The node handling the clone process must have sufficient
        free disk space to accommodate a second copy of the existing index.\n\nThe
        current write index on a data stream cannot be cloned.\nIn order to clone
        the current write index, the data stream must first be rolled over so that
        a new write index is created and then the previous write index can be cloned.\n\nNOTE:
        Mappings cannot be specified in the `_clone` request. The mappings of the
        source index will be used for the target index.\n\n**Monitor the cloning process**\n\nThe
        cloning process can be monitored with the cat recovery API or the cluster
        health API can be used to wait until all primary shards have been allocated
        by setting the `wait_for_status` parameter to `yellow`.\n\nThe `_clone` API
        returns as soon as the target index has been added to the cluster state, before
        any shards have been allocated.\nAt this point, all shards are in the state
        unassigned.\nIf, for any reason, the target index can't be allocated, its
        primary shard will remain unassigned until it can be allocated on that node.\n\nOnce
        the primary shard is allocated, it moves to state initializing, and the clone
        process begins.\nWhen the clone operation completes, the shard will become
        active.\nAt that point, Elasticsearch will try to allocate any replicas and
        may decide to relocate the primary shard to another node.\n\n**Wait for active
        shards**\n\nBecause the clone operation creates a new index to clone the shards
        to, the wait for active shards setting on index creation applies to the clone
        index action as well.\n\n## Required authorization\n\n* Index privileges:
        `manage`\n"
      operationId: indices-clone
      parameters:
      - "$ref": "#/components/parameters/indices.clone-index"
      - "$ref": "#/components/parameters/indices.clone-target"
      - "$ref": "#/components/parameters/indices.clone-master_timeout"
      - "$ref": "#/components/parameters/indices.clone-timeout"
      - "$ref": "#/components/parameters/indices.clone-wait_for_active_shards"
      requestBody:
        "$ref": "#/components/requestBodies/indices.clone"
      responses:
        '200':
          "$ref": "#/components/responses/indices.clone-200"
      x-state: Generally available; Added in 7.4.0
      x-codeSamples:
      - lang: Console
        source: |-
          POST /my_source_index/_clone/my_target_index
          {
            "settings": {
              "index.refresh_interval": "2s"
            },
            "aliases": {
              "my_search_indices": {}
            }
          }
      - lang: Python
        source: |-
          resp = client.indices.clone(
              index="my_source_index",
              target="my_target_index",
              settings={
                  "index.refresh_interval": "2s"
              },
              aliases={
                  "my_search_indices": {}
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.indices.clone({
            index: "my_source_index",
            target: "my_target_index",
            settings: {
              "index.refresh_interval": "2s",
            },
            aliases: {
              my_search_indices: {},
            },
          });
      - lang: Ruby
        source: |-
          response = client.indices.clone(
            index: "my_source_index",
            target: "my_target_index",
            body: {
              "settings": {
                "index.refresh_interval": "2s"
              },
              "aliases": {
                "my_search_indices": {}
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->indices()->clone([
              "index" => "my_source_index",
              "target" => "my_target_index",
              "body" => [
                  "settings" => [
                      "index.refresh_interval" => "2s",
                  ],
                  "aliases" => [
                      "my_search_indices" => new ArrayObject([]),
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"settings":{"index.refresh_interval":"2s"},"aliases":{"my_search_indices":{}}}''
          "$ELASTICSEARCH_URL/my_source_index/_clone/my_target_index"'
      - lang: Java
        source: |
          client.indices().clone(c -> c
              .aliases("my_search_indices", a -> a)
              .index("my_source_index")
              .settings("index.refresh_interval", JsonData.fromJson("\"2s\""))
              .target("my_target_index")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/{index}/_close":
    post:
      tags:
      - indices
      summary: Close an index
      description: |
        A closed index is blocked for read or write operations and does not allow all operations that opened indices allow.
        It is not possible to index documents or to search for documents in a closed index.
        Closed indices do not have to maintain internal data structures for indexing or searching documents, which results in a smaller overhead on the cluster.

        When opening or closing an index, the master node is responsible for restarting the index shards to reflect the new state of the index.
        The shards will then go through the normal recovery process.
        The data of opened and closed indices is automatically replicated by the cluster to ensure that enough shard copies are safely kept around at all times.

        You can open and close multiple indices.
        An error is thrown if the request explicitly refers to a missing index.
        This behaviour can be turned off using the `ignore_unavailable=true` parameter.

        By default, you must explicitly name the indices you are opening or closing.
        To open or close indices with `_all`, `*`, or other wildcard expressions, change the` action.destructive_requires_name` setting to `false`. This setting can also be changed with the cluster update settings API.

        Closed indices consume a significant amount of disk-space which can cause problems in managed environments.
        Closing indices can be turned off with the cluster settings API by setting `cluster.indices.close.enable` to `false`.

        ## Required authorization

        * Index privileges: `manage`
      operationId: indices-close
      parameters:
      - in: path
        name: index
        description: Comma-separated list or wildcard expression of index names used
          to limit the request.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Indices"
        style: simple
      - in: query
        name: allow_no_indices
        description: |-
          If `false`, the request returns an error if any wildcard expression, index alias, or `_all` value targets only missing or closed indices.
          This behavior applies even if the request targets other open indices.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: expand_wildcards
        description: |+
          Type of index that wildcard patterns can match.
          If the request can target data streams, this argument determines whether wildcard expressions match hidden data streams.
          Supports comma-separated values, such as `open,hidden`.

          Supported values include:
            - `all`: Match any data stream or index, including hidden ones.
            - `open`: Match open, non-hidden indices. Also matches any non-hidden data stream.
            - `closed`: Match closed, non-hidden indices. Also matches any non-hidden data stream. Data streams cannot be closed.
            - `hidden`: Match hidden data streams and hidden indices. Must be combined with `open`, `closed`, or `both`.
            - `none`: Wildcard expressions are not accepted.

        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.ExpandWildcards"
        style: form
      - in: query
        name: ignore_unavailable
        description: If `false`, the request returns an error if it targets a missing
          or closed index.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: master_timeout
        description: |-
          Period to wait for a connection to the master node.
          If no response is received before the timeout expires, the request fails and returns an error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: timeout
        description: |-
          Period to wait for a response.
          If no response is received before the timeout expires, the request fails and returns an error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: wait_for_active_shards
        description: |-
          The number of shard copies that must be active before proceeding with the operation.
          Set to `all` or any positive integer up to the total number of shards in the index (`number_of_replicas+1`).
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.WaitForActiveShards"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  acknowledged:
                    type: boolean
                  indices:
                    type: object
                    additionalProperties:
                      "$ref": "#/components/schemas/indices.close.CloseIndexResult"
                  shards_acknowledged:
                    type: boolean
                required:
                - acknowledged
                - indices
                - shards_acknowledged
              examples:
                CloseIndexResponseExample1:
                  description: A successful response for closing an index.
                  value: |-
                    {
                      "acknowledged": true,
                      "shards_acknowledged": true,
                      "indices": {
                        "my-index-000001": {
                          "closed": true
                        }
                      }
                    }
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'POST /my-index-00001/_close

          '
      - lang: Python
        source: |-
          resp = client.indices.close(
              index="my-index-00001",
          )
      - lang: JavaScript
        source: |-
          const response = await client.indices.close({
            index: "my-index-00001",
          });
      - lang: Ruby
        source: |-
          response = client.indices.close(
            index: "my-index-00001"
          )
      - lang: PHP
        source: |-
          $resp = $client->indices()->close([
              "index" => "my-index-00001",
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/my-index-00001/_close"'
      - lang: Java
        source: |
          client.indices().close(c -> c
              .index("my-index-00001")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/{index}":
    get:
      tags:
      - indices
      summary: Get index information
      description: |
        Get information about one or more indices. For data streams, the API returns information about the
        stream’s backing indices.

        ## Required authorization

        * Index privileges: `view_index_metadata`,`manage`
      operationId: indices-get
      parameters:
      - in: path
        name: index
        description: |-
          Comma-separated list of data streams, indices, and index aliases used to limit the request.
          Wildcard expressions (*) are supported.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Indices"
        style: simple
      - in: query
        name: allow_no_indices
        description: |-
          If false, the request returns an error if any wildcard expression, index alias, or _all value targets only
          missing or closed indices. This behavior applies even if the request targets other open indices. For example,
          a request targeting foo*,bar* returns an error if an index starts with foo but no index starts with bar.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: expand_wildcards
        description: |+
          Type of index that wildcard expressions can match. If the request can target data streams, this argument
          determines whether wildcard expressions match hidden data streams. Supports comma-separated values,
          such as open,hidden.

          Supported values include:
            - `all`: Match any data stream or index, including hidden ones.
            - `open`: Match open, non-hidden indices. Also matches any non-hidden data stream.
            - `closed`: Match closed, non-hidden indices. Also matches any non-hidden data stream. Data streams cannot be closed.
            - `hidden`: Match hidden data streams and hidden indices. Must be combined with `open`, `closed`, or `both`.
            - `none`: Wildcard expressions are not accepted.

        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.ExpandWildcards"
        style: form
      - in: query
        name: flat_settings
        description: If true, returns settings in flat format.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: ignore_unavailable
        description: If false, requests that target a missing index return an error.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: include_defaults
        description: If true, return all default settings in the response.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: local
        description: If true, the request retrieves information from the local node
          only. Defaults to false, which means information is retrieved from the master
          node.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: master_timeout
        description: Period to wait for a connection to the master node. If no response
          is received before the timeout expires, the request fails and returns an
          error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: features
        description: |+
          Return only information on specified index features

          Supported values include: `aliases`, `mappings`, `settings`

        deprecated: false
        schema:
          "$ref": "#/components/schemas/indices.get.Features"
        x-state: Generally available; Added in 8.1.0
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                additionalProperties:
                  "$ref": "#/components/schemas/indices._types.IndexState"
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'GET /my-index-000001

          '
      - lang: Python
        source: |-
          resp = client.indices.get(
              index="my-index-000001",
          )
      - lang: JavaScript
        source: |-
          const response = await client.indices.get({
            index: "my-index-000001",
          });
      - lang: Ruby
        source: |-
          response = client.indices.get(
            index: "my-index-000001"
          )
      - lang: PHP
        source: |-
          $resp = $client->indices()->get([
              "index" => "my-index-000001",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/my-index-000001"'
      - lang: Java
        source: |
          client.indices().get(g -> g
              .index("my-index-000001")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    put:
      tags:
      - indices
      summary: Create an index
      description: |
        You can use the create index API to add a new index to an Elasticsearch cluster.
        When creating an index, you can specify the following:

        * Settings for the index.
        * Mappings for fields in the index.
        * Index aliases

        **Wait for active shards**

        By default, index creation will only return a response to the client when the primary copies of each shard have been started, or the request times out.
        The index creation response will indicate what happened.
        For example, `acknowledged` indicates whether the index was successfully created in the cluster, `while shards_acknowledged` indicates whether the requisite number of shard copies were started for each shard in the index before timing out.
        Note that it is still possible for either `acknowledged` or `shards_acknowledged` to be `false`, but for the index creation to be successful.
        These values simply indicate whether the operation completed before the timeout.
        If `acknowledged` is false, the request timed out before the cluster state was updated with the newly created index, but it probably will be created sometime soon.
        If `shards_acknowledged` is false, then the request timed out before the requisite number of shards were started (by default just the primaries), even if the cluster state was successfully updated to reflect the newly created index (that is to say, `acknowledged` is `true`).

        You can change the default of only waiting for the primary shards to start through the index setting `index.write.wait_for_active_shards`.
        Note that changing this setting will also affect the `wait_for_active_shards` value on all subsequent write operations.

        ## Required authorization

        * Index privileges: `create_index`,`manage`
      operationId: indices-create
      parameters:
      - in: path
        name: index
        description: |-
          Name of the index you wish to create.
          Index names must meet the following criteria:

          * Lowercase only
          * Cannot include `\`, `/`, `*`, `?`, `"`, `<`, `>`, `|`, ` ` (space character), `,`, or `#`
          * Indices prior to 7.0 could contain a colon (`:`), but that has been deprecated and will not be supported in later versions
          * Cannot start with `-`, `_`, or `+`
          * Cannot be `.` or `..`
          * Cannot be longer than 255 bytes (note thtat it is bytes, so multi-byte characters will reach the limit faster)
          * Names starting with `.` are deprecated, except for hidden indices and internal indices managed by plugins
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.IndexName"
        style: simple
      - in: query
        name: master_timeout
        description: |-
          Period to wait for a connection to the master node.
          If no response is received before the timeout expires, the request fails and returns an error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: timeout
        description: |-
          Period to wait for a response.
          If no response is received before the timeout expires, the request fails and returns an error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: wait_for_active_shards
        description: |-
          The number of shard copies that must be active before proceeding with the operation.
          Set to `all` or any positive integer up to the total number of shards in the index (`number_of_replicas+1`).
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.WaitForActiveShards"
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                aliases:
                  description: Aliases for the index.
                  type: object
                  additionalProperties:
                    "$ref": "#/components/schemas/indices._types.Alias"
                mappings:
                  description: |-
                    Mapping for fields in the index. If specified, this mapping can include:
                    - Field names
                    - Field data types
                    - Mapping parameters
                  allOf:
                  - "$ref": "#/components/schemas/_types.mapping.TypeMapping"
                settings:
                  description: Configuration options for the index.
                  allOf:
                  - "$ref": "#/components/schemas/indices._types.IndexSettings"
            examples:
              indicesCreateRequestExample1:
                summary: Create an index.
                description: This request specifies the `number_of_shards` and `number_of_replicas`.
                value: |-
                  {
                    "settings": {
                      "number_of_shards": 3,
                      "number_of_replicas": 2
                    }
                  }
              indicesCreateRequestExample2:
                summary: Create an index with mappings.
                description: You can provide mapping definitions in the create index
                  API requests.
                value: |-
                  {
                    "settings": {
                      "number_of_shards": 1
                    },
                    "mappings": {
                      "properties": {
                        "field1": { "type": "text" }
                      }
                    }
                  }
              indicesCreateRequestExample3:
                summary: Create an index with aliases.
                description: 'You can provide mapping definitions in the create index
                  API requests. Index alias names also support date math.

                  '
                value: |-
                  {
                    "aliases": {
                      "alias_1": {},
                      "alias_2": {
                        "filter": {
                          "term": {
                            "user.id": "kimchy"
                          }
                        },
                        "routing": "shard-1"
                      }
                    }
                  }
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  index:
                    allOf:
                    - "$ref": "#/components/schemas/_types.IndexName"
                  shards_acknowledged:
                    type: boolean
                  acknowledged:
                    type: boolean
                required:
                - index
                - shards_acknowledged
                - acknowledged
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: |-
          PUT /my-index-000001
          {
            "settings": {
              "number_of_shards": 3,
              "number_of_replicas": 2
            }
          }
      - lang: Python
        source: |-
          resp = client.indices.create(
              index="my-index-000001",
              settings={
                  "number_of_shards": 3,
                  "number_of_replicas": 2
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.indices.create({
            index: "my-index-000001",
            settings: {
              number_of_shards: 3,
              number_of_replicas: 2,
            },
          });
      - lang: Ruby
        source: |-
          response = client.indices.create(
            index: "my-index-000001",
            body: {
              "settings": {
                "number_of_shards": 3,
                "number_of_replicas": 2
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->indices()->create([
              "index" => "my-index-000001",
              "body" => [
                  "settings" => [
                      "number_of_shards" => 3,
                      "number_of_replicas" => 2,
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"settings":{"number_of_shards":3,"number_of_replicas":2}}''
          "$ELASTICSEARCH_URL/my-index-000001"'
      - lang: Java
        source: |
          client.indices().create(c -> c
              .index("my-index-000001")
              .settings(s -> s
                  .numberOfShards("3")
                  .numberOfReplicas("2")
              )
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    delete:
      tags:
      - indices
      summary: Delete indices
      description: |
        Deleting an index deletes its documents, shards, and metadata.
        It does not delete related Kibana components, such as data views, visualizations, or dashboards.

        You cannot delete the current write index of a data stream.
        To delete the index, you must roll over the data stream so a new write index is created.
        You can then use the delete index API to delete the previous write index.

        ## Required authorization

        * Index privileges: `delete_index`
      operationId: indices-delete
      parameters:
      - in: path
        name: index
        description: |-
          Comma-separated list of indices to delete.
          You cannot specify index aliases.
          By default, this parameter does not support wildcards (`*`) or `_all`.
          To use wildcards or `_all`, set the `action.destructive_requires_name` cluster setting to `false`.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Indices"
        style: simple
      - in: query
        name: allow_no_indices
        description: |-
          If `false`, the request returns an error if any wildcard expression, index alias, or `_all` value targets only missing or closed indices.
          This behavior applies even if the request targets other open indices.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: expand_wildcards
        description: |+
          Type of index that wildcard patterns can match.
          If the request can target data streams, this argument determines whether wildcard expressions match hidden data streams.
          Supports comma-separated values, such as `open,hidden`.

          Supported values include:
            - `all`: Match any data stream or index, including hidden ones.
            - `open`: Match open, non-hidden indices. Also matches any non-hidden data stream.
            - `closed`: Match closed, non-hidden indices. Also matches any non-hidden data stream. Data streams cannot be closed.
            - `hidden`: Match hidden data streams and hidden indices. Must be combined with `open`, `closed`, or `both`.
            - `none`: Wildcard expressions are not accepted.

        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.ExpandWildcards"
        style: form
      - in: query
        name: ignore_unavailable
        description: If `false`, the request returns an error if it targets a missing
          or closed index.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: master_timeout
        description: |-
          Period to wait for a connection to the master node.
          If no response is received before the timeout expires, the request fails and returns an error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: timeout
        description: |-
          Period to wait for a response.
          If no response is received before the timeout expires, the request fails and returns an error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.IndicesResponseBase"
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'DELETE /books

          '
      - lang: Python
        source: |-
          resp = client.indices.delete(
              index="books",
          )
      - lang: JavaScript
        source: |-
          const response = await client.indices.delete({
            index: "books",
          });
      - lang: Ruby
        source: |-
          response = client.indices.delete(
            index: "books"
          )
      - lang: PHP
        source: |-
          $resp = $client->indices()->delete([
              "index" => "books",
          ]);
      - lang: curl
        source: 'curl -X DELETE -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/books"'
      - lang: Java
        source: |
          client.indices().delete(d -> d
              .index("books")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    head:
      tags:
      - indices
      summary: Check indices
      description: Check if one or more indices, index aliases, or data streams exist.
      operationId: indices-exists
      parameters:
      - in: path
        name: index
        description: Comma-separated list of data streams, indices, and aliases. Supports
          wildcards (`*`).
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Indices"
        style: simple
      - in: query
        name: allow_no_indices
        description: |-
          If `false`, the request returns an error if any wildcard expression, index alias, or `_all` value targets only missing or closed indices.
          This behavior applies even if the request targets other open indices.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: expand_wildcards
        description: |+
          Type of index that wildcard patterns can match.
          If the request can target data streams, this argument determines whether wildcard expressions match hidden data streams.
          Supports comma-separated values, such as `open,hidden`.

          Supported values include:
            - `all`: Match any data stream or index, including hidden ones.
            - `open`: Match open, non-hidden indices. Also matches any non-hidden data stream.
            - `closed`: Match closed, non-hidden indices. Also matches any non-hidden data stream. Data streams cannot be closed.
            - `hidden`: Match hidden data streams and hidden indices. Must be combined with `open`, `closed`, or `both`.
            - `none`: Wildcard expressions are not accepted.

        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.ExpandWildcards"
        style: form
      - in: query
        name: flat_settings
        description: If `true`, returns settings in flat format.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: ignore_unavailable
        description: If `false`, the request returns an error if it targets a missing
          or closed index.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: include_defaults
        description: If `true`, return all default settings in the response.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: local
        description: If `true`, the request retrieves information from the local node
          only.
        deprecated: false
        schema:
          type: boolean
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json: {}
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'HEAD my-data-stream

          '
      - lang: Python
        source: |-
          resp = client.indices.exists(
              index="my-data-stream",
          )
      - lang: JavaScript
        source: |-
          const response = await client.indices.exists({
            index: "my-data-stream",
          });
      - lang: Ruby
        source: |-
          response = client.indices.exists(
            index: "my-data-stream"
          )
      - lang: PHP
        source: |-
          $resp = $client->indices()->exists([
              "index" => "my-data-stream",
          ]);
      - lang: curl
        source: 'curl --head -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/my-data-stream"'
      - lang: Java
        source: |
          client.indices().exists(e -> e
              .index("my-data-stream")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_data_stream/{name}":
    get:
      tags:
      - data stream
      summary: 'Get data streams

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_data_stream</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_data_stream/{name}</span>\n
        \                     </div>\n                    \n\nGet information about
        one or more data streams.\n\n## Required authorization\n\n* Index privileges:
        `view_index_metadata`\n"
      operationId: indices-get-data-stream
      parameters:
      - "$ref": "#/components/parameters/indices.get_data_stream-name"
      - "$ref": "#/components/parameters/indices.get_data_stream-expand_wildcards"
      - "$ref": "#/components/parameters/indices.get_data_stream-include_defaults"
      - "$ref": "#/components/parameters/indices.get_data_stream-master_timeout"
      - "$ref": "#/components/parameters/indices.get_data_stream-verbose"
      responses:
        '200':
          "$ref": "#/components/responses/indices.get_data_stream-200"
      x-state: Generally available; Added in 7.9.0
      x-codeSamples:
      - lang: Console
        source: 'GET _data_stream/my-data-stream

          '
      - lang: Python
        source: |-
          resp = client.indices.get_data_stream(
              name="my-data-stream",
          )
      - lang: JavaScript
        source: |-
          const response = await client.indices.getDataStream({
            name: "my-data-stream",
          });
      - lang: Ruby
        source: |-
          response = client.indices.get_data_stream(
            name: "my-data-stream"
          )
      - lang: PHP
        source: |-
          $resp = $client->indices()->getDataStream([
              "name" => "my-data-stream",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_data_stream/my-data-stream"'
      - lang: Java
        source: |
          client.indices().getDataStream(g -> g
              .name("my-data-stream")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    put:
      tags:
      - data stream
      summary: Create a data stream
      description: |
        You must have a matching index template with data stream enabled.

        ## Required authorization

        * Index privileges: `create_index`
      operationId: indices-create-data-stream
      parameters:
      - in: path
        name: name
        description: |-
          Name of the data stream, which must meet the following criteria:
          Lowercase only;
          Cannot include `\`, `/`, `*`, `?`, `"`, `<`, `>`, `|`, `,`, `#`, `:`, or a space character;
          Cannot start with `-`, `_`, `+`, or `.ds-`;
          Cannot be `.` or `..`;
          Cannot be longer than 255 bytes. Multi-byte characters count towards this limit faster.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.DataStreamName"
        style: simple
      - in: query
        name: master_timeout
        description: Period to wait for a connection to the master node. If no response
          is received before the timeout expires, the request fails and returns an
          error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: timeout
        description: Period to wait for a response. If no response is received before
          the timeout expires, the request fails and returns an error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
      x-state: Generally available; Added in 7.9.0
      x-codeSamples:
      - lang: Console
        source: 'PUT _data_stream/logs-foo-bar

          '
      - lang: Python
        source: |-
          resp = client.indices.create_data_stream(
              name="logs-foo-bar",
          )
      - lang: JavaScript
        source: |-
          const response = await client.indices.createDataStream({
            name: "logs-foo-bar",
          });
      - lang: Ruby
        source: |-
          response = client.indices.create_data_stream(
            name: "logs-foo-bar"
          )
      - lang: PHP
        source: |-
          $resp = $client->indices()->createDataStream([
              "name" => "logs-foo-bar",
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_data_stream/logs-foo-bar"'
      - lang: Java
        source: |
          client.indices().createDataStream(c -> c
              .name("logs-foo-bar")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    delete:
      tags:
      - data stream
      summary: Delete data streams
      description: |
        Deletes one or more data streams and their backing indices.

        ## Required authorization

        * Index privileges: `delete_index`
      operationId: indices-delete-data-stream
      parameters:
      - in: path
        name: name
        description: Comma-separated list of data streams to delete. Wildcard (`*`)
          expressions are supported.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.DataStreamNames"
        style: simple
      - in: query
        name: master_timeout
        description: Period to wait for a connection to the master node. If no response
          is received before the timeout expires, the request fails and returns an
          error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: expand_wildcards
        description: |+
          Type of data stream that wildcard patterns can match. Supports comma-separated values,such as `open,hidden`.

          Supported values include:
            - `all`: Match any data stream or index, including hidden ones.
            - `open`: Match open, non-hidden indices. Also matches any non-hidden data stream.
            - `closed`: Match closed, non-hidden indices. Also matches any non-hidden data stream. Data streams cannot be closed.
            - `hidden`: Match hidden data streams and hidden indices. Must be combined with `open`, `closed`, or `both`.
            - `none`: Wildcard expressions are not accepted.

        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.ExpandWildcards"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
      x-state: Generally available; Added in 7.9.0
      x-codeSamples:
      - lang: Console
        source: 'DELETE _data_stream/my-data-stream

          '
      - lang: Python
        source: |-
          resp = client.indices.delete_data_stream(
              name="my-data-stream",
          )
      - lang: JavaScript
        source: |-
          const response = await client.indices.deleteDataStream({
            name: "my-data-stream",
          });
      - lang: Ruby
        source: |-
          response = client.indices.delete_data_stream(
            name: "my-data-stream"
          )
      - lang: PHP
        source: |-
          $resp = $client->indices()->deleteDataStream([
              "name" => "my-data-stream",
          ]);
      - lang: curl
        source: 'curl -X DELETE -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_data_stream/my-data-stream"'
      - lang: Java
        source: |
          client.indices().deleteDataStream(d -> d
              .name("my-data-stream")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_create_from/{source}/{dest}":
    post:
      tags:
      - migration
      summary: 'Create an index from a source index

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb put\">PUT</span>\n                      <span class=\"operation-path\">/_create_from/{source}/{dest}</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_create_from/{source}/{dest}</span>\n
        \                     </div>\n                    \n\nCopy the mappings and
        settings from the source index to a destination index while allowing request
        settings and mappings to override the source values."
      operationId: indices-create-from
      parameters:
      - "$ref": "#/components/parameters/indices.create_from-source"
      - "$ref": "#/components/parameters/indices.create_from-dest"
      requestBody:
        "$ref": "#/components/requestBodies/indices.create_from"
      responses:
        '200':
          "$ref": "#/components/responses/indices.create_from-200"
      x-state: Generally available; Added in 8.18.0
      x-codeSamples:
      - lang: Console
        source: 'POST _create_from/my-index/my-new-index

          '
      - lang: Python
        source: |-
          resp = client.perform_request(
              "POST",
              "/_create_from/my-index/my-new-index",
          )
      - lang: JavaScript
        source: |-
          const response = await client.transport.request({
            method: "POST",
            path: "/_create_from/my-index/my-new-index",
          });
      - lang: Ruby
        source: |-
          response = client.perform_request(
            "POST",
            "/_create_from/my-index/my-new-index",
            {},
          )
      - lang: PHP
        source: |-
          $requestFactory = Psr17FactoryDiscovery::findRequestFactory();
          $request = $requestFactory->createRequest(
              "POST",
              "/_create_from/my-index/my-new-index",
          );
          $resp = $client->sendRequest($request);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_create_from/my-index/my-new-index"'
      - lang: Java
        source: |
          client.indices().createFrom(c -> c
              .dest("my-new-index")
              .source("my-index")
              .createFrom(cr -> cr)
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_data_stream/{name}/_stats":
    get:
      tags:
      - data stream
      summary: 'Get data stream stats

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_data_stream/_stats</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_data_stream/{name}/_stats</span>\n
        \                     </div>\n                    \n\nGet statistics for one
        or more data streams.\n\n## Required authorization\n\n* Index privileges:
        `monitor`\n"
      operationId: indices-data-streams-stats
      parameters:
      - "$ref": "#/components/parameters/indices.data_streams_stats-name"
      - "$ref": "#/components/parameters/indices.data_streams_stats-expand_wildcards"
      responses:
        '200':
          "$ref": "#/components/responses/indices.data_streams_stats-200"
      x-state: Generally available; Added in 7.9.0
      x-codeSamples:
      - lang: Console
        source: 'GET /_data_stream/my-index-000001/_stats

          '
      - lang: Python
        source: |-
          resp = client.indices.data_streams_stats(
              name="my-index-000001",
          )
      - lang: JavaScript
        source: |-
          const response = await client.indices.dataStreamsStats({
            name: "my-index-000001",
          });
      - lang: Ruby
        source: |-
          response = client.indices.data_streams_stats(
            name: "my-index-000001"
          )
      - lang: PHP
        source: |-
          $resp = $client->indices()->dataStreamsStats([
              "name" => "my-index-000001",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_data_stream/my-index-000001/_stats"'
      - lang: Java
        source: |
          client.indices().dataStreamsStats(d -> d
              .name("my-index-000001")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/{index}/_aliases/{name}":
    post:
      tags:
      - indices
      summary: 'Create or update an alias

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb put\">PUT</span>\n                      <span class=\"operation-path\">/{index}/_alias/{name}</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/{index}/_alias/{name}</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb put\">PUT</span>\n                      <span class=\"operation-path\">/{index}/_aliases/{name}</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/{index}/_aliases/{name}</span>\n
        \                     </div>\n                    \n\nAdds a data stream or
        index to an alias."
      externalDocs:
        description: Aliases
        url: https://www.elastic.co/docs/manage-data/data-store/aliases
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/indices-add-alias.html
      operationId: indices-put-alias
      parameters:
      - "$ref": "#/components/parameters/indices.put_alias-index"
      - "$ref": "#/components/parameters/indices.put_alias-name"
      - "$ref": "#/components/parameters/indices.put_alias-master_timeout"
      - "$ref": "#/components/parameters/indices.put_alias-timeout"
      requestBody:
        "$ref": "#/components/requestBodies/indices.put_alias"
      responses:
        '200':
          "$ref": "#/components/responses/indices.put_alias-200"
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: |-
          POST /my-index-2099.05.06-000001/_alias/my-alias
          {
            "filter": {
              "bool": {
                "filter": [
                  {
                    "range": {
                      "@timestamp": {
                        "gte": "now-1d/d",
                        "lt": "now/d"
                      }
                    }
                  },
                  {
                    "term": {
                      "user.id": "kimchy"
                    }
                  }
                ]
              }
            }
          }
      - lang: Python
        source: |-
          resp = client.indices.put_alias(
              index="my-index-2099.05.06-000001",
              name="my-alias",
              filter={
                  "bool": {
                      "filter": [
                          {
                              "range": {
                                  "@timestamp": {
                                      "gte": "now-1d/d",
                                      "lt": "now/d"
                                  }
                              }
                          },
                          {
                              "term": {
                                  "user.id": "kimchy"
                              }
                          }
                      ]
                  }
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.indices.putAlias({
            index: "my-index-2099.05.06-000001",
            name: "my-alias",
            filter: {
              bool: {
                filter: [
                  {
                    range: {
                      "@timestamp": {
                        gte: "now-1d/d",
                        lt: "now/d",
                      },
                    },
                  },
                  {
                    term: {
                      "user.id": "kimchy",
                    },
                  },
                ],
              },
            },
          });
      - lang: Ruby
        source: |-
          response = client.indices.put_alias(
            index: "my-index-2099.05.06-000001",
            name: "my-alias",
            body: {
              "filter": {
                "bool": {
                  "filter": [
                    {
                      "range": {
                        "@timestamp": {
                          "gte": "now-1d/d",
                          "lt": "now/d"
                        }
                      }
                    },
                    {
                      "term": {
                        "user.id": "kimchy"
                      }
                    }
                  ]
                }
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->indices()->putAlias([
              "index" => "my-index-2099.05.06-000001",
              "name" => "my-alias",
              "body" => [
                  "filter" => [
                      "bool" => [
                          "filter" => array(
                              [
                                  "range" => [
                                      "@timestamp" => [
                                          "gte" => "now-1d/d",
                                          "lt" => "now/d",
                                      ],
                                  ],
                              ],
                              [
                                  "term" => [
                                      "user.id" => "kimchy",
                                  ],
                              ],
                          ),
                      ],
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"filter":{"bool":{"filter":[{"range":{"@timestamp":{"gte":"now-1d/d","lt":"now/d"}}},{"term":{"user.id":"kimchy"}}]}}}''
          "$ELASTICSEARCH_URL/my-index-2099.05.06-000001/_alias/my-alias"'
      - lang: Java
        source: |
          client.indices().putAlias(p -> p
              .filter(f -> f
                  .bool(b -> b
                      .filter(List.of(Query.of(q -> q
                              .range(r -> r
                                  .untyped(u -> u
                                      .field("@timestamp")
                                      .gte(JsonData.fromJson("\"now-1d/d\""))
                                      .lt(JsonData.fromJson("\"now/d\""))
                                  )
                              )
                          ),Query.of(qu -> qu
                              .term(t -> t
                                  .field("user.id")
                                  .value(FieldValue.of("kimchy"))
                              )
                          )))
                  )
              )
              .index("my-index-2099.05.06-000001")
              .name("my-alias")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    delete:
      tags:
      - indices
      summary: 'Delete an alias

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb delete\">DELETE</span>\n                      <span
        class=\"operation-path\">/{index}/_alias/{name}</span>\n                      </div>\n
        \                   <div>\n                      <span class=\"operation-verb
        delete\">DELETE</span>\n                      <span class=\"operation-path\">/{index}/_aliases/{name}</span>\n
        \                     </div>\n                    \n\nRemoves a data stream
        or index from an alias.\n\n## Required authorization\n\n* Index privileges:
        `manage`\n"
      operationId: indices-delete-alias
      parameters:
      - "$ref": "#/components/parameters/indices.delete_alias-index"
      - "$ref": "#/components/parameters/indices.delete_alias-name"
      - "$ref": "#/components/parameters/indices.delete_alias-master_timeout"
      - "$ref": "#/components/parameters/indices.delete_alias-timeout"
      responses:
        '200':
          "$ref": "#/components/responses/indices.delete_alias-200"
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'DELETE my-data-stream/_alias/my-alias

          '
      - lang: Python
        source: |-
          resp = client.indices.delete_alias(
              index="my-data-stream",
              name="my-alias",
          )
      - lang: JavaScript
        source: |-
          const response = await client.indices.deleteAlias({
            index: "my-data-stream",
            name: "my-alias",
          });
      - lang: Ruby
        source: |-
          response = client.indices.delete_alias(
            index: "my-data-stream",
            name: "my-alias"
          )
      - lang: PHP
        source: |-
          $resp = $client->indices()->deleteAlias([
              "index" => "my-data-stream",
              "name" => "my-alias",
          ]);
      - lang: curl
        source: 'curl -X DELETE -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/my-data-stream/_alias/my-alias"'
      - lang: Java
        source: |
          client.indices().deleteAlias(d -> d
              .index("my-data-stream")
              .name("my-alias")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_data_stream/{name}/_lifecycle":
    get:
      tags:
      - data stream
      summary: Get data stream lifecycles
      description: Get the data stream lifecycle configuration of one or more data
        streams.
      externalDocs:
        url: https://www.elastic.co/docs/manage-data/lifecycle/data-stream
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/data-streams-get-lifecycle.html
      operationId: indices-get-data-lifecycle
      parameters:
      - in: path
        name: name
        description: |-
          Comma-separated list of data streams to limit the request.
          Supports wildcards (`*`).
          To target all data streams, omit this parameter or use `*` or `_all`.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.DataStreamNames"
        style: simple
      - in: query
        name: expand_wildcards
        description: |+
          Type of data stream that wildcard patterns can match.
          Supports comma-separated values, such as `open,hidden`.

          Supported values include:
            - `all`: Match any data stream or index, including hidden ones.
            - `open`: Match open, non-hidden indices. Also matches any non-hidden data stream.
            - `closed`: Match closed, non-hidden indices. Also matches any non-hidden data stream. Data streams cannot be closed.
            - `hidden`: Match hidden data streams and hidden indices. Must be combined with `open`, `closed`, or `both`.
            - `none`: Wildcard expressions are not accepted.

        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.ExpandWildcards"
        style: form
      - in: query
        name: include_defaults
        description: If `true`, return all default settings in the response.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: master_timeout
        description: Period to wait for a connection to the master node. If no response
          is received before the timeout expires, the request fails and returns an
          error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  data_streams:
                    type: array
                    items:
                      "$ref": "#/components/schemas/indices.get_data_lifecycle.DataStreamWithLifecycle"
                required:
                - data_streams
              examples:
                IndicesGetDataLifecycleResponseExample1:
                  description: A successful response from `GET /_data_stream/{name}/_lifecycle?human&pretty`.
                  value: |-
                    {
                      "data_streams": [
                        {
                          "name": "my-data-stream-1",
                          "lifecycle": {
                            "enabled": true,
                            "data_retention": "7d"
                          }
                        },
                        {
                          "name": "my-data-stream-2",
                          "lifecycle": {
                            "enabled": true,
                            "data_retention": "7d"
                          }
                        }
                      ]
                    }
      x-state: Generally available; Added in 8.11.0
      x-codeSamples:
      - lang: Console
        source: 'GET /_data_stream/{name}/_lifecycle?human&pretty

          '
      - lang: Python
        source: |-
          resp = client.indices.get_data_lifecycle(
              name="{name}",
              human=True,
              pretty=True,
          )
      - lang: JavaScript
        source: |-
          const response = await client.indices.getDataLifecycle({
            name: "{name}",
            human: "true",
            pretty: "true",
          });
      - lang: Ruby
        source: |-
          response = client.indices.get_data_lifecycle(
            name: "{name}",
            human: "true",
            pretty: "true"
          )
      - lang: PHP
        source: |-
          $resp = $client->indices()->getDataLifecycle([
              "name" => "{name}",
              "human" => "true",
              "pretty" => "true",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_data_stream/%7Bname%7D/_lifecycle?human&pretty"'
      - lang: Java
        source: |
          client.indices().getDataLifecycle(g -> g
              .name("{name}")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    put:
      tags:
      - data stream
      summary: Update data stream lifecycles
      description: Update the data stream lifecycle of the specified data streams.
      externalDocs:
        url: https://www.elastic.co/docs/manage-data/lifecycle/data-stream
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/data-streams-put-lifecycle.html
      operationId: indices-put-data-lifecycle
      parameters:
      - in: path
        name: name
        description: |-
          Comma-separated list of data streams used to limit the request.
          Supports wildcards (`*`).
          To target all data streams use `*` or `_all`.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.DataStreamNames"
        style: simple
      - in: query
        name: expand_wildcards
        description: |+
          Type of data stream that wildcard patterns can match.
          Supports comma-separated values, such as `open,hidden`.

          Supported values include:
            - `all`: Match any data stream or index, including hidden ones.
            - `open`: Match open, non-hidden indices. Also matches any non-hidden data stream.
            - `closed`: Match closed, non-hidden indices. Also matches any non-hidden data stream. Data streams cannot be closed.
            - `hidden`: Match hidden data streams and hidden indices. Must be combined with `open`, `closed`, or `both`.
            - `none`: Wildcard expressions are not accepted.

        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.ExpandWildcards"
        style: form
      - in: query
        name: master_timeout
        description: |-
          Period to wait for a connection to the master node. If no response is
          received before the timeout expires, the request fails and returns an
          error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: timeout
        description: |-
          Period to wait for a response.
          If no response is received before the timeout expires, the request fails and returns an error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                data_retention:
                  description: |-
                    If defined, every document added to this data stream will be stored at least for this time frame.
                    Any time after this duration the document could be deleted.
                    When empty, every document in this data stream will be stored indefinitely.
                  allOf:
                  - "$ref": "#/components/schemas/_types.Duration"
                downsampling:
                  description: The downsampling configuration to execute for the managed
                    backing index after rollover.
                  type: array
                  items:
                    "$ref": "#/components/schemas/indices._types.DownsamplingRound"
                downsampling_method:
                  description: |-
                    The method used to downsample the data. There are two options `aggregate` and `last_value`. It requires
                    `downsampling` to be defined. Defaults to `aggregate`.
                  allOf:
                  - "$ref": "#/components/schemas/indices._types.SamplingMethod"
                enabled:
                  description: |-
                    If defined, it turns data stream lifecycle on/off (`true`/`false`) for this data stream. A data stream lifecycle
                    that's disabled (enabled: `false`) will have no effect on the data stream.
                  default: true
                  type: boolean
            examples:
              IndicesPutDataLifecycleRequestExample1:
                summary: Set the data stream lifecycle retention
                value: |-
                  {
                    "data_retention": "7d"
                  }
              IndicesPutDataLifecycleRequestExample2:
                summary: Set the data stream lifecycle downsampling
                description: This example configures two downsampling rounds.
                value: |-
                  {
                      "downsampling": [
                        {
                          "after": "1d",
                          "fixed_interval": "10m"
                        },
                        {
                          "after": "7d",
                          "fixed_interval": "1d"
                        }
                      ]
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
              examples:
                IndicesPutDataLifecycleResponseExample1:
                  description: A successful response for configuring a data stream
                    lifecycle.
                  value: |-
                    {
                      "acknowledged": true
                    }
      x-state: Generally available; Added in 8.11.0
      x-codeSamples:
      - lang: Console
        source: |-
          PUT _data_stream/my-data-stream/_lifecycle
          {
            "data_retention": "7d"
          }
      - lang: Python
        source: |-
          resp = client.indices.put_data_lifecycle(
              name="my-data-stream",
              data_retention="7d",
          )
      - lang: JavaScript
        source: |-
          const response = await client.indices.putDataLifecycle({
            name: "my-data-stream",
            data_retention: "7d",
          });
      - lang: Ruby
        source: |-
          response = client.indices.put_data_lifecycle(
            name: "my-data-stream",
            body: {
              "data_retention": "7d"
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->indices()->putDataLifecycle([
              "name" => "my-data-stream",
              "body" => [
                  "data_retention" => "7d",
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"data_retention":"7d"}'' "$ELASTICSEARCH_URL/_data_stream/my-data-stream/_lifecycle"'
      - lang: Java
        source: |
          client.indices().putDataLifecycle(p -> p
              .dataRetention(d -> d
                  .time("7d")
              )
              .name("my-data-stream")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    delete:
      tags:
      - indices
      summary: Delete data stream lifecycles
      description: Removes the data stream lifecycle from a data stream, rendering
        it not managed by the data stream lifecycle.
      externalDocs:
        url: https://www.elastic.co/docs/manage-data/lifecycle/data-stream
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/data-streams-delete-lifecycle.html
      operationId: indices-delete-data-lifecycle
      parameters:
      - in: path
        name: name
        description: |-
          A comma-separated list of data streams of which the data stream lifecycle will be deleted.
          Use `*` to get all data streams
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.DataStreamNames"
        style: simple
      - in: query
        name: expand_wildcards
        description: |+
          Whether wildcard expressions should get expanded to open or closed indices (default: open)

          Supported values include:
            - `all`: Match any data stream or index, including hidden ones.
            - `open`: Match open, non-hidden indices. Also matches any non-hidden data stream.
            - `closed`: Match closed, non-hidden indices. Also matches any non-hidden data stream. Data streams cannot be closed.
            - `hidden`: Match hidden data streams and hidden indices. Must be combined with `open`, `closed`, or `both`.
            - `none`: Wildcard expressions are not accepted.

        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.ExpandWildcards"
        style: form
      - in: query
        name: master_timeout
        description: The period to wait for a connection to the master node.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: timeout
        description: The period to wait for a response.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
              examples:
                IndicesDeleteDataLifecycleResponseExample1:
                  description: A successful response for deleting a data stream lifecycle.
                  value: |-
                    {
                      "acknowledged": true
                    }
      x-state: Generally available; Added in 8.11.0
      x-codeSamples:
      - lang: Console
        source: 'DELETE _data_stream/my-data-stream/_lifecycle

          '
      - lang: Python
        source: |-
          resp = client.indices.delete_data_lifecycle(
              name="my-data-stream",
          )
      - lang: JavaScript
        source: |-
          const response = await client.indices.deleteDataLifecycle({
            name: "my-data-stream",
          });
      - lang: Ruby
        source: |-
          response = client.indices.delete_data_lifecycle(
            name: "my-data-stream"
          )
      - lang: PHP
        source: |-
          $resp = $client->indices()->deleteDataLifecycle([
              "name" => "my-data-stream",
          ]);
      - lang: curl
        source: 'curl -X DELETE -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_data_stream/my-data-stream/_lifecycle"'
      - lang: Java
        source: |
          client.indices().deleteDataLifecycle(d -> d
              .name("my-data-stream")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_data_stream/{name}/_options":
    get:
      tags:
      - data stream
      summary: Get data stream options
      description: Get the data stream options configuration of one or more data streams.
      operationId: indices-get-data-stream-options
      parameters:
      - in: path
        name: name
        description: |-
          Comma-separated list of data streams to limit the request.
          Supports wildcards (`*`).
          To target all data streams, omit this parameter or use `*` or `_all`.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.DataStreamNames"
        style: simple
      - in: query
        name: expand_wildcards
        description: |+
          Type of data stream that wildcard patterns can match.
          Supports comma-separated values, such as `open,hidden`.

          Supported values include:
            - `all`: Match any data stream or index, including hidden ones.
            - `open`: Match open, non-hidden indices. Also matches any non-hidden data stream.
            - `closed`: Match closed, non-hidden indices. Also matches any non-hidden data stream. Data streams cannot be closed.
            - `hidden`: Match hidden data streams and hidden indices. Must be combined with `open`, `closed`, or `both`.
            - `none`: Wildcard expressions are not accepted.

        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.ExpandWildcards"
        style: form
      - in: query
        name: master_timeout
        description: Period to wait for a connection to the master node. If no response
          is received before the timeout expires, the request fails and returns an
          error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  data_streams:
                    type: array
                    items:
                      "$ref": "#/components/schemas/indices.get_data_stream_options.DataStreamWithOptions"
                required:
                - data_streams
      x-state: Generally available; Added in 8.19.0
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    put:
      tags:
      - data stream
      summary: Update data stream options
      description: Update the data stream options of the specified data streams.
      operationId: indices-put-data-stream-options
      parameters:
      - in: path
        name: name
        description: |-
          Comma-separated list of data streams used to limit the request.
          Supports wildcards (`*`).
          To target all data streams use `*` or `_all`.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.DataStreamNames"
        style: simple
      - in: query
        name: expand_wildcards
        description: |+
          Type of data stream that wildcard patterns can match.
          Supports comma-separated values, such as `open,hidden`.

          Supported values include:
            - `all`: Match any data stream or index, including hidden ones.
            - `open`: Match open, non-hidden indices. Also matches any non-hidden data stream.
            - `closed`: Match closed, non-hidden indices. Also matches any non-hidden data stream. Data streams cannot be closed.
            - `hidden`: Match hidden data streams and hidden indices. Must be combined with `open`, `closed`, or `both`.
            - `none`: Wildcard expressions are not accepted.

        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.ExpandWildcards"
        style: form
      - in: query
        name: master_timeout
        description: |-
          Period to wait for a connection to the master node. If no response is
          received before the timeout expires, the request fails and returns an
          error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: timeout
        description: |-
          Period to wait for a response.
          If no response is received before the timeout expires, the request fails and returns an error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                failure_store:
                  description: If defined, it will update the failure store configuration
                    of every data stream resolved by the name expression.
                  allOf:
                  - "$ref": "#/components/schemas/indices._types.DataStreamFailureStore"
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
      x-state: Generally available; Added in 8.19.0
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    delete:
      tags:
      - data stream
      summary: Delete data stream options
      description: Removes the data stream options from a data stream.
      operationId: indices-delete-data-stream-options
      parameters:
      - in: path
        name: name
        description: |-
          A comma-separated list of data streams of which the data stream options will be deleted.
          Use `*` to get all data streams
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.DataStreamNames"
        style: simple
      - in: query
        name: expand_wildcards
        description: |+
          Whether wildcard expressions should get expanded to open or closed indices

          Supported values include:
            - `all`: Match any data stream or index, including hidden ones.
            - `open`: Match open, non-hidden indices. Also matches any non-hidden data stream.
            - `closed`: Match closed, non-hidden indices. Also matches any non-hidden data stream. Data streams cannot be closed.
            - `hidden`: Match hidden data streams and hidden indices. Must be combined with `open`, `closed`, or `both`.
            - `none`: Wildcard expressions are not accepted.

        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.ExpandWildcards"
        style: form
      - in: query
        name: master_timeout
        description: The period to wait for a connection to the master node.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: timeout
        description: The period to wait for a response.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
              examples:
                IndicesDeleteDataStreamOptionsResponseExample1:
                  description: A successful response for deleting data stream options.
                  value: |-
                    {
                      "acknowledged": true
                    }
      x-state: Generally available; Added in 8.19.0
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_index_template/{name}":
    get:
      tags:
      - indices
      summary: 'Get index templates

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_index_template</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_index_template/{name}</span>\n
        \                     </div>\n                    \n\nGet information about
        one or more index templates.\n\n## Required authorization\n\n* Cluster privileges:
        `manage_index_templates`\n"
      operationId: indices-get-index-template
      parameters:
      - "$ref": "#/components/parameters/indices.get_index_template-name"
      - "$ref": "#/components/parameters/indices.get_index_template-local"
      - "$ref": "#/components/parameters/indices.get_index_template-flat_settings"
      - "$ref": "#/components/parameters/indices.get_index_template-master_timeout"
      - "$ref": "#/components/parameters/indices.get_index_template-include_defaults"
      responses:
        '200':
          "$ref": "#/components/responses/indices.get_index_template-200"
      x-state: Generally available; Added in 7.9.0
      x-codeSamples:
      - lang: Console
        source: 'GET _index_template/*?filter_path=index_templates.name,index_templates.index_template.index_patterns,index_templates.index_template.data_stream

          '
      - lang: Python
        source: |-
          resp = client.indices.get_index_template(
              name="*",
              filter_path="index_templates.name,index_templates.index_template.index_patterns,index_templates.index_template.data_stream",
          )
      - lang: JavaScript
        source: |-
          const response = await client.indices.getIndexTemplate({
            name: "*",
            filter_path:
              "index_templates.name,index_templates.index_template.index_patterns,index_templates.index_template.data_stream",
          });
      - lang: Ruby
        source: |-
          response = client.indices.get_index_template(
            name: "*",
            filter_path: "index_templates.name,index_templates.index_template.index_patterns,index_templates.index_template.data_stream"
          )
      - lang: PHP
        source: |-
          $resp = $client->indices()->getIndexTemplate([
              "name" => "*",
              "filter_path" => "index_templates.name,index_templates.index_template.index_patterns,index_templates.index_template.data_stream",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_index_template/*?filter_path=index_templates.name,index_templates.index_template.index_patterns,index_templates.index_template.data_stream"'
      - lang: Java
        source: |
          client.indices().getIndexTemplate(g -> g
              .name("*")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    post:
      tags:
      - indices
      summary: 'Create or update an index template

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb put\">PUT</span>\n                      <span class=\"operation-path\">/_index_template/{name}</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_index_template/{name}</span>\n
        \                     </div>\n                    \n\nIndex templates define
        settings, mappings, and aliases that can be applied automatically to new indices.\n\nElasticsearch
        applies templates to new indices based on an wildcard pattern that matches
        the index name.\nIndex templates are applied during data stream or index creation.\nFor
        data streams, these settings and mappings are applied when the stream's backing
        indices are created.\nSettings and mappings specified in a create index API
        request override any settings or mappings specified in an index template.\nChanges
        to index templates do not affect existing indices, including the existing
        backing indices of a data stream.\n\nYou can use C-style `/* *\\/` block comments
        in index templates.\nYou can include comments anywhere in the request body,
        except before the opening curly bracket.\n\n**Multiple matching templates**\n\nIf
        multiple index templates match the name of a new index or data stream, the
        template with the highest priority is used.\n\nMultiple templates with overlapping
        index patterns at the same priority are not allowed and an error will be thrown
        when attempting to create a template matching an existing index template at
        identical priorities.\n\n**Composing aliases, mappings, and settings**\n\nWhen
        multiple component templates are specified in the `composed_of` field for
        an index template, they are merged in the order specified, meaning that later
        component templates override earlier component templates.\nAny mappings, settings,
        or aliases from the parent index template are merged in next.\nFinally, any
        configuration on the index request itself is merged.\nMapping definitions
        are merged recursively, which means that later mapping components can introduce
        new field mappings and update the mapping configuration.\nIf a field mapping
        is already contained in an earlier component, its definition will be completely
        overwritten by the later one.\nThis recursive merging strategy applies not
        only to field mappings, but also root options like `dynamic_templates` and
        `meta`.\nIf an earlier component contains a `dynamic_templates` block, then
        by default new `dynamic_templates` entries are appended onto the end.\nIf
        an entry already exists with the same key, then it is overwritten by the new
        definition.\n\n## Required authorization\n\n* Cluster privileges: `manage_index_templates`\n"
      operationId: indices-put-index-template
      parameters:
      - "$ref": "#/components/parameters/indices.put_index_template-name"
      - "$ref": "#/components/parameters/indices.put_index_template-create"
      - "$ref": "#/components/parameters/indices.put_index_template-master_timeout"
      - "$ref": "#/components/parameters/indices.put_index_template-cause"
      requestBody:
        "$ref": "#/components/requestBodies/indices.put_index_template"
      responses:
        '200':
          "$ref": "#/components/responses/indices.put_index_template-200"
      x-state: Generally available; Added in 7.9.0
      x-codeSamples:
      - lang: Console
        source: |-
          PUT /_index_template/template_1
          {
            "index_patterns" : ["template*"],
            "priority" : 1,
            "template": {
              "settings" : {
                "number_of_shards" : 2
              }
            }
          }
      - lang: Python
        source: |-
          resp = client.indices.put_index_template(
              name="template_1",
              index_patterns=[
                  "template*"
              ],
              priority=1,
              template={
                  "settings": {
                      "number_of_shards": 2
                  }
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.indices.putIndexTemplate({
            name: "template_1",
            index_patterns: ["template*"],
            priority: 1,
            template: {
              settings: {
                number_of_shards: 2,
              },
            },
          });
      - lang: Ruby
        source: |-
          response = client.indices.put_index_template(
            name: "template_1",
            body: {
              "index_patterns": [
                "template*"
              ],
              "priority": 1,
              "template": {
                "settings": {
                  "number_of_shards": 2
                }
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->indices()->putIndexTemplate([
              "name" => "template_1",
              "body" => [
                  "index_patterns" => array(
                      "template*",
                  ),
                  "priority" => 1,
                  "template" => [
                      "settings" => [
                          "number_of_shards" => 2,
                      ],
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"index_patterns":["template*"],"priority":1,"template":{"settings":{"number_of_shards":2}}}''
          "$ELASTICSEARCH_URL/_index_template/template_1"'
      - lang: Java
        source: |
          client.indices().putIndexTemplate(p -> p
              .indexPatterns("template*")
              .name("template_1")
              .priority(1L)
              .template(t -> t
                  .settings(s -> s
                      .numberOfShards("2")
                  )
              )
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    delete:
      tags:
      - indices
      summary: Delete an index template
      description: |
        The provided <index-template> may contain multiple template names separated by a comma. If multiple template
        names are specified then there is no wildcard support and the provided names should match completely with
        existing templates.

        ## Required authorization

        * Cluster privileges: `manage_index_templates`
      operationId: indices-delete-index-template
      parameters:
      - in: path
        name: name
        description: Comma-separated list of index template names used to limit the
          request. Wildcard (*) expressions are supported.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Names"
        style: simple
      - in: query
        name: master_timeout
        description: Period to wait for a connection to the master node. If no response
          is received before the timeout expires, the request fails and returns an
          error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: timeout
        description: Period to wait for a response. If no response is received before
          the timeout expires, the request fails and returns an error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
      x-state: Generally available; Added in 7.8.0
      x-codeSamples:
      - lang: Console
        source: 'DELETE /_index_template/my-index-template

          '
      - lang: Python
        source: |-
          resp = client.indices.delete_index_template(
              name="my-index-template",
          )
      - lang: JavaScript
        source: |-
          const response = await client.indices.deleteIndexTemplate({
            name: "my-index-template",
          });
      - lang: Ruby
        source: |-
          response = client.indices.delete_index_template(
            name: "my-index-template"
          )
      - lang: PHP
        source: |-
          $resp = $client->indices()->deleteIndexTemplate([
              "name" => "my-index-template",
          ]);
      - lang: curl
        source: 'curl -X DELETE -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_index_template/my-index-template"'
      - lang: Java
        source: |
          client.indices().deleteIndexTemplate(d -> d
              .name("my-index-template")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    head:
      tags:
      - indices
      summary: Check index templates
      description: |
        Check whether index templates exist.

        ## Required authorization

        * Cluster privileges: `manage_index_templates`
      operationId: indices-exists-index-template
      parameters:
      - in: path
        name: name
        description: Comma-separated list of index template names used to limit the
          request. Wildcard (*) expressions are supported.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Name"
        style: simple
      - in: query
        name: local
        description: If true, the request retrieves information from the local node
          only. Defaults to false, which means information is retrieved from the master
          node.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: flat_settings
        description: If true, returns settings in flat format.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: master_timeout
        description: Period to wait for a connection to the master node. If no response
          is received before the timeout expires, the request fails and returns an
          error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json: {}
      x-state: Generally available
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_template/{name}":
    get:
      tags:
      - indices
      summary: 'Get legacy index templates

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_template</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_template/{name}</span>\n
        \                     </div>\n                    \n\nGet information about
        one or more index templates.\n\nIMPORTANT: This documentation is about legacy
        index templates, which are deprecated and will be replaced by the composable
        templates introduced in Elasticsearch 7.8.\n\n## Required authorization\n\n*
        Cluster privileges: `manage_index_templates`\n"
      externalDocs:
        url: https://www.elastic.co/docs/manage-data/data-store/templates
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/indices-get-template-v1.html
      operationId: indices-get-template
      parameters:
      - "$ref": "#/components/parameters/indices.get_template-name"
      - "$ref": "#/components/parameters/indices.get_template-flat_settings"
      - "$ref": "#/components/parameters/indices.get_template-local"
      - "$ref": "#/components/parameters/indices.get_template-master_timeout"
      responses:
        '200':
          "$ref": "#/components/responses/indices.get_template-200"
      deprecated: true
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'GET /_template/.monitoring-*

          '
      - lang: Python
        source: |-
          resp = client.indices.get_template(
              name=".monitoring-*",
          )
      - lang: JavaScript
        source: |-
          const response = await client.indices.getTemplate({
            name: ".monitoring-*",
          });
      - lang: Ruby
        source: |-
          response = client.indices.get_template(
            name: ".monitoring-*"
          )
      - lang: PHP
        source: |-
          $resp = $client->indices()->getTemplate([
              "name" => ".monitoring-*",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_template/.monitoring-*"'
      - lang: Java
        source: |
          client.indices().getTemplate(g -> g
              .name(".monitoring-*")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    post:
      tags:
      - indices
      summary: 'Create or update a legacy index template

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb put\">PUT</span>\n                      <span class=\"operation-path\">/_template/{name}</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_template/{name}</span>\n
        \                     </div>\n                    \n\nIndex templates define
        settings, mappings, and aliases that can be applied automatically to new indices.\nElasticsearch
        applies templates to new indices based on an index pattern that matches the
        index name.\n\nIMPORTANT: This documentation is about legacy index templates,
        which are deprecated and will be replaced by the composable templates introduced
        in Elasticsearch 7.8.\n\nComposable templates always take precedence over
        legacy templates.\nIf no composable template matches a new index, matching
        legacy templates are applied according to their order.\n\nIndex templates
        are only applied during index creation.\nChanges to index templates do not
        affect existing indices.\nSettings and mappings specified in create index
        API requests override any settings or mappings specified in an index template.\n\nYou
        can use C-style `/* *\\/` block comments in index templates.\nYou can include
        comments anywhere in the request body, except before the opening curly bracket.\n\n**Indices
        matching multiple templates**\n\nMultiple index templates can potentially
        match an index, in this case, both the settings and mappings are merged into
        the final configuration of the index.\nThe order of the merging can be controlled
        using the order parameter, with lower order being applied first, and higher
        orders overriding them.\nNOTE: Multiple matching templates with the same order
        value will result in a non-deterministic merging order.\n\n## Required authorization\n\n*
        Cluster privileges: `manage_index_templates`,`manage`\n"
      externalDocs:
        url: https://www.elastic.co/docs/manage-data/data-store/templates
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/indices-templates-v1.html
      operationId: indices-put-template
      parameters:
      - "$ref": "#/components/parameters/indices.put_template-name"
      - "$ref": "#/components/parameters/indices.put_template-create"
      - "$ref": "#/components/parameters/indices.put_template-master_timeout"
      - "$ref": "#/components/parameters/indices.put_template-order"
      - "$ref": "#/components/parameters/indices.put_template-cause"
      requestBody:
        "$ref": "#/components/requestBodies/indices.put_template"
      responses:
        '200':
          "$ref": "#/components/responses/indices.put_template-200"
      deprecated: true
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: |-
          PUT _template/template_1
          {
            "index_patterns": [
              "te*",
              "bar*"
            ],
            "settings": {
              "number_of_shards": 1
            },
            "mappings": {
              "_source": {
                "enabled": false
              },
              "properties": {
                "host_name": {
                  "type": "keyword"
                },
                "created_at": {
                  "type": "date",
                  "format": "EEE MMM dd HH:mm:ss Z yyyy"
                }
              }
            }
          }
      - lang: Python
        source: |-
          resp = client.indices.put_template(
              name="template_1",
              index_patterns=[
                  "te*",
                  "bar*"
              ],
              settings={
                  "number_of_shards": 1
              },
              mappings={
                  "_source": {
                      "enabled": False
                  },
                  "properties": {
                      "host_name": {
                          "type": "keyword"
                      },
                      "created_at": {
                          "type": "date",
                          "format": "EEE MMM dd HH:mm:ss Z yyyy"
                      }
                  }
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.indices.putTemplate({
            name: "template_1",
            index_patterns: ["te*", "bar*"],
            settings: {
              number_of_shards: 1,
            },
            mappings: {
              _source: {
                enabled: false,
              },
              properties: {
                host_name: {
                  type: "keyword",
                },
                created_at: {
                  type: "date",
                  format: "EEE MMM dd HH:mm:ss Z yyyy",
                },
              },
            },
          });
      - lang: Ruby
        source: |-
          response = client.indices.put_template(
            name: "template_1",
            body: {
              "index_patterns": [
                "te*",
                "bar*"
              ],
              "settings": {
                "number_of_shards": 1
              },
              "mappings": {
                "_source": {
                  "enabled": false
                },
                "properties": {
                  "host_name": {
                    "type": "keyword"
                  },
                  "created_at": {
                    "type": "date",
                    "format": "EEE MMM dd HH:mm:ss Z yyyy"
                  }
                }
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->indices()->putTemplate([
              "name" => "template_1",
              "body" => [
                  "index_patterns" => array(
                      "te*",
                      "bar*",
                  ),
                  "settings" => [
                      "number_of_shards" => 1,
                  ],
                  "mappings" => [
                      "_source" => [
                          "enabled" => false,
                      ],
                      "properties" => [
                          "host_name" => [
                              "type" => "keyword",
                          ],
                          "created_at" => [
                              "type" => "date",
                              "format" => "EEE MMM dd HH:mm:ss Z yyyy",
                          ],
                      ],
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"index_patterns":["te*","bar*"],"settings":{"number_of_shards":1},"mappings":{"_source":{"enabled":false},"properties":{"host_name":{"type":"keyword"},"created_at":{"type":"date","format":"EEE
          MMM dd HH:mm:ss Z yyyy"}}}}'' "$ELASTICSEARCH_URL/_template/template_1"'
      - lang: Java
        source: |
          client.indices().putTemplate(p -> p
              .indexPatterns(List.of("te*","bar*"))
              .mappings(m -> m
                  .properties(Map.of("created_at", Property.of(pr -> pr
                          .date(d -> d
                              .format("EEE MMM dd HH:mm:ss Z yyyy")
                          )
                      ),"host_name", Property.of(pro -> pro
                          .keyword(k -> k)
                      )))
                  .source(s -> s
                      .enabled(false)
                  )
              )
              .name("template_1")
              .settings(s -> s
                  .numberOfShards("1")
              )
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    delete:
      tags:
      - indices
      summary: Delete a legacy index template
      description: |
        IMPORTANT: This documentation is about legacy index templates, which are deprecated and will be replaced by the composable templates introduced in Elasticsearch 7.8.

        ## Required authorization

        * Cluster privileges: `manage_index_templates`
      operationId: indices-delete-template
      parameters:
      - in: path
        name: name
        description: |-
          The name of the legacy index template to delete.
          Wildcard (`*`) expressions are supported.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Name"
        style: simple
      - in: query
        name: master_timeout
        description: |-
          Period to wait for a connection to the master node.
          If no response is received before the timeout expires, the request fails and returns an error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: timeout
        description: |-
          Period to wait for a response.
          If no response is received before the timeout expires, the request fails and returns an error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
      deprecated: true
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'DELETE _template/.cloud-hot-warm-allocation-0

          '
      - lang: Python
        source: |-
          resp = client.indices.delete_template(
              name=".cloud-hot-warm-allocation-0",
          )
      - lang: JavaScript
        source: |-
          const response = await client.indices.deleteTemplate({
            name: ".cloud-hot-warm-allocation-0",
          });
      - lang: Ruby
        source: |-
          response = client.indices.delete_template(
            name: ".cloud-hot-warm-allocation-0"
          )
      - lang: PHP
        source: |-
          $resp = $client->indices()->deleteTemplate([
              "name" => ".cloud-hot-warm-allocation-0",
          ]);
      - lang: curl
        source: 'curl -X DELETE -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_template/.cloud-hot-warm-allocation-0"'
      - lang: Java
        source: |
          client.indices().deleteTemplate(d -> d
              .name(".cloud-hot-warm-allocation-0")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    head:
      tags:
      - indices
      summary: Check existence of index templates
      description: |
        Get information about whether index templates exist.
        Index templates define settings, mappings, and aliases that can be applied automatically to new indices.

        IMPORTANT: This documentation is about legacy index templates, which are deprecated and will be replaced by the composable templates introduced in Elasticsearch 7.8.

        ## Required authorization

        * Cluster privileges: `manage_index_templates`
      externalDocs:
        url: https://www.elastic.co/docs/manage-data/data-store/templates
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/indices-template-exists-v1.html
      operationId: indices-exists-template
      parameters:
      - in: path
        name: name
        description: |-
          A comma-separated list of index template names used to limit the request.
          Wildcard (`*`) expressions are supported.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Names"
        style: simple
      - in: query
        name: flat_settings
        description: Indicates whether to use a flat format for the response.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: local
        description: Indicates whether to get information from the local node only.
        deprecated: true
        schema:
          type: boolean
        style: form
      - in: query
        name: master_timeout
        description: |-
          The period to wait for the master node.
          If the master node is not available before the timeout expires, the request fails and returns an error.
          To indicate that the request should never timeout, set it to `-1`.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json: {}
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'HEAD /_template/template_1

          '
      - lang: Python
        source: |-
          resp = client.indices.exists_template(
              name="template_1",
          )
      - lang: JavaScript
        source: |-
          const response = await client.indices.existsTemplate({
            name: "template_1",
          });
      - lang: Ruby
        source: |-
          response = client.indices.exists_template(
            name: "template_1"
          )
      - lang: PHP
        source: |-
          $resp = $client->indices()->existsTemplate([
              "name" => "template_1",
          ]);
      - lang: curl
        source: 'curl --head -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_template/template_1"'
      - lang: Java
        source: |
          client.indices().existsTemplate(e -> e
              .name("template_1")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/{index}/_disk_usage":
    post:
      tags:
      - indices
      summary: Analyze the index disk usage
      description: |-
        Analyze the disk usage of each field of an index or data stream.
        This API might not support indices created in previous Elasticsearch versions.
        The result of a small index can be inaccurate as some parts of an index might not be analyzed by the API.

        NOTE: The total size of fields of the analyzed shards of the index in the response is usually smaller than the index `store_size` value because some small metadata files are ignored and some parts of data files might not be scanned by the API.
        Since stored fields are stored together in a compressed format, the sizes of stored fields are also estimates and can be inaccurate.
        The stored size of the `_id` field is likely underestimated while the `_source` field is overestimated.

        For usage examples see the External documentation or refer to [Analyze the index disk usage example](https://www.elastic.co/docs/reference/elasticsearch/rest-apis/index-disk-usage) for an example.
      externalDocs:
        url: https://www.elastic.co/docs/api/doc/elasticsearch/operation/operation-indices-disk-usage
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/indices-disk-usage.html
      operationId: indices-disk-usage
      parameters:
      - in: path
        name: index
        description: |-
          Comma-separated list of data streams, indices, and aliases used to limit the request.
          It’s recommended to execute this API with a single index (or the latest backing index of a data stream) as the API consumes resources significantly.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Indices"
        style: simple
      - in: query
        name: allow_no_indices
        description: |-
          If false, the request returns an error if any wildcard expression, index alias, or `_all` value targets only missing or closed indices.
          This behavior applies even if the request targets other open indices.
          For example, a request targeting `foo*,bar*` returns an error if an index starts with `foo` but no index starts with `bar`.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: expand_wildcards
        description: |+
          Type of index that wildcard patterns can match.
          If the request can target data streams, this argument determines whether wildcard expressions match hidden data streams.
          Supports comma-separated values, such as `open,hidden`.

          Supported values include:
            - `all`: Match any data stream or index, including hidden ones.
            - `open`: Match open, non-hidden indices. Also matches any non-hidden data stream.
            - `closed`: Match closed, non-hidden indices. Also matches any non-hidden data stream. Data streams cannot be closed.
            - `hidden`: Match hidden data streams and hidden indices. Must be combined with `open`, `closed`, or `both`.
            - `none`: Wildcard expressions are not accepted.

        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.ExpandWildcards"
        style: form
      - in: query
        name: flush
        description: |-
          If `true`, the API performs a flush before analysis.
          If `false`, the response may not include uncommitted data.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: ignore_unavailable
        description: If `true`, missing or closed indices are not included in the
          response.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: run_expensive_tasks
        description: |-
          Analyzing field disk usage is resource-intensive.
          To use the API, this parameter must be set to `true`.
        deprecated: false
        schema:
          type: boolean
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
              examples:
                IndicesDiskUsageResponseExample1:
                  description: An abbreviated response from `POST /my-index-000001/_disk_usage?run_expensive_tasks=true`.
                  value: |-
                    {
                      "_shards": {
                        "total": 1,
                        "successful": 1,
                        "failed": 0
                      },
                      "my-index-000001": {
                        "store_size": "929mb",
                        "store_size_in_bytes": 974192723,
                        "all_fields": {
                          "total": "928.9mb",
                          "total_in_bytes": 973977084,
                          "inverted_index": {
                            "total": "107.8mb",
                            "total_in_bytes": 113128526
                          },
                          "stored_fields": "623.5mb",
                          "stored_fields_in_bytes": 653819143,
                          "doc_values": "125.7mb",
                          "doc_values_in_bytes": 131885142,
                          "points": "59.9mb",
                          "points_in_bytes": 62885773,
                          "norms": "2.3kb",
                          "norms_in_bytes": 2356,
                          "term_vectors": "2.2kb",
                          "term_vectors_in_bytes": 2310,
                          "knn_vectors": "0b",
                          "knn_vectors_in_bytes": 0
                        },
                        "fields": {
                          "_id": {
                            "total": "49.3mb",
                            "total_in_bytes": 51709993,
                            "inverted_index": {
                              "total": "29.7mb",
                              "total_in_bytes": 31172745
                            },
                            "stored_fields": "19.5mb",
                            "stored_fields_in_bytes": 20537248,
                            "doc_values": "0b",
                            "doc_values_in_bytes": 0,
                            "points": "0b",
                            "points_in_bytes": 0,
                            "norms": "0b",
                            "norms_in_bytes": 0,
                            "term_vectors": "0b",
                            "term_vectors_in_bytes": 0,
                            "knn_vectors": "0b",
                            "knn_vectors_in_bytes": 0
                          },
                          "_primary_term": {},
                          "_seq_no": {},
                          "_version": {},
                          "_source": {
                            "total": "603.9mb",
                            "total_in_bytes": 633281895,
                            "inverted_index": {},
                            "stored_fields": "603.9mb",
                            "stored_fields_in_bytes": 633281895,
                            "doc_values": "0b",
                            "doc_values_in_bytes": 0,
                            "points": "0b",
                            "points_in_bytes": 0,
                            "norms": "0b",
                            "norms_in_bytes": 0,
                            "term_vectors": "0b",
                            "term_vectors_in_bytes": 0,
                            "knn_vectors": "0b",
                            "knn_vectors_in_bytes": 0
                          },
                          "context": {
                            "total": "28.6mb",
                            "total_in_bytes": 30060405,
                            "inverted_index": {
                              "total": "22mb",
                              "total_in_bytes": 23090908
                            },
                            "stored_fields": "0b",
                            "stored_fields_in_bytes": 0,
                            "doc_values": "0b",
                            "doc_values_in_bytes": 0,
                            "points": "0b",
                            "points_in_bytes": 0,
                            "norms": "2.3kb",
                            "norms_in_bytes": 2356,
                            "term_vectors": "2.2kb",
                            "term_vectors_in_bytes": 2310,
                            "knn_vectors": "0b",
                            "knn_vectors_in_bytes": 0
                          },
                          "context.keyword": {},
                          "message": {},
                          "message.keyword": {}
                        }
                      }
                    }
      x-state: Technical preview; Added in 7.15.0
      x-codeSamples:
      - lang: Console
        source: 'POST /my-index-000001/_disk_usage?run_expensive_tasks=true

          '
      - lang: Python
        source: |-
          resp = client.indices.disk_usage(
              index="my-index-000001",
              run_expensive_tasks=True,
          )
      - lang: JavaScript
        source: |-
          const response = await client.indices.diskUsage({
            index: "my-index-000001",
            run_expensive_tasks: "true",
          });
      - lang: Ruby
        source: |-
          response = client.indices.disk_usage(
            index: "my-index-000001",
            run_expensive_tasks: "true"
          )
      - lang: PHP
        source: |-
          $resp = $client->indices()->diskUsage([
              "index" => "my-index-000001",
              "run_expensive_tasks" => "true",
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/my-index-000001/_disk_usage?run_expensive_tasks=true"'
      - lang: Java
        source: |
          client.indices().diskUsage(d -> d
              .index("my-index-000001")
              .runExpensiveTasks(true)
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/{index}/_downsample/{target_index}":
    post:
      tags:
      - data stream
      summary: Downsample an index
      description: |-
        Downsamples a time series (TSDS) index and reduces its size by keeping the last value or by pre-aggregating metrics:

        - When running in `aggregate` mode, it pre-calculates and stores statistical summaries (`min`, `max`, `sum`, `value_count` and `avg`)
        for each metric field grouped by a configured time interval and their dimensions.
        - When running in `last_value` mode, it keeps the last value for each metric in the configured interval and their dimensions.

        For example, a TSDS index that contains metrics sampled every 10 seconds can be downsampled to an hourly index.
        All documents within an hour interval are summarized and stored as a single document in the downsample index.

        NOTE: Only indices in a time series data stream are supported.
        Neither field nor document level security can be defined on the source index.
        The source index must be read-only (`index.blocks.write: true`).
      operationId: indices-downsample
      parameters:
      - in: path
        name: index
        description: Name of the time series index to downsample.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.IndexName"
        style: simple
      - in: path
        name: target_index
        description: Name of the index to create.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.IndexName"
        style: simple
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/indices._types.DownsampleConfig"
            examples:
              DownsampleRequestExample1:
                value: |-
                  {
                    "fixed_interval": "1d"
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
      x-state: Technical preview; Added in 8.5.0
      x-codeSamples:
      - lang: Console
        source: |-
          POST /my-time-series-index/_downsample/my-downsampled-time-series-index
          {
            "fixed_interval": "1d"
          }
      - lang: Python
        source: |-
          resp = client.indices.downsample(
              index="my-time-series-index",
              target_index="my-downsampled-time-series-index",
              config={
                  "fixed_interval": "1d"
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.indices.downsample({
            index: "my-time-series-index",
            target_index: "my-downsampled-time-series-index",
            config: {
              fixed_interval: "1d",
            },
          });
      - lang: Ruby
        source: |-
          response = client.indices.downsample(
            index: "my-time-series-index",
            target_index: "my-downsampled-time-series-index",
            body: {
              "fixed_interval": "1d"
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->indices()->downsample([
              "index" => "my-time-series-index",
              "target_index" => "my-downsampled-time-series-index",
              "body" => [
                  "fixed_interval" => "1d",
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"fixed_interval":"1d"}'' "$ELASTICSEARCH_URL/my-time-series-index/_downsample/my-downsampled-time-series-index"'
      - lang: Java
        source: |
          client.indices().downsample(d -> d
              .index("my-time-series-index")
              .targetIndex("my-downsampled-time-series-index")
              .config(c -> c
                  .fixedInterval(f -> f
                      .time("1d")
                  )
              )
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/{index}/_alias/{name}":
    get:
      tags:
      - indices
      summary: 'Get aliases

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_alias</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_alias/{name}</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/{index}/_alias</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/{index}/_alias/{name}</span>\n
        \                     </div>\n                    \n\nRetrieves information
        for one or more data stream or index aliases.\n\n## Required authorization\n\n*
        Index privileges: `view_index_metadata`\n"
      operationId: indices-get-alias
      parameters:
      - "$ref": "#/components/parameters/indices.get_alias-index"
      - "$ref": "#/components/parameters/indices.get_alias-name"
      - "$ref": "#/components/parameters/indices.get_alias-allow_no_indices"
      - "$ref": "#/components/parameters/indices.get_alias-expand_wildcards"
      - "$ref": "#/components/parameters/indices.get_alias-ignore_unavailable"
      - "$ref": "#/components/parameters/indices.get_alias-master_timeout"
      responses:
        '200':
          "$ref": "#/components/responses/indices.get_alias-200"
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'GET _alias

          '
      - lang: Python
        source: resp = client.indices.get_alias()
      - lang: JavaScript
        source: const response = await client.indices.getAlias();
      - lang: Ruby
        source: response = client.indices.get_alias
      - lang: PHP
        source: "$resp = $client->indices()->getAlias();"
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_alias"'
      - lang: Java
        source: 'client.indices().getAlias(g -> g);

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    head:
      tags:
      - indices
      summary: 'Check aliases

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb head\">HEAD</span>\n                      <span class=\"operation-path\">/_alias/{name}</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb head\">HEAD</span>\n                      <span class=\"operation-path\">/{index}/_alias/{name}</span>\n
        \                     </div>\n                    \n\nCheck if one or more
        data stream or index aliases exist."
      operationId: indices-exists-alias
      parameters:
      - "$ref": "#/components/parameters/indices.exists_alias-index"
      - "$ref": "#/components/parameters/indices.exists_alias-name"
      - "$ref": "#/components/parameters/indices.exists_alias-allow_no_indices"
      - "$ref": "#/components/parameters/indices.exists_alias-expand_wildcards"
      - "$ref": "#/components/parameters/indices.exists_alias-ignore_unavailable"
      - "$ref": "#/components/parameters/indices.exists_alias-master_timeout"
      responses:
        '200':
          "$ref": "#/components/responses/indices.exists_alias-200"
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'HEAD _alias/my-alias

          '
      - lang: Python
        source: |-
          resp = client.indices.exists_alias(
              name="my-alias",
          )
      - lang: JavaScript
        source: |-
          const response = await client.indices.existsAlias({
            name: "my-alias",
          });
      - lang: Ruby
        source: |-
          response = client.indices.exists_alias(
            name: "my-alias"
          )
      - lang: PHP
        source: |-
          $resp = $client->indices()->existsAlias([
              "name" => "my-alias",
          ]);
      - lang: curl
        source: 'curl --head -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_alias/my-alias"'
      - lang: Java
        source: |
          client.indices().existsAlias(e -> e
              .name("my-alias")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/{index}/_lifecycle/explain":
    get:
      tags:
      - data stream
      summary: Get the status for a data stream lifecycle
      description: Get information about an index or data stream's current data stream
        lifecycle status, such as time since index creation, time since rollover,
        the lifecycle configuration managing the index, or any errors encountered
        during lifecycle execution.
      externalDocs:
        url: https://www.elastic.co/docs/manage-data/lifecycle/data-stream
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/data-streams-explain-lifecycle.html
      operationId: indices-explain-data-lifecycle
      parameters:
      - in: path
        name: index
        description: Comma-separated list of index names to explain
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Indices"
        style: simple
      - in: query
        name: include_defaults
        description: Indicates if the API should return the default values the system
          uses for the index's lifecycle
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: master_timeout
        description: The period to wait for a connection to the master node.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  indices:
                    type: object
                    additionalProperties:
                      "$ref": "#/components/schemas/indices.explain_data_lifecycle.DataStreamLifecycleExplain"
                required:
                - indices
              examples:
                IndicesExplainDataLifecycleResponseExample1:
                  summary: Successful response
                  description: 'A successful response from `GET .ds-metrics-2023.03.22-000001/_lifecycle/explain`,
                    which retrieves  the lifecycle status for a data stream backing
                    index. If the index is managed by a data stream lifecycle, the
                    API will show the `managed_by_lifecycle` field set to `true` and
                    the rest of the response will contain information about the lifecycle
                    execution status for this index.

                    '
                  value: |-
                    {
                      "indices": {
                        ".ds-metrics-2023.03.22-000001": {
                          "index" : ".ds-metrics-2023.03.22-000001",
                          "managed_by_lifecycle" : true,
                          "index_creation_date_millis" : 1679475563571,
                          "time_since_index_creation" : "843ms",
                          "rollover_date_millis" : 1679475564293,
                          "time_since_rollover" : "121ms",
                          "lifecycle" : { },
                          "generation_time" : "121ms"
                      }
                    }
                IndicesExplainDataLifecycleResponseExample2:
                  summary: Successful response with error messages
                  description: The API reports any errors related to the lifecycle
                    execution for the target index.
                  value: |-
                    {
                      "indices": {
                        ".ds-metrics-2023.03.22-000001": {
                          "index" : ".ds-metrics-2023.03.22-000001",
                          "managed_by_lifecycle" : true,
                          "index_creation_date_millis" : 1679475563571,
                          "time_since_index_creation" : "843ms",
                          "lifecycle" : {
                            "enabled": true
                          },
                          "error": "{\"type\":\"validation_exception\",\"reason\":\"Validation Failed: 1: this action would add [2] shards, but this cluster
                    currently has [4]/[3] maximum normal shards open;\"}"
                      }
                    }
      x-state: Generally available; Added in 8.11.0
      x-codeSamples:
      - lang: Console
        source: 'GET .ds-metrics-2023.03.22-000001/_lifecycle/explain

          '
      - lang: Python
        source: |-
          resp = client.indices.explain_data_lifecycle(
              index=".ds-metrics-2023.03.22-000001",
          )
      - lang: JavaScript
        source: |-
          const response = await client.indices.explainDataLifecycle({
            index: ".ds-metrics-2023.03.22-000001",
          });
      - lang: Ruby
        source: |-
          response = client.indices.explain_data_lifecycle(
            index: ".ds-metrics-2023.03.22-000001"
          )
      - lang: PHP
        source: |-
          $resp = $client->indices()->explainDataLifecycle([
              "index" => ".ds-metrics-2023.03.22-000001",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/.ds-metrics-2023.03.22-000001/_lifecycle/explain"'
      - lang: Java
        source: |
          client.indices().explainDataLifecycle(e -> e
              .index(".ds-metrics-2023.03.22-000001")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/{index}/_field_usage_stats":
    get:
      tags:
      - indices
      summary: Get field usage stats
      description: |
        Get field usage information for each shard and field of an index.
        Field usage statistics are automatically captured when queries are running on a cluster.
        A shard-level search request that accesses a given field, even if multiple times during that request, is counted as a single use.

        The response body reports the per-shard usage count of the data structures that back the fields in the index.
        A given request will increment each count by a maximum value of 1, even if the request accesses the same field multiple times.

        ## Required authorization

        * Index privileges: `manage`
      operationId: indices-field-usage-stats
      parameters:
      - in: path
        name: index
        description: Comma-separated list or wildcard expression of index names used
          to limit the request.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Indices"
        style: simple
      - in: query
        name: allow_no_indices
        description: |-
          If `false`, the request returns an error if any wildcard expression, index alias, or `_all` value targets only missing or closed indices.
          This behavior applies even if the request targets other open indices.
          For example, a request targeting `foo*,bar*` returns an error if an index starts with `foo` but no index starts with `bar`.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: expand_wildcards
        description: |+
          Type of index that wildcard patterns can match.
          If the request can target data streams, this argument determines whether wildcard expressions match hidden data streams.
          Supports comma-separated values, such as `open,hidden`.

          Supported values include:
            - `all`: Match any data stream or index, including hidden ones.
            - `open`: Match open, non-hidden indices. Also matches any non-hidden data stream.
            - `closed`: Match closed, non-hidden indices. Also matches any non-hidden data stream. Data streams cannot be closed.
            - `hidden`: Match hidden data streams and hidden indices. Must be combined with `open`, `closed`, or `both`.
            - `none`: Wildcard expressions are not accepted.

        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.ExpandWildcards"
        style: form
      - in: query
        name: ignore_unavailable
        description: If `true`, missing or closed indices are not included in the
          response.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: fields
        description: Comma-separated list or wildcard expressions of fields to include
          in the statistics.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Fields"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/indices.field_usage_stats.FieldsUsageBody"
              examples:
                indicesFieldUsageStatsResponseExample1:
                  description: 'An abbreviated response from `GET /my-index-000001/_field_usage_stats`.
                    The `all_fields` object reports the sums of the usage counts for
                    all fields in the index (on the listed shard).

                    '
                  value: |-
                    {
                      "_shards": {
                        "total": 1,
                        "successful": 1,
                        "failed": 0
                      },
                      "my-index-000001": {
                        "shards": [
                          {
                            "tracking_id": "MpOl0QlTQ4SYYhEe6KgJoQ",
                            "tracking_started_at_millis": 1625558985010,
                            "routing": {
                              "state": "STARTED",
                              "primary": true,
                              "node": "gA6KeeVzQkGURFCUyV-e8Q",
                              "relocating_node": null
                            },
                            "stats": {
                              "all_fields": {
                                "any": "6",
                                "inverted_index": {
                                  "terms": 1,
                                  "postings": 1,
                                  "proximity": 1,
                                  "positions": 0,
                                  "term_frequencies": 1,
                                  "offsets": 0,
                                  "payloads": 0
                                },
                                "stored_fields": 2,
                                "doc_values": 1,
                                "points": 0,
                                "norms": 1,
                                "term_vectors": 0,
                                "knn_vectors": 0
                              },
                              "fields": {
                                "_id": {
                                  "any": 1,
                                  "inverted_index": {
                                    "terms": 1,
                                    "postings": 1,
                                    "proximity": 1,
                                    "positions": 0,
                                    "term_frequencies": 1,
                                    "offsets": 0,
                                    "payloads": 0
                                  },
                                  "stored_fields": 1,
                                  "doc_values": 0,
                                  "points": 0,
                                  "norms": 0,
                                  "term_vectors": 0,
                                  "knn_vectors": 0
                                },
                                "_source": {},
                                "context": {},
                                "message.keyword": {}
                              }
                            }
                          }
                        ]
                      }
                    }
      x-state: Technical preview; Added in 7.15.0
      x-codeSamples:
      - lang: Console
        source: 'GET /my-index-000001/_field_usage_stats

          '
      - lang: Python
        source: |-
          resp = client.indices.field_usage_stats(
              index="my-index-000001",
          )
      - lang: JavaScript
        source: |-
          const response = await client.indices.fieldUsageStats({
            index: "my-index-000001",
          });
      - lang: Ruby
        source: |-
          response = client.indices.field_usage_stats(
            index: "my-index-000001"
          )
      - lang: PHP
        source: |-
          $resp = $client->indices()->fieldUsageStats([
              "index" => "my-index-000001",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/my-index-000001/_field_usage_stats"'
      - lang: Java
        source: |
          client.indices().fieldUsageStats(f -> f
              .index("my-index-000001")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/{index}/_flush":
    get:
      tags:
      - indices
      summary: 'Flush data streams or indices

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_flush</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_flush</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/{index}/_flush</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/{index}/_flush</span>\n
        \                     </div>\n                    \n\nFlushing a data stream
        or index is the process of making sure that any data that is currently only
        stored in the transaction log is also permanently stored in the Lucene index.\nWhen
        restarting, Elasticsearch replays any unflushed operations from the transaction
        log into the Lucene index to bring it back into the state that it was in before
        the restart.\nElasticsearch automatically triggers flushes as needed, using
        heuristics that trade off the size of the unflushed transaction log against
        the cost of performing each flush.\n\nAfter each operation has been flushed
        it is permanently stored in the Lucene index.\nThis may mean that there is
        no need to maintain an additional copy of it in the transaction log.\nThe
        transaction log is made up of multiple files, called generations, and Elasticsearch
        will delete any generation files when they are no longer needed, freeing up
        disk space.\n\nIt is also possible to trigger a flush on one or more indices
        using the flush API, although it is rare for users to need to call this API
        directly.\nIf you call the flush API after indexing some documents then a
        successful response indicates that Elasticsearch has flushed all the documents
        that were indexed before the flush API was called.\n\n## Required authorization\n\n*
        Index privileges: `maintenance`\n"
      operationId: indices-flush
      parameters:
      - "$ref": "#/components/parameters/indices.flush-index"
      - "$ref": "#/components/parameters/indices.flush-allow_no_indices"
      - "$ref": "#/components/parameters/indices.flush-expand_wildcards"
      - "$ref": "#/components/parameters/indices.flush-force"
      - "$ref": "#/components/parameters/indices.flush-ignore_unavailable"
      - "$ref": "#/components/parameters/indices.flush-wait_if_ongoing"
      responses:
        '200':
          "$ref": "#/components/responses/indices.flush-200"
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'POST /_flush

          '
      - lang: Python
        source: resp = client.indices.flush()
      - lang: JavaScript
        source: const response = await client.indices.flush();
      - lang: Ruby
        source: response = client.indices.flush
      - lang: PHP
        source: "$resp = $client->indices()->flush();"
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_flush"'
      - lang: Java
        source: 'client.indices().flush(f -> f);

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/{index}/_forcemerge":
    post:
      tags:
      - indices
      summary: 'Force a merge

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_forcemerge</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/{index}/_forcemerge</span>\n
        \                     </div>\n                    \n\nPerform the force merge
        operation on the shards of one or more indices.\nFor data streams, the API
        forces a merge on the shards of the stream's backing indices.\n\nMerging reduces
        the number of segments in each shard by merging some of them together and
        also frees up the space used by deleted documents.\nMerging normally happens
        automatically, but sometimes it is useful to trigger a merge manually.\n\nWARNING:
        We recommend force merging only a read-only index (meaning the index is no
        longer receiving writes).\nWhen documents are updated or deleted, the old
        version is not immediately removed but instead soft-deleted and marked with
        a \"tombstone\".\nThese soft-deleted documents are automatically cleaned up
        during regular segment merges.\nBut force merge can cause very large (greater
        than 5 GB) segments to be produced, which are not eligible for regular merges.\nSo
        the number of soft-deleted documents can then grow rapidly, resulting in higher
        disk usage and worse search performance.\nIf you regularly force merge an
        index receiving writes, this can also make snapshots more expensive, since
        the new documents can't be backed up incrementally.\n\n**Blocks during a force
        merge**\n\nCalls to this API block until the merge is complete (unless request
        contains `wait_for_completion=false`).\nIf the client connection is lost before
        completion then the force merge process will continue in the background.\nAny
        new requests to force merge the same indices will also block until the ongoing
        force merge is complete.\n\n**Running force merge asynchronously**\n\nIf the
        request contains `wait_for_completion=false`, Elasticsearch performs some
        preflight checks, launches the request, and returns a task you can use to
        get the status of the task.\nHowever, you can not cancel this task as the
        force merge task is not cancelable.\nElasticsearch creates a record of this
        task as a document at `_tasks/<task_id>`.\nWhen you are done with a task,
        you should delete the task document so Elasticsearch can reclaim the space.\n\n**Force
        merging multiple indices**\n\nYou can force merge multiple indices with a
        single request by targeting:\n\n* One or more data streams that contain multiple
        backing indices\n* Multiple indices\n* One or more aliases\n* All data streams
        and indices in a cluster\n\nEach targeted shard is force-merged separately
        using the force_merge threadpool.\nBy default each node only has a single
        `force_merge` thread which means that the shards on that node are force-merged
        one at a time.\nIf you expand the `force_merge` threadpool on a node then
        it will force merge its shards in parallel\n\nForce merge makes the storage
        for the shard being merged temporarily increase, as it may require free space
        up to triple its size in case `max_num_segments parameter` is set to `1`,
        to rewrite all segments into a new one.\n\n**Data streams and time-based indices**\n\nForce-merging
        is useful for managing a data stream's older backing indices and other time-based
        indices, particularly after a rollover.\nIn these cases, each index only receives
        indexing traffic for a certain period of time.\nOnce an index receive no more
        writes, its shards can be force-merged to a single segment.\nThis can be a
        good idea because single-segment shards can sometimes use simpler and more
        efficient data structures to perform searches.\nFor example:\n\n```\nPOST
        /.ds-my-data-stream-2099.03.07-000001/_forcemerge?max_num_segments=1\n```\n\n##
        Required authorization\n\n* Index privileges: `maintenance`\n"
      externalDocs:
        url: https://www.elastic.co/docs/reference/elasticsearch/index-settings/merge
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/indices-forcemerge.html
      operationId: indices-forcemerge
      parameters:
      - "$ref": "#/components/parameters/indices.forcemerge-index"
      - "$ref": "#/components/parameters/indices.forcemerge-allow_no_indices"
      - "$ref": "#/components/parameters/indices.forcemerge-expand_wildcards"
      - "$ref": "#/components/parameters/indices.forcemerge-flush"
      - "$ref": "#/components/parameters/indices.forcemerge-ignore_unavailable"
      - "$ref": "#/components/parameters/indices.forcemerge-max_num_segments"
      - "$ref": "#/components/parameters/indices.forcemerge-only_expunge_deletes"
      - "$ref": "#/components/parameters/indices.forcemerge-wait_for_completion"
      responses:
        '200':
          "$ref": "#/components/responses/indices.forcemerge-200"
      x-state: Generally available; Added in 2.1.0
      x-codeSamples:
      - lang: Console
        source: 'POST my-index-000001/_forcemerge

          '
      - lang: Python
        source: |-
          resp = client.indices.forcemerge(
              index="my-index-000001",
          )
      - lang: JavaScript
        source: |-
          const response = await client.indices.forcemerge({
            index: "my-index-000001",
          });
      - lang: Ruby
        source: |-
          response = client.indices.forcemerge(
            index: "my-index-000001"
          )
      - lang: PHP
        source: |-
          $resp = $client->indices()->forcemerge([
              "index" => "my-index-000001",
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/my-index-000001/_forcemerge"'
      - lang: Java
        source: |
          client.indices().forcemerge(f -> f
              .index("my-index-000001")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_lifecycle/stats":
    get:
      tags:
      - data stream
      summary: Get data stream lifecycle stats
      description: |
        Get statistics about the data streams that are managed by a data stream lifecycle.

        ## Required authorization

        * Cluster privileges: `monitor`
      externalDocs:
        url: https://www.elastic.co/docs/manage-data/lifecycle/data-stream
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/data-streams-get-lifecycle-stats.html
      operationId: indices-get-data-lifecycle-stats
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  data_stream_count:
                    description: The count of data streams currently being managed
                      by the data stream lifecycle.
                    type: number
                  data_streams:
                    description: Information about the data streams that are managed
                      by the data stream lifecycle.
                    type: array
                    items:
                      "$ref": "#/components/schemas/indices.get_data_lifecycle_stats.DataStreamStats"
                  last_run_duration_in_millis:
                    description: The duration of the last data stream lifecycle execution.
                    allOf:
                    - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
                  time_between_starts_in_millis:
                    description: |-
                      The time that passed between the start of the last two data stream lifecycle executions.
                      This value should amount approximately to `data_streams.lifecycle.poll_interval`.
                    allOf:
                    - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
                required:
                - data_stream_count
                - data_streams
              examples:
                IndicesGetDataLifecycleStatsResponseExample1:
                  description: A successful response for `GET _lifecycle/stats?human&pretty`
                  value: |-
                    {
                      "last_run_duration_in_millis": 2,
                      "last_run_duration": "2ms",
                      "time_between_starts_in_millis": 9998,
                      "time_between_starts": "9.99s",
                      "data_streams_count": 2,
                      "data_streams": [
                        {
                          "name": "my-data-stream",
                          "backing_indices_in_total": 2,
                          "backing_indices_in_error": 0
                        },
                        {
                          "name": "my-other-stream",
                          "backing_indices_in_total": 2,
                          "backing_indices_in_error": 1
                        }
                      ]
                    }
      x-state: Generally available; Added in 8.12.0
      x-codeSamples:
      - lang: Console
        source: 'GET _lifecycle/stats?human&pretty

          '
      - lang: Python
        source: |-
          resp = client.indices.get_data_lifecycle_stats(
              human=True,
              pretty=True,
          )
      - lang: JavaScript
        source: |-
          const response = await client.indices.getDataLifecycleStats({
            human: "true",
            pretty: "true",
          });
      - lang: Ruby
        source: |-
          response = client.indices.get_data_lifecycle_stats(
            human: "true",
            pretty: "true"
          )
      - lang: PHP
        source: |-
          $resp = $client->indices()->getDataLifecycleStats([
              "human" => "true",
              "pretty" => "true",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_lifecycle/stats?human&pretty"'
      - lang: Java
        source: 'client.indices().getDataLifecycleStats();

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_data_stream/{name}/_mappings":
    get:
      tags:
      - data stream
      summary: Get data stream mappings
      description: |
        Get mapping information for one or more data streams.

        ## Required authorization

        * Index privileges: `view_index_metadata`
      operationId: indices-get-data-stream-mappings
      parameters:
      - in: path
        name: name
        description: A comma-separated list of data streams or data stream patterns.
          Supports wildcards (`*`).
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Indices"
        style: simple
      - in: query
        name: master_timeout
        description: |-
          The period to wait for a connection to the master node. If no response is
          received before the timeout expires, the request fails and returns an
          error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  data_streams:
                    type: array
                    items:
                      "$ref": "#/components/schemas/indices.get_data_stream_mappings.DataStreamMappings"
                required:
                - data_streams
              examples:
                IndicesGetDataStreamMappingsResponseExample1:
                  summary: Get data stream settings on a data stream
                  description: 'This is a response to `GET /_data_stream/my-data-stream/_settings`
                    where my-data-stream that has two settings set. The `effective_settings`
                    field shows additional settings that are pulled from its template.

                    '
                  value: |-
                    {
                      "data_streams": [
                        {
                          "name": "my-data-stream",
                          "mappings": {
                            "properties": {
                              "field1": {
                                "type": "ip"
                              },
                              "field3": {
                                "type": "text"
                              }
                            }
                          },
                          "effective_mappings": {
                            "properties": {
                              "field1": {
                                "type": "ip"
                              },
                              "field2": {
                                "type": "text"
                              },
                              "field3": {
                                "type": "text"
                              }
                            }
                          }
                        }
                      ]
                    }
      x-state: Generally available; Added in 9.1.0
      x-codeSamples:
      - lang: Console
        source: 'GET /_data_stream/my-data-stream/_mappings

          '
      - lang: Python
        source: |-
          resp = client.indices.get_data_stream_mappings(
              name="my-data-stream",
          )
      - lang: JavaScript
        source: |-
          const response = await client.indices.getDataStreamMappings({
            name: "my-data-stream",
          });
      - lang: Ruby
        source: |-
          response = client.indices.get_data_stream_mappings(
            name: "my-data-stream"
          )
      - lang: PHP
        source: |-
          $resp = $client->indices()->getDataStreamMappings([
              "name" => "my-data-stream",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_data_stream/my-data-stream/_mappings"'
      - lang: Java
        source: |
          client.indices().getDataStreamMappings(g -> g
              .name("my-data-stream")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    put:
      tags:
      - data stream
      summary: Update data stream mappings
      description: |
        This API can be used to override mappings on specific data streams. These overrides will take precedence over what
        is specified in the template that the data stream matches. The mapping change is only applied to new write indices
        that are created during rollover after this API is called. No indices are changed by this API.

        ## Required authorization

        * Index privileges: `manage`
      operationId: indices-put-data-stream-mappings
      parameters:
      - in: path
        name: name
        description: A comma-separated list of data streams or data stream patterns.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Indices"
        style: simple
      - in: query
        name: dry_run
        description: |-
          If `true`, the request does not actually change the mappings on any data streams. Instead, it
          simulates changing the settings and reports back to the user what would have happened had these settings
          actually been applied.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: master_timeout
        description: |-
          The period to wait for a connection to the master node. If no response is
          received before the timeout expires, the request fails and returns an
          error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: timeout
        description: |-
          The period to wait for a response. If no response is received before the
           timeout expires, the request fails and returns an error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/_types.mapping.TypeMapping"
            examples:
              IndicesPutDataStreamMappingsRequestExample1:
                summary: Change a data stream mapping
                description: 'This is a request to add or modify two fields in a mapping
                  on a data stream.

                  '
                value: |-
                  {
                     "properties":{
                        "field1":{
                           "type":"ip"
                        },
                        "field3":{
                           "type":"text"
                        }
                     }
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  data_streams:
                    type: array
                    items:
                      "$ref": "#/components/schemas/indices.put_data_stream_mappings.UpdatedDataStreamMappings"
                required:
                - data_streams
              examples:
                IndicesPutDataStreamMappingsResponseExample1:
                  summary: Change data stream settings on a data stream
                  description: 'This shows a response to `PUT /_data_stream/my-data-stream/_settings`
                    when two settings are successfully updated on the data stream.
                    In this case, `index.number_of_shards` is only applied to the
                    data stream -- it will be applied to the write index on rollover.
                    The setting `index.lifecycle.name` is applied to the data stream
                    and all backing indices.

                    '
                  value: |-
                    {
                      "data_streams": [
                        {
                          "name": "my-data-stream",
                          "applied_to_data_stream": true,
                          "mappings": {
                            "properties": {
                              "field1": {
                                "type": "ip"
                              },
                              "field3": {
                                "type": "text"
                              }
                            }
                          },
                          "effective_mappings": {
                            "properties": {
                              "field1": {
                                "type": "ip"
                              },
                              "field3": {
                                "type": "text"
                              }
                            }
                          }
                        }
                      ]
                    }
                IndicesPutDataStreamMappingsResponseExample2:
                  summary: Attempt to change a data stream setting that is not allowed
                  description: 'This shows a response to `PUT /_data_stream/my-data-stream/_settings`
                    when a user attempts to set a setting that is not allowed on a
                    data stream. As a result, no change was applied to the data stream.

                    '
                  value: |-
                    {
                      "data_streams": [
                        {
                          "name": "my-data-stream",
                          "applied_to_data_stream": false,
                          "error": "Failed to parse mapping: The mapper type [txt] declared on field [field1] does not exist. It might have been created within a future version or requires a plugin to be installed. Check the documentation.",
                          "mappings": {
                            "_doc": {}
                          },
                          "effective_mappings": {
                            "_doc": {}
                          }
                        }
                      ]
                    }
      x-state: Generally available; Added in 9.2.0
      x-codeSamples:
      - lang: Console
        source: |-
          PUT /_data_stream/my-data-stream/_mappings
          {
             "properties":{
                "field1":{
                   "type":"ip"
                },
                "field3":{
                   "type":"text"
                }
             }
          }
      - lang: Python
        source: |-
          resp = client.indices.put_data_stream_mappings(
              name="my-data-stream",
              mappings={
                  "properties": {
                      "field1": {
                          "type": "ip"
                      },
                      "field3": {
                          "type": "text"
                      }
                  }
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.indices.putDataStreamMappings({
            name: "my-data-stream",
            mappings: {
              properties: {
                field1: {
                  type: "ip",
                },
                field3: {
                  type: "text",
                },
              },
            },
          });
      - lang: Ruby
        source: |-
          response = client.indices.put_data_stream_mappings(
            name: "my-data-stream",
            body: {
              "properties": {
                "field1": {
                  "type": "ip"
                },
                "field3": {
                  "type": "text"
                }
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->indices()->putDataStreamMappings([
              "name" => "my-data-stream",
              "body" => [
                  "properties" => [
                      "field1" => [
                          "type" => "ip",
                      ],
                      "field3" => [
                          "type" => "text",
                      ],
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"properties":{"field1":{"type":"ip"},"field3":{"type":"text"}}}''
          "$ELASTICSEARCH_URL/_data_stream/my-data-stream/_mappings"'
      - lang: Java
        source: |
          client.indices().putDataStreamMappings(p -> p
              .name("my-data-stream")
              .mappings(m -> m
                  .properties(Map.of("field1", Property.of(pr -> pr
                          .ip(i -> i)
                      ),"field3", Property.of(pro -> pro
                          .text(t -> t)
                      )))
              )
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_data_stream/{name}/_settings":
    get:
      tags:
      - data stream
      summary: Get data stream settings
      description: |
        Get setting information for one or more data streams.

        ## Required authorization

        * Index privileges: `view_index_metadata`
      operationId: indices-get-data-stream-settings
      parameters:
      - in: path
        name: name
        description: A comma-separated list of data streams or data stream patterns.
          Supports wildcards (`*`).
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Indices"
        style: simple
      - in: query
        name: master_timeout
        description: |-
          The period to wait for a connection to the master node. If no response is
          received before the timeout expires, the request fails and returns an
          error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  data_streams:
                    type: array
                    items:
                      "$ref": "#/components/schemas/indices.get_data_stream_settings.DataStreamSettings"
                required:
                - data_streams
              examples:
                IndicesGetDataStreamSettingsResponseExample1:
                  summary: Get data stream settings on a data stream
                  description: 'This is a response to `GET /_data_stream/my-data-stream/_settings`
                    where my-data-stream that has two settings set. The `effective_settings`
                    field shows additional settings that are pulled from its template.

                    '
                  value: |-
                    {
                      "data_streams": [
                        {
                          "name": "my-data-stream",
                          "settings": {
                            "index": {
                              "lifecycle": {
                                "name": "new-test-policy"
                              },
                              "number_of_shards": "11"
                            }
                          },
                          "effective_settings": {
                            "index": {
                              "lifecycle": {
                                "name": "new-test-policy"
                              },
                              "mode": "standard",
                              "number_of_shards": "11",
                              "number_of_replicas": "0"
                            }
                          }
                        }
                      ]
                    }
      x-state: Generally available; Added in 9.1.0
      x-codeSamples:
      - lang: Console
        source: 'GET /_data_stream/my-data-stream/_settings

          '
      - lang: Python
        source: |-
          resp = client.indices.get_data_stream_settings(
              name="my-data-stream",
          )
      - lang: JavaScript
        source: |-
          const response = await client.indices.getDataStreamSettings({
            name: "my-data-stream",
          });
      - lang: Ruby
        source: |-
          response = client.indices.get_data_stream_settings(
            name: "my-data-stream"
          )
      - lang: PHP
        source: |-
          $resp = $client->indices()->getDataStreamSettings([
              "name" => "my-data-stream",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_data_stream/my-data-stream/_settings"'
      - lang: Java
        source: |
          client.indices().getDataStreamSettings(g -> g
              .name("my-data-stream")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    put:
      tags:
      - data stream
      summary: Update data stream settings
      description: |
        NOTE: Available in 8.19. Not available in earlier versions.

        This API can be used to override settings on specific data streams. These overrides will take precedence over what
        is specified in the template that the data stream matches. To prevent your data stream from getting into an invalid state,
        only certain settings are allowed. If possible, the setting change is applied to all
        backing indices. Otherwise, it will be applied when the data stream is next rolled over.

        ## Required authorization

        * Index privileges: `manage`
      operationId: indices-put-data-stream-settings
      parameters:
      - in: path
        name: name
        description: A comma-separated list of data streams or data stream patterns.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Indices"
        style: simple
      - in: query
        name: dry_run
        description: |-
          If `true`, the request does not actually change the settings on any data streams or indices. Instead, it
          simulates changing the settings and reports back to the user what would have happened had these settings
          actually been applied.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: master_timeout
        description: |-
          The period to wait for a connection to the master node. If no response is
          received before the timeout expires, the request fails and returns an
          error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: timeout
        description: |-
          The period to wait for a response. If no response is received before the
           timeout expires, the request fails and returns an error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/indices._types.IndexSettings"
            examples:
              IndicesPutDataStreamSettingsRequestExample1:
                summary: Change a data stream setting
                description: 'This is a request to change two settings on a data stream.

                  '
                value: |-
                  {
                    "index.lifecycle.name" : "new-test-policy",
                    "index.number_of_shards": 11
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  data_streams:
                    type: array
                    items:
                      "$ref": "#/components/schemas/indices.put_data_stream_settings.UpdatedDataStreamSettings"
                required:
                - data_streams
              examples:
                IndicesPutDataStreamSettingsResponseExample1:
                  summary: Change data stream settings on a data stream
                  description: 'This shows a response to `PUT /_data_stream/my-data-stream/_settings`
                    when two settings are successfully updated on the data stream.
                    In this case, `index.number_of_shards` is only applied to the
                    data stream -- it will be applied to the write index on rollover.
                    The setting `index.lifecycle.name` is applied to the data stream
                    and all backing indices.

                    '
                  value: |-
                    {
                      "data_streams": [
                        {
                          "name": "my-data-stream",
                          "applied_to_data_stream": true,
                          "settings": {
                            "index": {
                              "lifecycle": {
                                "name": "new-test-policy"
                              },
                              "number_of_shards": "11"
                            }
                          },
                          "effective_settings": {
                            "index": {
                              "lifecycle": {
                                "name": "new-test-policy"
                              },
                              "mode": "standard",
                              "number_of_shards": "11",
                              "number_of_replicas": "0"
                            }
                          },
                          "index_settings_results": {
                            "applied_to_data_stream_only": [
                              "index.number_of_shards"
                            ],
                            "applied_to_data_stream_and_backing_indices": [
                              "index.lifecycle.name"
                            ]
                          }
                        }
                      ]
                    }
                IndicesPutDataStreamSettingsResponseExample2:
                  summary: Change data stream settings on a data stream that has an
                    index with a metadata block
                  description: 'This shows a response to `PUT /_data_stream/my-data-stream/_settings`
                    when a setting is successfully applied to the data stream, but
                    one of the backing indices, `.ds-my-data-stream-2025.05.28-000001`,
                    has a write block. The response reports that the setting was not
                    successfully applied to that index.

                    '
                  value: |-
                    {
                      "data_streams": [
                        {
                          "name": "my-data-stream",
                          "applied_to_data_stream": true,
                          "settings": {
                            "index": {
                              "lifecycle": {
                                "name": "new-test-policy"
                              },
                              "number_of_shards": "11"
                            }
                          },
                          "effective_settings": {
                            "index": {
                              "lifecycle": {
                                "name": "new-test-policy"
                              },
                              "mode": "standard",
                              "number_of_shards": "11",
                              "number_of_replicas": "0"
                            }
                          },
                          "index_settings_results": {
                            "applied_to_data_stream_only": [
                              "index.number_of_shards"
                            ],
                            "applied_to_data_stream_and_backing_indices": [
                              "index.lifecycle.name"
                            ],
                            "errors": [
                              {
                                "index": ".ds-my-data-stream-2025.05.28-000001",
                                "error": "index [.ds-my-data-stream-2025.05.28-000001] blocked by: [FORBIDDEN/9/index metadata (api)];"
                              }
                            ]
                          }
                        }
                      ]
                    }
                IndicesPutDataStreamSettingsResponseExample3:
                  summary: Attempt to change a data stream setting that is not allowed
                  description: 'This shows a response to `PUT /_data_stream/my-data-stream/_settings`
                    when a user attempts to set a setting that is not allowed on a
                    data stream. As a result, no change was applied to the data stream.

                    '
                  value: |-
                    {
                      "data_streams": [
                        {
                          "name": "my-data-stream",
                          "applied_to_data_stream": false,
                          "error": "Cannot set the following settings on a data stream: [index.number_of_replicas]",
                          "settings": {},
                          "effective_settings": {},
                          "index_settings_results": {
                            "applied_to_data_stream_only": [],
                            "applied_to_data_stream_and_backing_indices": []
                          }
                        }
                      ]
                    }
      x-state: Generally available; Added in 9.1.0
      x-codeSamples:
      - lang: Console
        source: |-
          PUT /_data_stream/my-data-stream/_settings
          {
            "index.lifecycle.name" : "new-test-policy",
            "index.number_of_shards": 11
          }
      - lang: Python
        source: |-
          resp = client.indices.put_data_stream_settings(
              name="my-data-stream",
              settings={
                  "index.lifecycle.name": "new-test-policy",
                  "index.number_of_shards": 11
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.indices.putDataStreamSettings({
            name: "my-data-stream",
            settings: {
              "index.lifecycle.name": "new-test-policy",
              "index.number_of_shards": 11,
            },
          });
      - lang: Ruby
        source: |-
          response = client.indices.put_data_stream_settings(
            name: "my-data-stream",
            body: {
              "index.lifecycle.name": "new-test-policy",
              "index.number_of_shards": 11
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->indices()->putDataStreamSettings([
              "name" => "my-data-stream",
              "body" => [
                  "index.lifecycle.name" => "new-test-policy",
                  "index.number_of_shards" => 11,
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"index.lifecycle.name":"new-test-policy","index.number_of_shards":11}''
          "$ELASTICSEARCH_URL/_data_stream/my-data-stream/_settings"'
      - lang: Java
        source: |
          client.indices().putDataStreamSettings(p -> p
              .name("my-data-stream")
              .settings(s -> s
                  .otherSettings(Map.of("index.lifecycle.name", JsonData.fromJson("\"new-test-policy\""),"index.number_of_shards", JsonData.fromJson("11")))
              )
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/{index}/_mapping/field/{fields}":
    get:
      tags:
      - indices
      summary: 'Get mapping definitions

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_mapping/field/{fields}</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/{index}/_mapping/field/{fields}</span>\n
        \                     </div>\n                    \n\nRetrieves mapping definitions
        for one or more fields.\nFor data streams, the API retrieves field mappings
        for the stream’s backing indices.\n\nThis API is useful if you don't need
        a complete mapping or if an index mapping contains a large number of fields.\n\n##
        Required authorization\n\n* Index privileges: `view_index_metadata`\n"
      operationId: indices-get-field-mapping
      parameters:
      - "$ref": "#/components/parameters/indices.get_field_mapping-index"
      - "$ref": "#/components/parameters/indices.get_field_mapping-fields"
      - "$ref": "#/components/parameters/indices.get_field_mapping-allow_no_indices"
      - "$ref": "#/components/parameters/indices.get_field_mapping-expand_wildcards"
      - "$ref": "#/components/parameters/indices.get_field_mapping-ignore_unavailable"
      - "$ref": "#/components/parameters/indices.get_field_mapping-include_defaults"
      responses:
        '200':
          "$ref": "#/components/responses/indices.get_field_mapping-200"
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'GET publications/_mapping/field/title

          '
      - lang: Python
        source: |-
          resp = client.indices.get_field_mapping(
              index="publications",
              fields="title",
          )
      - lang: JavaScript
        source: |-
          const response = await client.indices.getFieldMapping({
            index: "publications",
            fields: "title",
          });
      - lang: Ruby
        source: |-
          response = client.indices.get_field_mapping(
            index: "publications",
            fields: "title"
          )
      - lang: PHP
        source: |-
          $resp = $client->indices()->getFieldMapping([
              "index" => "publications",
              "fields" => "title",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/publications/_mapping/field/title"'
      - lang: Java
        source: |
          client.indices().getFieldMapping(g -> g
              .fields("title")
              .index("publications")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/{index}/_mapping":
    get:
      tags:
      - indices
      summary: 'Get mapping definitions

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_mapping</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/{index}/_mapping</span>\n
        \                     </div>\n                    \n\nFor data streams, the
        API retrieves mappings for the stream’s backing indices.\n\n## Required authorization\n\n*
        Index privileges: `view_index_metadata`\n"
      operationId: indices-get-mapping
      parameters:
      - "$ref": "#/components/parameters/indices.get_mapping-index"
      - "$ref": "#/components/parameters/indices.get_mapping-allow_no_indices"
      - "$ref": "#/components/parameters/indices.get_mapping-expand_wildcards"
      - "$ref": "#/components/parameters/indices.get_mapping-ignore_unavailable"
      - "$ref": "#/components/parameters/indices.get_mapping-local"
      - "$ref": "#/components/parameters/indices.get_mapping-master_timeout"
      responses:
        '200':
          "$ref": "#/components/responses/indices.get_mapping-200"
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'GET /books/_mapping

          '
      - lang: Python
        source: |-
          resp = client.indices.get_mapping(
              index="books",
          )
      - lang: JavaScript
        source: |-
          const response = await client.indices.getMapping({
            index: "books",
          });
      - lang: Ruby
        source: |-
          response = client.indices.get_mapping(
            index: "books"
          )
      - lang: PHP
        source: |-
          $resp = $client->indices()->getMapping([
              "index" => "books",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/books/_mapping"'
      - lang: Java
        source: |
          client.indices().getMapping(g -> g
              .index("books")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    post:
      tags:
      - indices
      summary: 'Update field mappings

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb put\">PUT</span>\n                      <span class=\"operation-path\">/{index}/_mapping</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/{index}/_mapping</span>\n
        \                     </div>\n                    \n\nAdd new fields to an
        existing data stream or index.\nYou can use the update mapping API to:\n\n-
        Add a new field to an existing index\n- Update mappings for multiple indices
        in a single request\n- Add new properties to an object field\n- Enable multi-fields
        for an existing field\n- Update supported mapping parameters\n- Change a field's
        mapping using reindexing\n- Rename a field using a field alias\n\nLearn how
        to use the update mapping API with practical examples in the [Update mapping
        API examples](https://www.elastic.co/docs/manage-data/data-store/mapping/update-mappings-examples)
        guide.\n\n## Required authorization\n\n* Index privileges: `manage`\n"
      externalDocs:
        url: https://www.elastic.co/docs/reference/elasticsearch/mapping-reference/mapping-parameters
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/indices-put-mapping.html
      operationId: indices-put-mapping
      parameters:
      - "$ref": "#/components/parameters/indices.put_mapping-index"
      - "$ref": "#/components/parameters/indices.put_mapping-allow_no_indices"
      - "$ref": "#/components/parameters/indices.put_mapping-expand_wildcards"
      - "$ref": "#/components/parameters/indices.put_mapping-ignore_unavailable"
      - "$ref": "#/components/parameters/indices.put_mapping-master_timeout"
      - "$ref": "#/components/parameters/indices.put_mapping-timeout"
      - "$ref": "#/components/parameters/indices.put_mapping-write_index_only"
      requestBody:
        "$ref": "#/components/requestBodies/indices.put_mapping"
      responses:
        '200':
          "$ref": "#/components/responses/indices.put_mapping-200"
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: |-
          PUT /my-index-000001/_mapping
          {
            "properties": {
              "user": {
                "properties": {
                  "name": {
                    "type": "keyword"
                  }
                }
              }
            }
          }
      - lang: Python
        source: |-
          resp = client.indices.put_mapping(
              index="my-index-000001",
              properties={
                  "user": {
                      "properties": {
                          "name": {
                              "type": "keyword"
                          }
                      }
                  }
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.indices.putMapping({
            index: "my-index-000001",
            properties: {
              user: {
                properties: {
                  name: {
                    type: "keyword",
                  },
                },
              },
            },
          });
      - lang: Ruby
        source: |-
          response = client.indices.put_mapping(
            index: "my-index-000001",
            body: {
              "properties": {
                "user": {
                  "properties": {
                    "name": {
                      "type": "keyword"
                    }
                  }
                }
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->indices()->putMapping([
              "index" => "my-index-000001",
              "body" => [
                  "properties" => [
                      "user" => [
                          "properties" => [
                              "name" => [
                                  "type" => "keyword",
                              ],
                          ],
                      ],
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"properties":{"user":{"properties":{"name":{"type":"keyword"}}}}}''
          "$ELASTICSEARCH_URL/my-index-000001/_mapping"'
      - lang: Java
        source: |
          client.indices().putMapping(p -> p
              .index("my-index-000001")
              .properties("user", pr -> pr
                  .object(o -> o
                      .properties("name", pro -> pro
                          .keyword(k -> k)
                      )
                  )
              )
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_migration/reindex/{index}/_status":
    get:
      tags:
      - migration
      summary: Get the migration reindexing status
      description: Get the status of a migration reindex attempt for a data stream
        or index.
      operationId: indices-get-migrate-reindex-status
      parameters:
      - in: path
        name: index
        description: The index or data stream name.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Indices"
        style: simple
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  start_time:
                    allOf:
                    - "$ref": "#/components/schemas/_types.DateTime"
                  start_time_millis:
                    allOf:
                    - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
                  complete:
                    type: boolean
                  total_indices_in_data_stream:
                    type: number
                  total_indices_requiring_upgrade:
                    type: number
                  successes:
                    type: number
                  in_progress:
                    type: array
                    items:
                      "$ref": "#/components/schemas/indices.get_migrate_reindex_status.StatusInProgress"
                  pending:
                    type: number
                  errors:
                    type: array
                    items:
                      "$ref": "#/components/schemas/indices.get_migrate_reindex_status.StatusError"
                  exception:
                    type: string
                required:
                - start_time_millis
                - complete
                - total_indices_in_data_stream
                - total_indices_requiring_upgrade
                - successes
                - in_progress
                - pending
                - errors
      x-state: Generally available; Added in 8.18.0
      x-codeSamples:
      - lang: Console
        source: 'GET /_migration/reindex/my-data-stream/_status

          '
      - lang: Python
        source: |-
          resp = client.perform_request(
              "GET",
              "/_migration/reindex/my-data-stream/_status",
          )
      - lang: JavaScript
        source: |-
          const response = await client.transport.request({
            method: "GET",
            path: "/_migration/reindex/my-data-stream/_status",
          });
      - lang: Ruby
        source: |-
          response = client.perform_request(
            "GET",
            "/_migration/reindex/my-data-stream/_status",
            {},
          )
      - lang: PHP
        source: |-
          $requestFactory = Psr17FactoryDiscovery::findRequestFactory();
          $request = $requestFactory->createRequest(
              "GET",
              "/_migration/reindex/my-data-stream/_status",
          );
          $resp = $client->sendRequest($request);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_migration/reindex/my-data-stream/_status"'
      - lang: Java
        source: |
          client.indices().getMigrateReindexStatus(g -> g
              .index("my-data-stream")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/{index}/_settings/{name}":
    get:
      tags:
      - indices
      summary: 'Get index settings

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_settings</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_settings/{name}</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/{index}/_settings</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/{index}/_settings/{name}</span>\n
        \                     </div>\n                    \n\nGet setting information
        for one or more indices.\nFor data streams, it returns setting information
        for the stream's backing indices.\n\n## Required authorization\n\n* Index
        privileges: `view_index_metadata`\n"
      operationId: indices-get-settings
      parameters:
      - "$ref": "#/components/parameters/indices.get_settings-index"
      - "$ref": "#/components/parameters/indices.get_settings-name"
      - "$ref": "#/components/parameters/indices.get_settings-allow_no_indices"
      - "$ref": "#/components/parameters/indices.get_settings-expand_wildcards"
      - "$ref": "#/components/parameters/indices.get_settings-flat_settings"
      - "$ref": "#/components/parameters/indices.get_settings-ignore_unavailable"
      - "$ref": "#/components/parameters/indices.get_settings-include_defaults"
      - "$ref": "#/components/parameters/indices.get_settings-local"
      - "$ref": "#/components/parameters/indices.get_settings-master_timeout"
      responses:
        '200':
          "$ref": "#/components/responses/indices.get_settings-200"
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'GET _all/_settings?expand_wildcards=all&filter_path=*.settings.index.*.slowlog

          '
      - lang: Python
        source: |-
          resp = client.indices.get_settings(
              index="_all",
              expand_wildcards="all",
              filter_path="*.settings.index.*.slowlog",
          )
      - lang: JavaScript
        source: |-
          const response = await client.indices.getSettings({
            index: "_all",
            expand_wildcards: "all",
            filter_path: "*.settings.index.*.slowlog",
          });
      - lang: Ruby
        source: |-
          response = client.indices.get_settings(
            index: "_all",
            expand_wildcards: "all",
            filter_path: "*.settings.index.*.slowlog"
          )
      - lang: PHP
        source: |-
          $resp = $client->indices()->getSettings([
              "index" => "_all",
              "expand_wildcards" => "all",
              "filter_path" => "*.settings.index.*.slowlog",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_all/_settings?expand_wildcards=all&filter_path=*.settings.index.*.slowlog"'
      - lang: Java
        source: |
          client.indices().getSettings(g -> g
              .expandWildcards("all")
              .index("_all")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_migration/reindex":
    post:
      tags:
      - migration
      summary: Reindex legacy backing indices
      description: |-
        Reindex all legacy backing indices for a data stream.
        This operation occurs in a persistent task.
        The persistent task ID is returned immediately and the reindexing work is completed in that task.
      operationId: indices-migrate-reindex
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/indices.migrate_reindex.MigrateReindex"
            examples:
              IndicesMigrateReindexExample1:
                description: An example body for a `POST _migration/reindex` request.
                value: |-
                  {
                      "source": {
                          "index": "my-data-stream"
                      },
                      "mode": "upgrade"
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
      x-state: Generally available; Added in 8.18.0
      x-codeSamples:
      - lang: Console
        source: |-
          POST _migration/reindex
          {
              "source": {
                  "index": "my-data-stream"
              },
              "mode": "upgrade"
          }
      - lang: Python
        source: |-
          resp = client.perform_request(
              "POST",
              "/_migration/reindex",
              headers={"Content-Type": "application/json"},
              body={
                  "source": {
                      "index": "my-data-stream"
                  },
                  "mode": "upgrade"
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.transport.request({
            method: "POST",
            path: "/_migration/reindex",
            body: {
              source: {
                index: "my-data-stream",
              },
              mode: "upgrade",
            },
          });
      - lang: Ruby
        source: |-
          response = client.perform_request(
            "POST",
            "/_migration/reindex",
            {},
            {
              "source": {
                "index": "my-data-stream"
              },
              "mode": "upgrade"
            },
            { "Content-Type": "application/json" },
          )
      - lang: PHP
        source: |-
          $requestFactory = Psr17FactoryDiscovery::findRequestFactory();
          $streamFactory = Psr17FactoryDiscovery::findStreamFactory();
          $request = $requestFactory->createRequest(
              "POST",
              "/_migration/reindex",
          );
          $request = $request->withHeader("Content-Type", "application/json");
          $request = $request->withBody($streamFactory->createStream(
              json_encode([
                  "source" => [
                      "index" => "my-data-stream",
                  ],
                  "mode" => "upgrade",
              ]),
          ));
          $resp = $client->sendRequest($request);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"source":{"index":"my-data-stream"},"mode":"upgrade"}''
          "$ELASTICSEARCH_URL/_migration/reindex"'
      - lang: Java
        source: |
          client.indices().migrateReindex(m -> m
              .reindex(r -> r
                  .mode(ModeEnum.Upgrade)
                  .source(s -> s
                      .index("my-data-stream")
                  )
              )
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_data_stream/_migrate/{name}":
    post:
      tags:
      - data stream
      summary: Convert an index alias to a data stream
      description: |
        Converts an index alias to a data stream.
        You must have a matching index template that is data stream enabled.
        The alias must meet the following criteria:
        The alias must have a write index;
        All indices for the alias must have a `@timestamp` field mapping of a `date` or `date_nanos` field type;
        The alias must not have any filters;
        The alias must not use custom routing.
        If successful, the request removes the alias and creates a data stream with the same name.
        The indices for the alias become hidden backing indices for the stream.
        The write index for the alias becomes the write index for the stream.

        ## Required authorization

        * Index privileges: `manage`
      operationId: indices-migrate-to-data-stream
      parameters:
      - in: path
        name: name
        description: Name of the index alias to convert to a data stream.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.IndexName"
        style: simple
      - in: query
        name: master_timeout
        description: Period to wait for a connection to the master node. If no response
          is received before the timeout expires, the request fails and returns an
          error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: timeout
        description: Period to wait for a response. If no response is received before
          the timeout expires, the request fails and returns an error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
      x-state: Generally available; Added in 7.9.0
      x-codeSamples:
      - lang: Console
        source: 'POST _data_stream/_migrate/my-time-series-data

          '
      - lang: Python
        source: |-
          resp = client.indices.migrate_to_data_stream(
              name="my-time-series-data",
          )
      - lang: JavaScript
        source: |-
          const response = await client.indices.migrateToDataStream({
            name: "my-time-series-data",
          });
      - lang: Ruby
        source: |-
          response = client.indices.migrate_to_data_stream(
            name: "my-time-series-data"
          )
      - lang: PHP
        source: |-
          $resp = $client->indices()->migrateToDataStream([
              "name" => "my-time-series-data",
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_data_stream/_migrate/my-time-series-data"'
      - lang: Java
        source: |
          client.indices().migrateToDataStream(m -> m
              .name("my-time-series-data")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_data_stream/_modify":
    post:
      tags:
      - data stream
      summary: Update data streams
      description: Performs one or more data stream modification actions in a single
        atomic operation.
      operationId: indices-modify-data-stream
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                actions:
                  description: Actions to perform.
                  type: array
                  items:
                    "$ref": "#/components/schemas/indices.modify_data_stream.Action"
              required:
              - actions
            examples:
              IndicesModifyDataStreamExample1:
                description: An example body for a `POST _data_stream/_modify` request.
                value: |-
                  {
                    "actions": [
                      {
                        "remove_backing_index": {
                          "data_stream": "my-data-stream",
                          "index": ".ds-my-data-stream-2023.07.26-000001"
                        }
                      },
                      {
                        "add_backing_index": {
                          "data_stream": "my-data-stream",
                          "index": ".ds-my-data-stream-2023.07.26-000001-downsample"
                        }
                      }
                    ]
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
      x-state: Generally available; Added in 7.16.0
      x-codeSamples:
      - lang: Console
        source: |-
          POST _data_stream/_modify
          {
            "actions": [
              {
                "remove_backing_index": {
                  "data_stream": "my-data-stream",
                  "index": ".ds-my-data-stream-2023.07.26-000001"
                }
              },
              {
                "add_backing_index": {
                  "data_stream": "my-data-stream",
                  "index": ".ds-my-data-stream-2023.07.26-000001-downsample"
                }
              }
            ]
          }
      - lang: Python
        source: |-
          resp = client.indices.modify_data_stream(
              actions=[
                  {
                      "remove_backing_index": {
                          "data_stream": "my-data-stream",
                          "index": ".ds-my-data-stream-2023.07.26-000001"
                      }
                  },
                  {
                      "add_backing_index": {
                          "data_stream": "my-data-stream",
                          "index": ".ds-my-data-stream-2023.07.26-000001-downsample"
                      }
                  }
              ],
          )
      - lang: JavaScript
        source: |-
          const response = await client.indices.modifyDataStream({
            actions: [
              {
                remove_backing_index: {
                  data_stream: "my-data-stream",
                  index: ".ds-my-data-stream-2023.07.26-000001",
                },
              },
              {
                add_backing_index: {
                  data_stream: "my-data-stream",
                  index: ".ds-my-data-stream-2023.07.26-000001-downsample",
                },
              },
            ],
          });
      - lang: Ruby
        source: |-
          response = client.indices.modify_data_stream(
            body: {
              "actions": [
                {
                  "remove_backing_index": {
                    "data_stream": "my-data-stream",
                    "index": ".ds-my-data-stream-2023.07.26-000001"
                  }
                },
                {
                  "add_backing_index": {
                    "data_stream": "my-data-stream",
                    "index": ".ds-my-data-stream-2023.07.26-000001-downsample"
                  }
                }
              ]
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->indices()->modifyDataStream([
              "body" => [
                  "actions" => array(
                      [
                          "remove_backing_index" => [
                              "data_stream" => "my-data-stream",
                              "index" => ".ds-my-data-stream-2023.07.26-000001",
                          ],
                      ],
                      [
                          "add_backing_index" => [
                              "data_stream" => "my-data-stream",
                              "index" => ".ds-my-data-stream-2023.07.26-000001-downsample",
                          ],
                      ],
                  ),
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"actions":[{"remove_backing_index":{"data_stream":"my-data-stream","index":".ds-my-data-stream-2023.07.26-000001"}},{"add_backing_index":{"data_stream":"my-data-stream","index":".ds-my-data-stream-2023.07.26-000001-downsample"}}]}''
          "$ELASTICSEARCH_URL/_data_stream/_modify"'
      - lang: Java
        source: |
          client.indices().modifyDataStream(m -> m
              .actions(List.of(Action.of(a -> a
                      .removeBackingIndex(r -> r
                          .dataStream("my-data-stream")
                          .index(".ds-my-data-stream-2023.07.26-000001")
                      )
                  ),Action.of(ac -> ac
                      .addBackingIndex(ad -> ad
                          .dataStream("my-data-stream")
                          .index(".ds-my-data-stream-2023.07.26-000001-downsample")
                      )
                  )))
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/{index}/_open":
    post:
      tags:
      - indices
      summary: Open a closed index
      description: |
        For data streams, the API opens any closed backing indices.

        A closed index is blocked for read/write operations and does not allow all operations that opened indices allow.
        It is not possible to index documents or to search for documents in a closed index.
        This allows closed indices to not have to maintain internal data structures for indexing or searching documents, resulting in a smaller overhead on the cluster.

        When opening or closing an index, the master is responsible for restarting the index shards to reflect the new state of the index.
        The shards will then go through the normal recovery process.
        The data of opened or closed indices is automatically replicated by the cluster to ensure that enough shard copies are safely kept around at all times.

        You can open and close multiple indices.
        An error is thrown if the request explicitly refers to a missing index.
        This behavior can be turned off by using the `ignore_unavailable=true` parameter.

        By default, you must explicitly name the indices you are opening or closing.
        To open or close indices with `_all`, `*`, or other wildcard expressions, change the `action.destructive_requires_name` setting to `false`.
        This setting can also be changed with the cluster update settings API.

        Closed indices consume a significant amount of disk-space which can cause problems in managed environments.
        Closing indices can be turned off with the cluster settings API by setting `cluster.indices.close.enable` to `false`.

        Because opening or closing an index allocates its shards, the `wait_for_active_shards` setting on index creation applies to the `_open` and `_close` index actions as well.

        ## Required authorization

        * Index privileges: `manage`
      operationId: indices-open
      parameters:
      - in: path
        name: index
        description: |-
          Comma-separated list of data streams, indices, and aliases used to limit the request.
          Supports wildcards (`*`).
          By default, you must explicitly name the indices you using to limit the request.
          To limit a request using `_all`, `*`, or other wildcard expressions, change the `action.destructive_requires_name` setting to false.
          You can update this setting in the `elasticsearch.yml` file or using the cluster update settings API.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Indices"
        style: simple
      - in: query
        name: allow_no_indices
        description: |-
          If `false`, the request returns an error if any wildcard expression, index alias, or `_all` value targets only missing or closed indices.
          This behavior applies even if the request targets other open indices.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: expand_wildcards
        description: |+
          Type of index that wildcard patterns can match.
          If the request can target data streams, this argument determines whether wildcard expressions match hidden data streams.
          Supports comma-separated values, such as `open,hidden`.

          Supported values include:
            - `all`: Match any data stream or index, including hidden ones.
            - `open`: Match open, non-hidden indices. Also matches any non-hidden data stream.
            - `closed`: Match closed, non-hidden indices. Also matches any non-hidden data stream. Data streams cannot be closed.
            - `hidden`: Match hidden data streams and hidden indices. Must be combined with `open`, `closed`, or `both`.
            - `none`: Wildcard expressions are not accepted.

        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.ExpandWildcards"
        style: form
      - in: query
        name: ignore_unavailable
        description: If `false`, the request returns an error if it targets a missing
          or closed index.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: master_timeout
        description: |-
          Period to wait for a connection to the master node.
          If no response is received before the timeout expires, the request fails and returns an error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: timeout
        description: |-
          Period to wait for a response.
          If no response is received before the timeout expires, the request fails and returns an error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: wait_for_active_shards
        description: |-
          The number of shard copies that must be active before proceeding with the operation.
          Set to `all` or any positive integer up to the total number of shards in the index (`number_of_replicas+1`).
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.WaitForActiveShards"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  acknowledged:
                    type: boolean
                  shards_acknowledged:
                    type: boolean
                required:
                - acknowledged
                - shards_acknowledged
              examples:
                indicesOpenResponseExample1:
                  description: A successful response for opening an index.
                  value: |-
                    {
                      "acknowledged" : true,
                      "shards_acknowledged" : true
                    }
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'POST /.ds-my-data-stream-2099.03.07-000001/_open/

          '
      - lang: Python
        source: |-
          resp = client.indices.open(
              index=".ds-my-data-stream-2099.03.07-000001",
          )
      - lang: JavaScript
        source: |-
          const response = await client.indices.open({
            index: ".ds-my-data-stream-2099.03.07-000001",
          });
      - lang: Ruby
        source: |-
          response = client.indices.open(
            index: ".ds-my-data-stream-2099.03.07-000001"
          )
      - lang: PHP
        source: |-
          $resp = $client->indices()->open([
              "index" => ".ds-my-data-stream-2099.03.07-000001",
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/.ds-my-data-stream-2099.03.07-000001/_open/"'
      - lang: Java
        source: |
          client.indices().open(o -> o
              .index(".ds-my-data-stream-2099.03.07-000001")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_data_stream/_promote/{name}":
    post:
      tags:
      - data stream
      summary: Promote a data stream
      description: |-
        Promote a data stream from a replicated data stream managed by cross-cluster replication (CCR) to a regular data stream.

        With CCR auto following, a data stream from a remote cluster can be replicated to the local cluster.
        These data streams can't be rolled over in the local cluster.
        These replicated data streams roll over only if the upstream data stream rolls over.
        In the event that the remote cluster is no longer available, the data stream in the local cluster can be promoted to a regular data stream, which allows these data streams to be rolled over in the local cluster.

        NOTE: When promoting a data stream, ensure the local cluster has a data stream enabled index template that matches the data stream.
        If this is missing, the data stream will not be able to roll over until a matching index template is created.
        This will affect the lifecycle management of the data stream and interfere with the data stream size and retention.
      operationId: indices-promote-data-stream
      parameters:
      - in: path
        name: name
        description: The name of the data stream to promote
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.IndexName"
        style: simple
      - in: query
        name: master_timeout
        description: Period to wait for a connection to the master node. If no response
          is received before the timeout expires, the request fails and returns an
          error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
      x-state: Generally available; Added in 7.9.0
      x-codeSamples:
      - lang: Console
        source: 'POST /_data_stream/_promote/my-data-stream

          '
      - lang: Python
        source: |-
          resp = client.indices.promote_data_stream(
              name="my-data-stream",
          )
      - lang: JavaScript
        source: |-
          const response = await client.indices.promoteDataStream({
            name: "my-data-stream",
          });
      - lang: Ruby
        source: |-
          response = client.indices.promote_data_stream(
            name: "my-data-stream"
          )
      - lang: PHP
        source: |-
          $resp = $client->indices()->promoteDataStream([
              "name" => "my-data-stream",
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_data_stream/_promote/my-data-stream"'
      - lang: Java
        source: |
          client.indices().promoteDataStream(p -> p
              .name("my-data-stream")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/{index}/_settings":
    put:
      tags:
      - indices
      summary: 'Update index settings

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb put\">PUT</span>\n                      <span class=\"operation-path\">/_settings</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb put\">PUT</span>\n                      <span class=\"operation-path\">/{index}/_settings</span>\n
        \                     </div>\n                    \n\nChanges dynamic index
        settings in real time.\nFor data streams, index setting changes are applied
        to all backing indices by default.\n\nTo revert a setting to the default value,
        use a null value.\nThe list of per-index settings that can be updated dynamically
        on live indices can be found in index settings documentation.\nTo preserve
        existing settings from being updated, set the `preserve_existing` parameter
        to `true`.\n\nFor performance optimization during bulk indexing, you can disable
        the refresh interval.\nRefer to [disable refresh interval](https://www.elastic.co/docs/deploy-manage/production-guidance/optimize-performance/indexing-speed#disable-refresh-interval)
        for an example.\nThere are multiple valid ways to represent index settings
        in the request body. You can specify only the setting, for example:\n\n```\n{\n
        \ \"number_of_replicas\": 1\n}\n```\n\nOr you can use an `index` setting object:\n```\n{\n
        \ \"index\": {\n    \"number_of_replicas\": 1\n  }\n}\n```\n\nOr you can use
        dot annotation:\n```\n{\n  \"index.number_of_replicas\": 1\n}\n```\n\nOr you
        can embed any of the aforementioned options in a `settings` object. For example:\n\n```\n{\n
        \ \"settings\": {\n    \"index\": {\n      \"number_of_replicas\": 1\n    }\n
        \ }\n}\n```\n\nNOTE: You can only define new analyzers on closed indices.\nTo
        add an analyzer, you must close the index, define the analyzer, and reopen
        the index.\nYou cannot close the write index of a data stream.\nTo update
        the analyzer for a data stream's write index and future backing indices, update
        the analyzer in the index template used by the stream.\nThen roll over the
        data stream to apply the new analyzer to the stream's write index and future
        backing indices.\nThis affects searches and any new data added to the stream
        after the rollover.\nHowever, it does not affect the data stream's backing
        indices or their existing data.\nTo change the analyzer for existing backing
        indices, you must create a new data stream and reindex your data into it.\nRefer
        to [updating analyzers on existing indices](https://www.elastic.co/docs/manage-data/data-store/text-analysis/specify-an-analyzer#update-analyzers-on-existing-indices)
        for step-by-step examples.\n\n## Required authorization\n\n* Index privileges:
        `manage`\n"
      externalDocs:
        url: https://www.elastic.co/docs/reference/elasticsearch/index-settings/
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/indices-update-settings.html
      operationId: indices-put-settings
      parameters:
      - "$ref": "#/components/parameters/indices.put_settings-index"
      - "$ref": "#/components/parameters/indices.put_settings-allow_no_indices"
      - "$ref": "#/components/parameters/indices.put_settings-expand_wildcards"
      - "$ref": "#/components/parameters/indices.put_settings-flat_settings"
      - "$ref": "#/components/parameters/indices.put_settings-ignore_unavailable"
      - "$ref": "#/components/parameters/indices.put_settings-master_timeout"
      - "$ref": "#/components/parameters/indices.put_settings-preserve_existing"
      - "$ref": "#/components/parameters/indices.put_settings-reopen"
      - "$ref": "#/components/parameters/indices.put_settings-timeout"
      requestBody:
        "$ref": "#/components/requestBodies/indices.put_settings"
      responses:
        '200':
          "$ref": "#/components/responses/indices.put_settings-200"
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: |-
          PUT /my-index-000001/_settings
          {
            "index" : {
              "number_of_replicas" : 2
            }
          }
      - lang: Python
        source: |-
          resp = client.indices.put_settings(
              index="my-index-000001",
              settings={
                  "index": {
                      "number_of_replicas": 2
                  }
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.indices.putSettings({
            index: "my-index-000001",
            settings: {
              index: {
                number_of_replicas: 2,
              },
            },
          });
      - lang: Ruby
        source: |-
          response = client.indices.put_settings(
            index: "my-index-000001",
            body: {
              "index": {
                "number_of_replicas": 2
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->indices()->putSettings([
              "index" => "my-index-000001",
              "body" => [
                  "index" => [
                      "number_of_replicas" => 2,
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"index":{"number_of_replicas":2}}'' "$ELASTICSEARCH_URL/my-index-000001/_settings"'
      - lang: Java
        source: |
          client.indices().putSettings(p -> p
              .index("my-index-000001")
              .settings(s -> s
                  .index(i -> i
                      .numberOfReplicas("2")
                  )
              )
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/{index}/_recovery":
    get:
      tags:
      - indices
      summary: 'Get index recovery information

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_recovery</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/{index}/_recovery</span>\n
        \                     </div>\n                    \n\nGet information about
        ongoing and completed shard recoveries for one or more indices.\nFor data
        streams, the API returns information for the stream's backing indices.\n\nAll
        recoveries, whether ongoing or complete, are kept in the cluster state and
        may be reported on at any time.\n\nShard recovery is the process of initializing
        a shard copy, such as restoring a primary shard from a snapshot or creating
        a replica shard from a primary shard.\nWhen a shard recovery completes, the
        recovered shard is available for search and indexing.\n\nRecovery automatically
        occurs during the following processes:\n\n* When creating an index for the
        first time.\n* When a node rejoins the cluster and starts up any missing primary
        shard copies using the data that it holds in its data path.\n* Creation of
        new replica shard copies from the primary.\n* Relocation of a shard copy to
        a different node in the same cluster.\n* A snapshot restore operation.\n*
        A clone, shrink, or split operation.\n\nYou can determine the cause of a shard
        recovery using the recovery or cat recovery APIs.\n\nThe index recovery API
        reports information about completed recoveries only for shard copies that
        currently exist in the cluster.\nIt only reports the last recovery for each
        shard copy and does not report historical information about earlier recoveries,
        nor does it report information about the recoveries of shard copies that no
        longer exist.\nThis means that if a shard copy completes a recovery and then
        Elasticsearch relocates it onto a different node then the information about
        the original recovery will not be shown in the recovery API.\n\n## Required
        authorization\n\n* Index privileges: `monitor`\n"
      operationId: indices-recovery
      parameters:
      - "$ref": "#/components/parameters/indices.recovery-index"
      - "$ref": "#/components/parameters/indices.recovery-active_only"
      - "$ref": "#/components/parameters/indices.recovery-detailed"
      - "$ref": "#/components/parameters/indices.recovery-allow_no_indices"
      - "$ref": "#/components/parameters/indices.recovery-expand_wildcards"
      - "$ref": "#/components/parameters/indices.recovery-ignore_unavailable"
      responses:
        '200':
          "$ref": "#/components/responses/indices.recovery-200"
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'GET /_recovery?human

          '
      - lang: Python
        source: |-
          resp = client.indices.recovery(
              human=True,
          )
      - lang: JavaScript
        source: |-
          const response = await client.indices.recovery({
            human: "true",
          });
      - lang: Ruby
        source: |-
          response = client.indices.recovery(
            human: "true"
          )
      - lang: PHP
        source: |-
          $resp = $client->indices()->recovery([
              "human" => "true",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_recovery?human"'
      - lang: Java
        source: 'client.indices().recovery(r -> r);

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/{index}/_refresh":
    get:
      tags:
      - indices
      summary: 'Refresh an index

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_refresh</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_refresh</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/{index}/_refresh</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/{index}/_refresh</span>\n
        \                     </div>\n                    \n\nA refresh makes recent
        operations performed on one or more indices available for search.\nFor data
        streams, the API runs the refresh operation on the stream’s backing indices.\n\nBy
        default, Elasticsearch periodically refreshes indices every second, but only
        on indices that have received one search request or more in the last 30 seconds.\nYou
        can change this default interval with the `index.refresh_interval` setting.\n\nIn
        Elastic Cloud Serverless, the default refresh interval is 5 seconds across
        all indices.\n\nRefresh requests are synchronous and do not return a response
        until the refresh operation completes.\n\nRefreshes are resource-intensive.\nTo
        ensure good cluster performance, it's recommended to wait for Elasticsearch's
        periodic refresh rather than performing an explicit refresh when possible.\n\nIf
        your application workflow indexes documents and then runs a search to retrieve
        the indexed document, it's recommended to use the index API's `refresh=wait_for`
        query parameter option.\nThis option ensures the indexing operation waits
        for a periodic refresh before running the search.\n\n## Required authorization\n\n*
        Index privileges: `maintenance`\n"
      operationId: indices-refresh
      parameters:
      - "$ref": "#/components/parameters/indices.refresh-index"
      - "$ref": "#/components/parameters/indices.refresh-allow_no_indices"
      - "$ref": "#/components/parameters/indices.refresh-expand_wildcards"
      - "$ref": "#/components/parameters/indices.refresh-ignore_unavailable"
      responses:
        '200':
          "$ref": "#/components/responses/indices.refresh-200"
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'GET _refresh

          '
      - lang: Python
        source: resp = client.indices.refresh()
      - lang: JavaScript
        source: const response = await client.indices.refresh();
      - lang: Ruby
        source: response = client.indices.refresh
      - lang: PHP
        source: "$resp = $client->indices()->refresh();"
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_refresh"'
      - lang: Java
        source: 'client.indices().refresh(r -> r);

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/{index}/_reload_search_analyzers":
    post:
      tags:
      - indices
      summary: 'Reload search analyzers

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/{index}/_reload_search_analyzers</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/{index}/_reload_search_analyzers</span>\n
        \                     </div>\n                    \n\nReload an index's search
        analyzers and their resources.\nFor data streams, the API reloads search analyzers
        and resources for the stream's backing indices.\n\nIMPORTANT: After reloading
        the search analyzers you should clear the request cache to make sure it doesn't
        contain responses derived from the previous versions of the analyzer.\n\nYou
        can use the reload search analyzers API to pick up changes to synonym files
        used in the `synonym_graph` or `synonym` token filter of a search analyzer.\nTo
        be eligible, the token filter must have an `updateable` flag of `true` and
        only be used in search analyzers.\n\nNOTE: This API does not perform a reload
        for each shard of an index.\nInstead, it performs a reload for each node containing
        index shards.\nAs a result, the total shard count returned by the API can
        differ from the number of index shards.\nBecause reloading affects every node
        with an index shard, it is important to update the synonym file on every data
        node in the cluster--including nodes that don't contain a shard replica--before
        using this API.\nThis ensures the synonym file is updated everywhere in the
        cluster in case shards are relocated in the future.\n\n## Required authorization\n\n*
        Index privileges: `manage`\n"
      externalDocs:
        url: https://www.elastic.co/docs/reference/elasticsearch/mapping-reference/search-analyzer
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/indices-reload-analyzers.html
      operationId: indices-reload-search-analyzers
      parameters:
      - "$ref": "#/components/parameters/indices.reload_search_analyzers-index"
      - "$ref": "#/components/parameters/indices.reload_search_analyzers-allow_no_indices"
      - "$ref": "#/components/parameters/indices.reload_search_analyzers-expand_wildcards"
      - "$ref": "#/components/parameters/indices.reload_search_analyzers-ignore_unavailable"
      - "$ref": "#/components/parameters/indices.reload_search_analyzers-resource"
      responses:
        '200':
          "$ref": "#/components/responses/indices.reload_search_analyzers-200"
      x-state: Generally available; Added in 7.3.0
      x-codeSamples:
      - lang: Console
        source: 'POST /my-index-000001/_reload_search_analyzers

          '
      - lang: Python
        source: |-
          resp = client.indices.reload_search_analyzers(
              index="my-index-000001",
          )
      - lang: JavaScript
        source: |-
          const response = await client.indices.reloadSearchAnalyzers({
            index: "my-index-000001",
          });
      - lang: Ruby
        source: |-
          response = client.indices.reload_search_analyzers(
            index: "my-index-000001"
          )
      - lang: PHP
        source: |-
          $resp = $client->indices()->reloadSearchAnalyzers([
              "index" => "my-index-000001",
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/my-index-000001/_reload_search_analyzers"'
      - lang: Java
        source: |
          client.indices().reloadSearchAnalyzers(r -> r
              .index("my-index-000001")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_resolve/cluster/{name}":
    get:
      tags:
      - indices
      summary: 'Resolve the cluster

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_resolve/cluster</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_resolve/cluster/{name}</span>\n
        \                     </div>\n                    \n\nResolve the specified
        index expressions to return information about each cluster, including the
        local \"querying\" cluster, if included.\nIf no index expression is provided,
        the API will return information about all the remote clusters that are configured
        on the querying cluster.\n\nThis endpoint is useful before doing a cross-cluster
        search in order to determine which remote clusters should be included in a
        search.\n\nYou use the same index expression with this endpoint as you would
        for cross-cluster search.\nIndex and cluster exclusions are also supported
        with this endpoint.\n\nFor each cluster in the index expression, information
        is returned about:\n\n* Whether the querying (\"local\") cluster is currently
        connected to each remote cluster specified in the index expression. Note that
        this endpoint actively attempts to contact the remote clusters, unlike the
        `remote/info` endpoint.\n* Whether each remote cluster is configured with
        `skip_unavailable` as `true` or `false`.\n* Whether there are any indices,
        aliases, or data streams on that cluster that match the index expression.\n*
        Whether the search is likely to have errors returned when you do the cross-cluster
        search (including any authorization errors if you do not have permission to
        query the index).\n* Cluster version information, including the Elasticsearch
        server version.\n\nFor example, `GET /_resolve/cluster/my-index-*,cluster*:my-index-*`
        returns information about the local cluster and all remotely configured clusters
        that start with the alias `cluster*`.\nEach cluster returns information about
        whether it has any indices, aliases or data streams that match `my-index-*`.\n\n##
        Note on backwards compatibility\nThe ability to query without an index expression
        was added in version 8.18, so when\nquerying remote clusters older than that,
        the local cluster will send the index\nexpression `dummy*` to those remote
        clusters. Thus, if an errors occur, you may see a reference\nto that index
        expression even though you didn't request it. If it causes a problem, you
        can\ninstead include an index expression like `*:*` to bypass the issue.\n\n##
        Advantages of using this endpoint before a cross-cluster search\n\nYou may
        want to exclude a cluster or index from a search when:\n\n* A remote cluster
        is not currently connected and is configured with `skip_unavailable=false`.
        Running a cross-cluster search under those conditions will cause the entire
        search to fail.\n* A cluster has no matching indices, aliases or data streams
        for the index expression (or your user does not have permissions to search
        them). For example, suppose your index expression is `logs*,remote1:logs*`
        and the remote1 cluster has no indices, aliases or data streams that match
        `logs*`. In that case, that cluster will return no results from that cluster
        if you include it in a cross-cluster search.\n* The index expression (combined
        with any query parameters you specify) will likely cause an exception to be
        thrown when you do the search. In these cases, the \"error\" field in the
        `_resolve/cluster` response will be present. (This is also where security/permission
        errors will be shown.)\n* A remote cluster is an older version that does not
        support the feature you want to use in your search.\n\n## Test availability
        of remote clusters\n\nThe `remote/info` endpoint is commonly used to test
        whether the \"local\" cluster (the cluster being queried) is connected to
        its remote clusters, but it does not necessarily reflect whether the remote
        cluster is available or not.\nThe remote cluster may be available, while the
        local cluster is not currently connected to it.\n\nYou can use the `_resolve/cluster`
        API to attempt to reconnect to remote clusters.\nFor example with `GET _resolve/cluster`
        or `GET _resolve/cluster/*:*`.\nThe `connected` field in the response will
        indicate whether it was successful.\nIf a connection was (re-)established,
        this will also cause the `remote/info` endpoint to now indicate a connected
        status.\n\n## Required authorization\n\n* Index privileges: `view_index_metadata`\n"
      operationId: indices-resolve-cluster
      parameters:
      - "$ref": "#/components/parameters/indices.resolve_cluster-name"
      - "$ref": "#/components/parameters/indices.resolve_cluster-allow_no_indices"
      - "$ref": "#/components/parameters/indices.resolve_cluster-expand_wildcards"
      - "$ref": "#/components/parameters/indices.resolve_cluster-ignore_throttled"
      - "$ref": "#/components/parameters/indices.resolve_cluster-ignore_unavailable"
      - "$ref": "#/components/parameters/indices.resolve_cluster-timeout"
      responses:
        '200':
          "$ref": "#/components/responses/indices.resolve_cluster-200"
      x-state: Generally available; Added in 8.13.0
      x-codeSamples:
      - lang: Console
        source: 'GET /_resolve/cluster/not-present,clust*:my-index*,oldcluster:*?ignore_unavailable=false&timeout=5s

          '
      - lang: Python
        source: |-
          resp = client.indices.resolve_cluster(
              name="not-present,clust*:my-index*,oldcluster:*",
              ignore_unavailable=False,
              timeout="5s",
          )
      - lang: JavaScript
        source: |-
          const response = await client.indices.resolveCluster({
            name: "not-present,clust*:my-index*,oldcluster:*",
            ignore_unavailable: "false",
            timeout: "5s",
          });
      - lang: Ruby
        source: |-
          response = client.indices.resolve_cluster(
            name: "not-present,clust*:my-index*,oldcluster:*",
            ignore_unavailable: "false",
            timeout: "5s"
          )
      - lang: PHP
        source: |-
          $resp = $client->indices()->resolveCluster([
              "name" => "not-present,clust*:my-index*,oldcluster:*",
              "ignore_unavailable" => "false",
              "timeout" => "5s",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_resolve/cluster/not-present,clust*:my-index*,oldcluster:*?ignore_unavailable=false&timeout=5s"'
      - lang: Java
        source: |
          client.indices().resolveCluster(r -> r
              .ignoreUnavailable(false)
              .name(List.of("not-present","clust*:my-index*","oldcluster:*"))
              .timeout(t -> t
                  .offset(5)
              )
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_resolve/index/{name}":
    post:
      tags:
      - indices
      summary: 'Resolve indices

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_resolve/index/{name}</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_resolve/index/{name}</span>\n
        \                     </div>\n                    \n\nResolve the names and/or
        index patterns for indices, aliases, and data streams.\nMultiple patterns
        and remote clusters are supported.\n\n## Required authorization\n\n* Index
        privileges: `view_index_metadata`\n"
      operationId: indices-resolve-index
      parameters:
      - "$ref": "#/components/parameters/indices.resolve_index-name"
      - "$ref": "#/components/parameters/indices.resolve_index-expand_wildcards"
      - "$ref": "#/components/parameters/indices.resolve_index-ignore_unavailable"
      - "$ref": "#/components/parameters/indices.resolve_index-allow_no_indices"
      - "$ref": "#/components/parameters/indices.resolve_index-mode"
      requestBody:
        "$ref": "#/components/requestBodies/indices.resolve_index"
      responses:
        '200':
          "$ref": "#/components/responses/indices.resolve_index-200"
      x-state: Generally available; Added in 7.9.0
      x-codeSamples:
      - lang: Console
        source: 'GET /_resolve/index/f*,remoteCluster1:bar*?expand_wildcards=all

          '
      - lang: Python
        source: |-
          resp = client.indices.resolve_index(
              name="f*,remoteCluster1:bar*",
              expand_wildcards="all",
          )
      - lang: JavaScript
        source: |-
          const response = await client.indices.resolveIndex({
            name: "f*,remoteCluster1:bar*",
            expand_wildcards: "all",
          });
      - lang: Ruby
        source: |-
          response = client.indices.resolve_index(
            name: "f*,remoteCluster1:bar*",
            expand_wildcards: "all"
          )
      - lang: PHP
        source: |-
          $resp = $client->indices()->resolveIndex([
              "name" => "f*,remoteCluster1:bar*",
              "expand_wildcards" => "all",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_resolve/index/f*,remoteCluster1:bar*?expand_wildcards=all"'
      - lang: Java
        source: |
          client.indices().resolveIndex(r -> r
              .expandWildcards("all")
              .name(List.of("f*","remoteCluster1:bar*"))
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/{alias}/_rollover/{new_index}":
    post:
      tags:
      - indices
      summary: 'Roll over to a new index

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/{alias}/_rollover</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/{alias}/_rollover/{new_index}</span>\n
        \                     </div>\n                    \n\nTIP: We recommend using
        the index lifecycle rollover action to automate rollovers. However, Serverless
        does not support Index Lifecycle Management (ILM), so don't use this approach
        in the Serverless context.\n\nThe rollover API creates a new index for a data
        stream or index alias.\nThe API behavior depends on the rollover target.\n\n**Roll
        over a data stream**\n\nIf you roll over a data stream, the API creates a
        new write index for the stream.\nThe stream's previous write index becomes
        a regular backing index.\nA rollover also increments the data stream's generation.\n\n**Roll
        over an index alias with a write index**\n\nTIP: Prior to Elasticsearch 7.9,
        you'd typically use an index alias with a write index to manage time series
        data.\nData streams replace this functionality, require less maintenance,
        and automatically integrate with data tiers.\n\nIf an index alias points to
        multiple indices, one of the indices must be a write index.\nThe rollover
        API creates a new write index for the alias with `is_write_index` set to `true`.\nThe
        API also `sets is_write_index` to `false` for the previous write index.\n\n**Roll
        over an index alias with one index**\n\nIf you roll over an index alias that
        points to only one index, the API creates a new index for the alias and removes
        the original index from the alias.\n\nNOTE: A rollover creates a new index
        and is subject to the `wait_for_active_shards` setting.\n\n**Increment index
        names for an alias**\n\nWhen you roll over an index alias, you can specify
        a name for the new index.\nIf you don't specify a name and the current index
        ends with `-` and a number, such as `my-index-000001` or `my-index-3`, the
        new index name increments that number.\nFor example, if you roll over an alias
        with a current index of `my-index-000001`, the rollover creates a new index
        named `my-index-000002`.\nThis number is always six characters and zero-padded,
        regardless of the previous index's name.\n\nIf you use an index alias for
        time series data, you can use date math in the index name to track the rollover
        date.\nFor example, you can create an alias that points to an index named
        `<my-index-{now/d}-000001>`.\nIf you create the index on May 6, 2099, the
        index's name is `my-index-2099.05.06-000001`.\nIf you roll over the alias
        on May 7, 2099, the new index's name is `my-index-2099.05.07-000002`.\n\n##
        Required authorization\n\n* Index privileges: `manage`\n"
      operationId: indices-rollover
      parameters:
      - "$ref": "#/components/parameters/indices.rollover-alias"
      - "$ref": "#/components/parameters/indices.rollover-new_index"
      - "$ref": "#/components/parameters/indices.rollover-dry_run"
      - "$ref": "#/components/parameters/indices.rollover-master_timeout"
      - "$ref": "#/components/parameters/indices.rollover-timeout"
      - "$ref": "#/components/parameters/indices.rollover-wait_for_active_shards"
      - "$ref": "#/components/parameters/indices.rollover-lazy"
      requestBody:
        "$ref": "#/components/requestBodies/indices.rollover"
      responses:
        '200':
          "$ref": "#/components/responses/indices.rollover-200"
      x-state: Generally available; Added in 5.0.0
      x-codeSamples:
      - lang: Console
        source: |-
          POST my-data-stream/_rollover
          {
            "conditions": {
              "max_age": "7d",
              "max_docs": 1000,
              "max_primary_shard_size": "50gb",
              "max_primary_shard_docs": "2000"
            }
          }
      - lang: Python
        source: |-
          resp = client.indices.rollover(
              alias="my-data-stream",
              conditions={
                  "max_age": "7d",
                  "max_docs": 1000,
                  "max_primary_shard_size": "50gb",
                  "max_primary_shard_docs": "2000"
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.indices.rollover({
            alias: "my-data-stream",
            conditions: {
              max_age: "7d",
              max_docs: 1000,
              max_primary_shard_size: "50gb",
              max_primary_shard_docs: "2000",
            },
          });
      - lang: Ruby
        source: |-
          response = client.indices.rollover(
            alias: "my-data-stream",
            body: {
              "conditions": {
                "max_age": "7d",
                "max_docs": 1000,
                "max_primary_shard_size": "50gb",
                "max_primary_shard_docs": "2000"
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->indices()->rollover([
              "alias" => "my-data-stream",
              "body" => [
                  "conditions" => [
                      "max_age" => "7d",
                      "max_docs" => 1000,
                      "max_primary_shard_size" => "50gb",
                      "max_primary_shard_docs" => "2000",
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"conditions":{"max_age":"7d","max_docs":1000,"max_primary_shard_size":"50gb","max_primary_shard_docs":"2000"}}''
          "$ELASTICSEARCH_URL/my-data-stream/_rollover"'
      - lang: Java
        source: |
          client.indices().rollover(r -> r
              .alias("my-data-stream")
              .conditions(c -> c
                  .maxAge(m -> m
                      .time("7d")
                  )
                  .maxDocs(1000L)
                  .maxPrimaryShardSize("50gb")
                  .maxPrimaryShardDocs(2000L)
              )
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/{index}/_segments":
    get:
      tags:
      - indices
      summary: 'Get index segments

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_segments</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/{index}/_segments</span>\n
        \                     </div>\n                    \n\nGet low-level information
        about the Lucene segments in index shards.\nFor data streams, the API returns
        information about the stream's backing indices.\n\n## Required authorization\n\n*
        Index privileges: `monitor`\n"
      operationId: indices-segments
      parameters:
      - "$ref": "#/components/parameters/indices.segments-index"
      - "$ref": "#/components/parameters/indices.segments-allow_no_indices"
      - "$ref": "#/components/parameters/indices.segments-expand_wildcards"
      - "$ref": "#/components/parameters/indices.segments-ignore_unavailable"
      responses:
        '200':
          "$ref": "#/components/responses/indices.segments-200"
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'GET /my-index-000001/_segments

          '
      - lang: Python
        source: |-
          resp = client.indices.segments(
              index="my-index-000001",
          )
      - lang: JavaScript
        source: |-
          const response = await client.indices.segments({
            index: "my-index-000001",
          });
      - lang: Ruby
        source: |-
          response = client.indices.segments(
            index: "my-index-000001"
          )
      - lang: PHP
        source: |-
          $resp = $client->indices()->segments([
              "index" => "my-index-000001",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/my-index-000001/_segments"'
      - lang: Java
        source: |
          client.indices().segments(s -> s
              .index("my-index-000001")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/{index}/_shard_stores":
    get:
      tags:
      - indices
      summary: 'Get index shard stores

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_shard_stores</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/{index}/_shard_stores</span>\n
        \                     </div>\n                    \n\nGet store information
        about replica shards in one or more indices.\nFor data streams, the API retrieves
        store information for the stream's backing indices.\n\nThe index shard stores
        API returns the following information:\n\n* The node on which each replica
        shard exists.\n* The allocation ID for each replica shard.\n* A unique ID
        for each replica shard.\n* Any errors encountered while opening the shard
        index or from an earlier failure.\n\nBy default, the API returns store information
        only for primary shards that are unassigned or have one or more unassigned
        replica shards.\n\n## Required authorization\n\n* Index privileges: `monitor`\n"
      operationId: indices-shard-stores
      parameters:
      - "$ref": "#/components/parameters/indices.shard_stores-index"
      - "$ref": "#/components/parameters/indices.shard_stores-allow_no_indices"
      - "$ref": "#/components/parameters/indices.shard_stores-expand_wildcards"
      - "$ref": "#/components/parameters/indices.shard_stores-ignore_unavailable"
      - "$ref": "#/components/parameters/indices.shard_stores-status"
      responses:
        '200':
          "$ref": "#/components/responses/indices.shard_stores-200"
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'GET /_shard_stores?status=green

          '
      - lang: Python
        source: |-
          resp = client.indices.shard_stores(
              status="green",
          )
      - lang: JavaScript
        source: |-
          const response = await client.indices.shardStores({
            status: "green",
          });
      - lang: Ruby
        source: |-
          response = client.indices.shard_stores(
            status: "green"
          )
      - lang: PHP
        source: |-
          $resp = $client->indices()->shardStores([
              "status" => "green",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_shard_stores?status=green"'
      - lang: Java
        source: |
          client.indices().shardStores(s -> s
              .status("green")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/{index}/_shrink/{target}":
    post:
      tags:
      - indices
      summary: 'Shrink an index

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb put\">PUT</span>\n                      <span class=\"operation-path\">/{index}/_shrink/{target}</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/{index}/_shrink/{target}</span>\n
        \                     </div>\n                    \n\nShrink an index into
        a new index with fewer primary shards.\n\nBefore you can shrink an index:\n\n*
        The index must be read-only.\n* A copy of every shard in the index must reside
        on the same node.\n* The index must have a green health status.\n\nTo make
        shard allocation easier, we recommend you also remove the index's replica
        shards.\nYou can later re-add replica shards as part of the shrink operation.\n\nThe
        requested number of primary shards in the target index must be a factor of
        the number of shards in the source index.\nFor example an index with 8 primary
        shards can be shrunk into 4, 2 or 1 primary shards or an index with 15 primary
        shards can be shrunk into 5, 3 or 1.\nIf the number of shards in the index
        is a prime number it can only be shrunk into a single primary shard\n Before
        shrinking, a (primary or replica) copy of every shard in the index must be
        present on the same node.\n\nIMPORTANT: If the source index already has one
        primary shard, configuring the shrink operation with 'index.number_of_shards:
        1' will cause the request to fail. An index with one primary shard cannot
        be shrunk further.\n\nThe current write index on a data stream cannot be shrunk.
        In order to shrink the current write index, the data stream must first be
        rolled over so that a new write index is created and then the previous write
        index can be shrunk.\n\nA shrink operation:\n\n* Creates a new target index
        with the same definition as the source index, but with a smaller number of
        primary shards.\n* Hard-links segments from the source index into the target
        index. If the file system does not support hard-linking, then all segments
        are copied into the new index, which is a much more time consuming process.
        Also if using multiple data paths, shards on different data paths require
        a full copy of segment files if they are not on the same disk since hardlinks
        do not work across disks.\n* Recovers the target index as though it were a
        closed index which had just been re-opened. Recovers shards to the `.routing.allocation.initial_recovery._id`
        index setting.\n\nIMPORTANT: Indices can only be shrunk if they satisfy the
        following requirements:\n\n* The target index must not exist.\n* The source
        index must have more primary shards than the target index.\n* The number of
        primary shards in the target index must be a factor of the number of primary
        shards in the source index. The source index must have more primary shards
        than the target index.\n* The index must not contain more than 2,147,483,519
        documents in total across all shards that will be shrunk into a single shard
        on the target index as this is the maximum number of docs that can fit into
        a single shard.\n* The node handling the shrink process must have sufficient
        free disk space to accommodate a second copy of the existing index.\n\n##
        Required authorization\n\n* Index privileges: `manage`\n"
      operationId: indices-shrink
      parameters:
      - "$ref": "#/components/parameters/indices.shrink-index"
      - "$ref": "#/components/parameters/indices.shrink-target"
      - "$ref": "#/components/parameters/indices.shrink-master_timeout"
      - "$ref": "#/components/parameters/indices.shrink-timeout"
      - "$ref": "#/components/parameters/indices.shrink-wait_for_active_shards"
      requestBody:
        "$ref": "#/components/requestBodies/indices.shrink"
      responses:
        '200':
          "$ref": "#/components/responses/indices.shrink-200"
      x-state: Generally available; Added in 5.0.0
      x-codeSamples:
      - lang: Console
        source: |-
          POST /my_source_index/_shrink/my_target_index
          {
            "settings": {
              "index.routing.allocation.require._name": null,
              "index.blocks.write": null
            }
          }
      - lang: Python
        source: |-
          resp = client.indices.shrink(
              index="my_source_index",
              target="my_target_index",
              settings={
                  "index.routing.allocation.require._name": None,
                  "index.blocks.write": None
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.indices.shrink({
            index: "my_source_index",
            target: "my_target_index",
            settings: {
              "index.routing.allocation.require._name": null,
              "index.blocks.write": null,
            },
          });
      - lang: Ruby
        source: |-
          response = client.indices.shrink(
            index: "my_source_index",
            target: "my_target_index",
            body: {
              "settings": {
                "index.routing.allocation.require._name": nil,
                "index.blocks.write": nil
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->indices()->shrink([
              "index" => "my_source_index",
              "target" => "my_target_index",
              "body" => [
                  "settings" => [
                      "index.routing.allocation.require._name" => null,
                      "index.blocks.write" => null,
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"settings":{"index.routing.allocation.require._name":null,"index.blocks.write":null}}''
          "$ELASTICSEARCH_URL/my_source_index/_shrink/my_target_index"'
      - lang: Java
        source: |
          client.indices().shrink(s -> s
              .index("my_source_index")
              .settings(Map.of("index.blocks.write", JsonData.fromJson("null"),"index.routing.allocation.require._name", JsonData.fromJson("null")))
              .target("my_target_index")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_index_template/_simulate_index/{name}":
    post:
      tags:
      - indices
      summary: Simulate an index
      description: |
        Get the index configuration that would be applied to the specified index from an existing index template.

        ## Required authorization

        * Cluster privileges: `manage_index_templates`
      operationId: indices-simulate-index-template
      parameters:
      - in: path
        name: name
        description: Name of the index to simulate
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Name"
        style: simple
      - in: query
        name: create
        description: Whether the index template we optionally defined in the body
          should only be dry-run added if new or can also replace an existing one
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: cause
        description: User defined reason for dry-run creating the new template for
          simulation purposes
        deprecated: false
        schema:
          type: string
        style: form
      - in: query
        name: master_timeout
        description: Period to wait for a connection to the master node. If no response
          is received before the timeout expires, the request fails and returns an
          error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: include_defaults
        description: If true, returns all relevant default configurations for the
          index template.
        deprecated: false
        schema:
          type: boolean
        x-state: Generally available; Added in 8.11.0
        style: form
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/indices._types.IndexTemplate"
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  overlapping:
                    type: array
                    items:
                      "$ref": "#/components/schemas/indices.simulate_template.Overlapping"
                  template:
                    allOf:
                    - "$ref": "#/components/schemas/indices.simulate_template.Template"
                required:
                - template
              examples:
                indicesSimulateIndexTemplateResponseExample1:
                  description: A successful response from `POST /_index_template/_simulate_index/my-index-000001`.
                  value: |-
                    {
                      "template" : {
                        "settings" : {
                          "index" : {
                            "number_of_shards" : "2",
                            "number_of_replicas" : "0",
                            "routing" : {
                              "allocation" : {
                                "include" : {
                                  "_tier_preference" : "data_content"
                                }
                              }
                            }
                          }
                        },
                        "mappings" : {
                          "properties" : {
                            "@timestamp" : {
                              "type" : "date"
                            }
                          }
                        },
                        "aliases" : { }
                      },
                      "overlapping" : [
                        {
                          "name" : "template_1",
                          "index_patterns" : [
                            "my-index-*"
                          ]
                        }
                      ]
                    }
      x-state: Generally available; Added in 7.9.0
      x-codeSamples:
      - lang: Console
        source: 'POST /_index_template/_simulate_index/my-index-000001

          '
      - lang: Python
        source: |-
          resp = client.indices.simulate_index_template(
              name="my-index-000001",
              index_template=None,
          )
      - lang: JavaScript
        source: |-
          const response = await client.indices.simulateIndexTemplate({
            name: "my-index-000001",
            index_template: null,
          });
      - lang: Ruby
        source: |-
          response = client.indices.simulate_index_template(
            name: "my-index-000001"
          )
      - lang: PHP
        source: |-
          $resp = $client->indices()->simulateIndexTemplate([
              "name" => "my-index-000001",
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_index_template/_simulate_index/my-index-000001"'
      - lang: Java
        source: |
          client.indices().simulateIndexTemplate(s -> s
              .name("my-index-000001")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_index_template/_simulate/{name}":
    post:
      tags:
      - indices
      summary: 'Simulate an index template

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_index_template/_simulate</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_index_template/_simulate/{name}</span>\n
        \                     </div>\n                    \n\nGet the index configuration
        that would be applied by a particular index template.\n\n## Required authorization\n\n*
        Cluster privileges: `manage_index_templates`\n"
      operationId: indices-simulate-template
      parameters:
      - "$ref": "#/components/parameters/indices.simulate_template-name"
      - "$ref": "#/components/parameters/indices.simulate_template-create"
      - "$ref": "#/components/parameters/indices.simulate_template-cause"
      - "$ref": "#/components/parameters/indices.simulate_template-master_timeout"
      - "$ref": "#/components/parameters/indices.simulate_template-include_defaults"
      requestBody:
        "$ref": "#/components/requestBodies/indices.simulate_template"
      responses:
        '200':
          "$ref": "#/components/responses/indices.simulate_template-200"
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: |-
          POST /_index_template/_simulate
          {
            "index_patterns": ["my-index-*"],
            "composed_of": ["ct2"],
            "priority": 10,
            "template": {
              "settings": {
                "index.number_of_replicas": 1
              }
            }
          }
      - lang: Python
        source: |-
          resp = client.indices.simulate_template(
              index_patterns=[
                  "my-index-*"
              ],
              composed_of=[
                  "ct2"
              ],
              priority=10,
              template={
                  "settings": {
                      "index.number_of_replicas": 1
                  }
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.indices.simulateTemplate({
            index_patterns: ["my-index-*"],
            composed_of: ["ct2"],
            priority: 10,
            template: {
              settings: {
                "index.number_of_replicas": 1,
              },
            },
          });
      - lang: Ruby
        source: |-
          response = client.indices.simulate_template(
            body: {
              "index_patterns": [
                "my-index-*"
              ],
              "composed_of": [
                "ct2"
              ],
              "priority": 10,
              "template": {
                "settings": {
                  "index.number_of_replicas": 1
                }
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->indices()->simulateTemplate([
              "body" => [
                  "index_patterns" => array(
                      "my-index-*",
                  ),
                  "composed_of" => array(
                      "ct2",
                  ),
                  "priority" => 10,
                  "template" => [
                      "settings" => [
                          "index.number_of_replicas" => 1,
                      ],
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"index_patterns":["my-index-*"],"composed_of":["ct2"],"priority":10,"template":{"settings":{"index.number_of_replicas":1}}}''
          "$ELASTICSEARCH_URL/_index_template/_simulate"'
      - lang: Java
        source: |
          client.indices().simulateTemplate(s -> s
              .composedOf("ct2")
              .indexPatterns("my-index-*")
              .priority(10L)
              .template(t -> t
                  .settings(se -> se
                      .otherSettings("index.number_of_replicas", JsonData.fromJson("1"))
                  )
              )
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/{index}/_split/{target}":
    post:
      tags:
      - indices
      summary: 'Split an index

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb put\">PUT</span>\n                      <span class=\"operation-path\">/{index}/_split/{target}</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/{index}/_split/{target}</span>\n
        \                     </div>\n                    \n\nSplit an index into
        a new index with more primary shards.\n* Before you can split an index:\n\n*
        The index must be read-only.\n* The cluster health status must be green.\n\nYou
        can do make an index read-only with the following request using the add index
        block API:\n\n```\nPUT /my_source_index/_block/write\n```\n\nThe current write
        index on a data stream cannot be split.\nIn order to split the current write
        index, the data stream must first be rolled over so that a new write index
        is created and then the previous write index can be split.\n\nThe number of
        times the index can be split (and the number of shards that each original
        shard can be split into) is determined by the `index.number_of_routing_shards`
        setting.\nThe number of routing shards specifies the hashing space that is
        used internally to distribute documents across shards with consistent hashing.\nFor
        instance, a 5 shard index with `number_of_routing_shards` set to 30 (5 x 2
        x 3) could be split by a factor of 2 or 3.\n\nA split operation:\n\n* Creates
        a new target index with the same definition as the source index, but with
        a larger number of primary shards.\n* Hard-links segments from the source
        index into the target index. If the file system doesn't support hard-linking,
        all segments are copied into the new index, which is a much more time consuming
        process.\n* Hashes all documents again, after low level files are created,
        to delete documents that belong to a different shard.\n* Recovers the target
        index as though it were a closed index which had just been re-opened.\n\nIMPORTANT:
        Indices can only be split if they satisfy the following requirements:\n\n*
        The target index must not exist.\n* The source index must have fewer primary
        shards than the target index.\n* The number of primary shards in the target
        index must be a multiple of the number of primary shards in the source index.\n*
        The node handling the split process must have sufficient free disk space to
        accommodate a second copy of the existing index.\n\n## Required authorization\n\n*
        Index privileges: `manage`\n"
      operationId: indices-split
      parameters:
      - "$ref": "#/components/parameters/indices.split-index"
      - "$ref": "#/components/parameters/indices.split-target"
      - "$ref": "#/components/parameters/indices.split-master_timeout"
      - "$ref": "#/components/parameters/indices.split-timeout"
      - "$ref": "#/components/parameters/indices.split-wait_for_active_shards"
      requestBody:
        "$ref": "#/components/requestBodies/indices.split"
      responses:
        '200':
          "$ref": "#/components/responses/indices.split-200"
      x-state: Generally available; Added in 6.1.0
      x-codeSamples:
      - lang: Console
        source: |-
          POST /my-index-000001/_split/split-my-index-000001
          {
            "settings": {
              "index.number_of_shards": 2
            }
          }
      - lang: Python
        source: |-
          resp = client.indices.split(
              index="my-index-000001",
              target="split-my-index-000001",
              settings={
                  "index.number_of_shards": 2
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.indices.split({
            index: "my-index-000001",
            target: "split-my-index-000001",
            settings: {
              "index.number_of_shards": 2,
            },
          });
      - lang: Ruby
        source: |-
          response = client.indices.split(
            index: "my-index-000001",
            target: "split-my-index-000001",
            body: {
              "settings": {
                "index.number_of_shards": 2
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->indices()->split([
              "index" => "my-index-000001",
              "target" => "split-my-index-000001",
              "body" => [
                  "settings" => [
                      "index.number_of_shards" => 2,
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"settings":{"index.number_of_shards":2}}'' "$ELASTICSEARCH_URL/my-index-000001/_split/split-my-index-000001"'
      - lang: Java
        source: |
          client.indices().split(s -> s
              .index("my-index-000001")
              .settings("index.number_of_shards", JsonData.fromJson("2"))
              .target("split-my-index-000001")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/{index}/_stats/{metric}":
    get:
      tags:
      - indices
      summary: 'Get index statistics

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_stats</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/{index}/_stats</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_stats/{metric}</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/{index}/_stats/{metric}</span>\n
        \                     </div>\n                    \n\nFor data streams, the
        API retrieves statistics for the stream's backing indices.\n\nBy default,
        the returned statistics are index-level with `primaries` and `total` aggregations.\n`primaries`
        are the values for only the primary shards.\n`total` are the accumulated values
        for both primary and replica shards.\n\nTo get shard-level statistics, set
        the `level` parameter to `shards`.\n\nNOTE: When moving to another node, the
        shard-level statistics for a shard are cleared.\nAlthough the shard is no
        longer part of the node, that node retains any node-level statistics to which
        the shard contributed.\n\n## Required authorization\n\n* Index privileges:
        `monitor`\n"
      operationId: indices-stats
      parameters:
      - "$ref": "#/components/parameters/indices.stats-index"
      - "$ref": "#/components/parameters/indices.stats-metric"
      - "$ref": "#/components/parameters/indices.stats-completion_fields"
      - "$ref": "#/components/parameters/indices.stats-expand_wildcards"
      - "$ref": "#/components/parameters/indices.stats-fielddata_fields"
      - "$ref": "#/components/parameters/indices.stats-fields"
      - "$ref": "#/components/parameters/indices.stats-forbid_closed_indices"
      - "$ref": "#/components/parameters/indices.stats-groups"
      - "$ref": "#/components/parameters/indices.stats-include_segment_file_sizes"
      - "$ref": "#/components/parameters/indices.stats-include_unloaded_segments"
      - "$ref": "#/components/parameters/indices.stats-level"
      responses:
        '200':
          "$ref": "#/components/responses/indices.stats-200"
      x-state: Generally available; Added in 1.3.0
      x-codeSamples:
      - lang: Console
        source: 'GET _stats/fielddata?human&fields=my_join_field#question

          '
      - lang: Python
        source: |-
          resp = client.indices.stats(
              metric="fielddata",
              human=True,
              fields="my_join_field",
          )
      - lang: JavaScript
        source: |-
          const response = await client.indices.stats({
            metric: "fielddata",
            human: "true",
            fields: "my_join_field",
          });
      - lang: Ruby
        source: |-
          response = client.indices.stats(
            metric: "fielddata",
            human: "true",
            fields: "my_join_field"
          )
      - lang: PHP
        source: |-
          $resp = $client->indices()->stats([
              "metric" => "fielddata",
              "human" => "true",
              "fields" => "my_join_field",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_stats/fielddata?human&fields=my_join_field#question"'
      - lang: Java
        source: |
          client.indices().stats(s -> s
              .fields("my_join_field")
              .metric("fielddata")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_aliases":
    post:
      tags:
      - indices
      summary: Create or update an alias
      description: Adds a data stream or index to an alias.
      operationId: indices-update-aliases
      parameters:
      - in: query
        name: master_timeout
        description: |-
          Period to wait for a connection to the master node.
          If no response is received before the timeout expires, the request fails and returns an error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: timeout
        description: |-
          Period to wait for a response.
          If no response is received before the timeout expires, the request fails and returns an error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                actions:
                  description: Actions to perform.
                  type: array
                  items:
                    "$ref": "#/components/schemas/indices.update_aliases.Action"
            examples:
              IndicesUpdateAliasesExample1:
                description: An example body for a `POST _aliases` request.
                value: |-
                  {
                    "actions": [
                      {
                        "add": {
                          "index": "logs-nginx.access-prod",
                          "alias": "logs"
                        }
                      }
                    ]
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
      x-state: Generally available; Added in 1.3.0
      x-codeSamples:
      - lang: Console
        source: |-
          POST _aliases
          {
            "actions": [
              {
                "add": {
                  "index": "logs-nginx.access-prod",
                  "alias": "logs"
                }
              }
            ]
          }
      - lang: Python
        source: |-
          resp = client.indices.update_aliases(
              actions=[
                  {
                      "add": {
                          "index": "logs-nginx.access-prod",
                          "alias": "logs"
                      }
                  }
              ],
          )
      - lang: JavaScript
        source: |-
          const response = await client.indices.updateAliases({
            actions: [
              {
                add: {
                  index: "logs-nginx.access-prod",
                  alias: "logs",
                },
              },
            ],
          });
      - lang: Ruby
        source: |-
          response = client.indices.update_aliases(
            body: {
              "actions": [
                {
                  "add": {
                    "index": "logs-nginx.access-prod",
                    "alias": "logs"
                  }
                }
              ]
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->indices()->updateAliases([
              "body" => [
                  "actions" => array(
                      [
                          "add" => [
                              "index" => "logs-nginx.access-prod",
                              "alias" => "logs",
                          ],
                      ],
                  ),
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"actions":[{"add":{"index":"logs-nginx.access-prod","alias":"logs"}}]}''
          "$ELASTICSEARCH_URL/_aliases"'
      - lang: Java
        source: |
          client.indices().updateAliases(u -> u
              .actions(a -> a
                  .add(ad -> ad
                      .alias("logs")
                      .index("logs-nginx.access-prod")
                  )
              )
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/{index}/_validate/query":
    post:
      tags:
      - indices
      summary: 'Validate a query

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_validate/query</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_validate/query</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/{index}/_validate/query</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/{index}/_validate/query</span>\n
        \                     </div>\n                    \n\nValidates a query without
        running it."
      operationId: indices-validate-query
      parameters:
      - "$ref": "#/components/parameters/indices.validate_query-index"
      - "$ref": "#/components/parameters/indices.validate_query-allow_no_indices"
      - "$ref": "#/components/parameters/indices.validate_query-all_shards"
      - "$ref": "#/components/parameters/indices.validate_query-analyzer"
      - "$ref": "#/components/parameters/indices.validate_query-analyze_wildcard"
      - "$ref": "#/components/parameters/indices.validate_query-default_operator"
      - "$ref": "#/components/parameters/indices.validate_query-df"
      - "$ref": "#/components/parameters/indices.validate_query-expand_wildcards"
      - "$ref": "#/components/parameters/indices.validate_query-explain"
      - "$ref": "#/components/parameters/indices.validate_query-ignore_unavailable"
      - "$ref": "#/components/parameters/indices.validate_query-lenient"
      - "$ref": "#/components/parameters/indices.validate_query-rewrite"
      - "$ref": "#/components/parameters/indices.validate_query-q"
      requestBody:
        "$ref": "#/components/requestBodies/indices.validate_query"
      responses:
        '200':
          "$ref": "#/components/responses/indices.validate_query-200"
      x-state: Generally available; Added in 1.3.0
      x-codeSamples:
      - lang: Console
        source: 'GET my-index-000001/_validate/query?q=user.id:kimchy

          '
      - lang: Python
        source: |-
          resp = client.indices.validate_query(
              index="my-index-000001",
              q="user.id:kimchy",
          )
      - lang: JavaScript
        source: |-
          const response = await client.indices.validateQuery({
            index: "my-index-000001",
            q: "user.id:kimchy",
          });
      - lang: Ruby
        source: |-
          response = client.indices.validate_query(
            index: "my-index-000001",
            q: "user.id:kimchy"
          )
      - lang: PHP
        source: |-
          $resp = $client->indices()->validateQuery([
              "index" => "my-index-000001",
              "q" => "user.id:kimchy",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/my-index-000001/_validate/query?q=user.id:kimchy"'
      - lang: Java
        source: |
          client.indices().validateQuery(v -> v
              .index("my-index-000001")
              .q("user.id:kimchy")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_inference/chat_completion/{inference_id}/_stream":
    post:
      tags:
      - inference
      summary: Perform chat completion inference on the service
      description: |-
        The chat completion inference API enables real-time responses for chat completion tasks by delivering answers incrementally, reducing response times during computation.
        It only works with the `chat_completion` task type.

        NOTE: The `chat_completion` task type is only available within the _stream API and only supports streaming.
        The Chat completion inference API and the Stream inference API differ in their response structure and capabilities.
        The Chat completion inference API provides more comprehensive customization options through more fields and function calling support.
        To determine whether a given inference service supports this task type, please see the page for that service.
      operationId: inference-chat-completion-unified
      parameters:
      - in: path
        name: inference_id
        description: The inference Id
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: timeout
        description: Specifies the amount of time to wait for the inference request
          to complete.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/inference._types.RequestChatCompletion"
            examples:
              PostChatCompletionRequestExample1:
                summary: A chat completion task
                description: Run `POST _inference/chat_completion/openai-completion/_stream`
                  to perform a chat completion on the example question with streaming.
                value: |-
                  {
                    "model": "gpt-4o",
                    "messages": [
                        {
                            "role": "user",
                            "content": "What is Elastic?"
                        }
                    ]
                  }
              PostChatCompletionRequestExample2:
                summary: A chat completion task with tool_calls
                description: Run `POST _inference/chat_completion/openai-completion/_stream`
                  to perform a chat completion using an Assistant message with `tool_calls`.
                value: "{\n  \"messages\": [\n      {\n          \"role\": \"assistant\",\n
                  \         \"content\": \"Let's find out what the weather is\",\n
                  \         \"tool_calls\": [ \n              {\n                  \"id\":
                  \"call_KcAjWtAww20AihPHphUh46Gd\",\n                  \"type\":
                  \"function\",\n                  \"function\": {\n                      \"name\":
                  \"get_current_weather\",\n                      \"arguments\": \"{\\\"location\\\":\\\"Boston,
                  MA\\\"}\"\n                  }\n              }\n          ]\n      },\n
                  \     { \n          \"role\": \"tool\",\n          \"content\":
                  \"The weather is cold\",\n          \"tool_call_id\": \"call_KcAjWtAww20AihPHphUh46Gd\"\n
                  \     }\n  ]\n}"
              PostChatCompletionRequestExample3:
                summary: A chat completion task with tools and tool_calls
                description: Run `POST _inference/chat_completion/openai-completion/_stream`
                  to perform a chat completion  using a User message with `tools`
                  and `tool_choice`.
                value: |-
                  {
                    "messages": [
                        {
                            "role": "user",
                            "content": [
                                {
                                    "type": "text",
                                    "text": "What's the price of a scarf?"
                                }
                            ]
                        }
                    ],
                    "tools": [
                        {
                            "type": "function",
                            "function": {
                                "name": "get_current_price",
                                "description": "Get the current price of a item",
                                "parameters": {
                                    "type": "object",
                                    "properties": {
                                        "item": {
                                            "id": "123"
                                        }
                                    }
                                }
                            }
                        }
                    ],
                    "tool_choice": {
                        "type": "function",
                        "function": {
                            "name": "get_current_price"
                        }
                    }
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.StreamResult"
              examples:
                PostChatCompletionResponseExample1:
                  description: A successful response when performing a chat completion
                    task using a User message with `tools` and `tool_choice`.
                  value: "event: message\ndata: {\"chat_completion\":{\"id\":\"chatcmpl-Ae0TWsy2VPnSfBbv5UztnSdYUMFP3\",\"choices\":[{\"delta\":{\"content\":\"\",\"role\":\"assistant\"},\"index\":0}],\"model\":\"gpt-4o-2024-08-06\",\"object\":\"chat.completion.chunk\"}}\n\nevent:
                    message\ndata: {\"chat_completion\":{\"id\":\"chatcmpl-Ae0TWsy2VPnSfBbv5UztnSdYUMFP3\",\"choices\":[{\"delta\":{\"content\":Elastic\"},\"index\":0}],\"model\":\"gpt-4o-2024-08-06\",\"object\":\"chat.completion.chunk\"}}\n\nevent:
                    message\ndata: {\"chat_completion\":{\"id\":\"chatcmpl-Ae0TWsy2VPnSfBbv5UztnSdYUMFP3\",\"choices\":[{\"delta\":{\"content\":\"
                    is\"},\"index\":0}],\"model\":\"gpt-4o-2024-08-06\",\"object\":\"chat.completion.chunk\"}}\n\n(...)\n\nevent:
                    message\ndata: {\"chat_completion\":{\"id\":\"chatcmpl-Ae0TWsy2VPnSfBbv5UztnSdYUMFP3\",\"choices\":[],\"model\":\"gpt-4o-2024-08-06\",\"object\":\"chat.completion.chunk\",\"usage\":{\"completion_tokens\":28,\"prompt_tokens\":16,\"total_tokens\":44}}}
                    \n\nevent: message\ndata: [DONE]"
      x-state: Generally available; Added in 8.18.0
      x-codeSamples:
      - lang: Console
        source: |-
          POST _inference/chat_completion/openai-completion/_stream
          {
            "model": "gpt-4o",
            "messages": [
                {
                    "role": "user",
                    "content": "What is Elastic?"
                }
            ]
          }
      - lang: Python
        source: |-
          resp = client.inference.chat_completion_unified(
              inference_id="openai-completion",
              chat_completion_request={
                  "model": "gpt-4o",
                  "messages": [
                      {
                          "role": "user",
                          "content": "What is Elastic?"
                      }
                  ]
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.inference.chatCompletionUnified({
            inference_id: "openai-completion",
            chat_completion_request: {
              model: "gpt-4o",
              messages: [
                {
                  role: "user",
                  content: "What is Elastic?",
                },
              ],
            },
          });
      - lang: Ruby
        source: |-
          response = client.inference.chat_completion_unified(
            inference_id: "openai-completion",
            body: {
              "model": "gpt-4o",
              "messages": [
                {
                  "role": "user",
                  "content": "What is Elastic?"
                }
              ]
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->inference()->chatCompletionUnified([
              "inference_id" => "openai-completion",
              "body" => [
                  "model" => "gpt-4o",
                  "messages" => array(
                      [
                          "role" => "user",
                          "content" => "What is Elastic?",
                      ],
                  ),
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"model":"gpt-4o","messages":[{"role":"user","content":"What
          is Elastic?"}]}'' "$ELASTICSEARCH_URL/_inference/chat_completion/openai-completion/_stream"'
      - lang: Java
        source: |
          client.inference().chatCompletionUnified(c -> c
              .inferenceId("openai-completion")
              .chatCompletionRequest(ch -> ch
                  .messages(m -> m
                      .content(co -> co
                          .string("What is Elastic?")
                      )
                      .role("user")
                  )
                  .model("gpt-4o")
              )
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_inference/completion/{inference_id}":
    post:
      tags:
      - inference
      summary: Perform completion inference on the service
      description: |-
        Get responses for completion tasks.
        This API works only with the completion task type.

        IMPORTANT: The inference APIs enable you to use certain services, such as built-in machine learning models (ELSER, E5), models uploaded through Eland, Cohere, OpenAI, Azure, Google AI Studio, Google Vertex AI, Anthropic, Watsonx.ai, or Hugging Face. For built-in models and models uploaded through Eland, the inference APIs offer an alternative way to use and manage trained models. However, if you do not plan to use the inference APIs to use these models or if you want to use non-NLP models, use the machine learning trained model APIs.

        This API requires the `monitor_inference` cluster privilege (the built-in `inference_admin` and `inference_user` roles grant this privilege).
      operationId: inference-completion
      parameters:
      - in: path
        name: inference_id
        description: The inference Id
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: timeout
        description: Specifies the amount of time to wait for the inference request
          to complete.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                input:
                  description: |-
                    Inference input.
                    Either a string or an array of strings.
                  oneOf:
                  - type: string
                  - type: array
                    items:
                      type: string
                task_settings:
                  description: Task settings for the individual inference request.
                    These settings are specific to the <task_type> you specified and
                    override the task settings specified when initializing the service.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.TaskSettings"
              required:
              - input
            examples:
              CompletionRequestExample1:
                summary: Completion task
                description: Run `POST _inference/completion/openai_completions` to
                  perform a completion on the example question.
                value: |-
                  {
                    "input": "What is Elastic?"
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/inference._types.CompletionInferenceResult"
              examples:
                CompletionResponseExample1:
                  summary: Completion task
                  description: 'A successful response from `POST _inference/completion/openai_completions`.

                    '
                  value: |-
                    {
                      "completion": [
                        {
                          "result": "Elastic is a company that provides a range of software solutions for search, logging, security, and analytics. Their flagship product is Elasticsearch, an open-source, distributed search engine that allows users to search, analyze, and visualize large volumes of data in real-time. Elastic also offers products such as Kibana, a data visualization tool, and Logstash, a log management and pipeline tool, as well as various other tools and solutions for data analysis and management."
                        }
                      ]
                    }
      x-state: Generally available; Added in 8.11.0
      x-codeSamples:
      - lang: Console
        source: |-
          POST _inference/completion/openai_completions
          {
            "input": "What is Elastic?"
          }
      - lang: Python
        source: |-
          resp = client.inference.completion(
              inference_id="openai_completions",
              input="What is Elastic?",
          )
      - lang: JavaScript
        source: |-
          const response = await client.inference.completion({
            inference_id: "openai_completions",
            input: "What is Elastic?",
          });
      - lang: Ruby
        source: |-
          response = client.inference.completion(
            inference_id: "openai_completions",
            body: {
              "input": "What is Elastic?"
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->inference()->completion([
              "inference_id" => "openai_completions",
              "body" => [
                  "input" => "What is Elastic?",
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"input":"What is Elastic?"}'' "$ELASTICSEARCH_URL/_inference/completion/openai_completions"'
      - lang: Java
        source: |
          client.inference().completion(c -> c
              .inferenceId("openai_completions")
              .input("What is Elastic?")
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_inference/{task_type}/{inference_id}":
    get:
      tags:
      - inference
      summary: 'Get an inference endpoint

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_inference</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_inference/{inference_id}</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_inference/{task_type}/_all</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_inference/{task_type}/{inference_id}</span>\n
        \                     </div>\n                    \n\nThis API requires the
        `monitor_inference` cluster privilege (the built-in `inference_admin` and
        `inference_user` roles grant this privilege)."
      operationId: inference-get
      parameters:
      - "$ref": "#/components/parameters/inference.get-task_type"
      - "$ref": "#/components/parameters/inference.get-inference_id"
      responses:
        '200':
          "$ref": "#/components/responses/inference.get-200"
      x-state: Generally available; Added in 8.11.0
      x-codeSamples:
      - lang: Console
        source: 'GET _inference/sparse_embedding/my-elser-model

          '
      - lang: Python
        source: |-
          resp = client.inference.get(
              task_type="sparse_embedding",
              inference_id="my-elser-model",
          )
      - lang: JavaScript
        source: |-
          const response = await client.inference.get({
            task_type: "sparse_embedding",
            inference_id: "my-elser-model",
          });
      - lang: Ruby
        source: |-
          response = client.inference.get(
            task_type: "sparse_embedding",
            inference_id: "my-elser-model"
          )
      - lang: PHP
        source: |-
          $resp = $client->inference()->get([
              "task_type" => "sparse_embedding",
              "inference_id" => "my-elser-model",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_inference/sparse_embedding/my-elser-model"'
      - lang: Java
        source: |
          client.inference().get(g -> g
              .inferenceId("my-elser-model")
              .taskType(TaskType.SparseEmbedding)
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
    put:
      tags:
      - inference
      summary: 'Create an inference endpoint

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb put\">PUT</span>\n                      <span class=\"operation-path\">/_inference/{inference_id}</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb put\">PUT</span>\n                      <span class=\"operation-path\">/_inference/{task_type}/{inference_id}</span>\n
        \                     </div>\n                    \n\nIMPORTANT: The inference
        APIs enable you to use certain services, such as built-in machine learning
        models (ELSER, E5), models uploaded through Eland, Cohere, OpenAI, Mistral,
        Azure OpenAI, Google AI Studio, Google Vertex AI, Anthropic, Watsonx.ai, or
        Hugging Face.\nFor built-in models and models uploaded through Eland, the
        inference APIs offer an alternative way to use and manage trained models.\nHowever,
        if you do not plan to use the inference APIs to use these models or if you
        want to use non-NLP models, use the machine learning trained model APIs.\n\nThe
        following integrations are available through the inference API. You can find
        the available task types next to the integration name:\n* AI21 (`chat_completion`,
        `completion`)\n* AlibabaCloud AI Search (`completion`, `rerank`, `sparse_embedding`,
        `text_embedding`)\n* Amazon Bedrock (`chat_completion`, `completion`, `text_embedding`)\n*
        Amazon SageMaker (`chat_completion`, `completion`, `rerank`, `sparse_embedding`,
        `text_embedding`)\n* Anthropic (`completion`)\n* Azure AI Studio (`completion`,
        `rerank`, `text_embedding`)\n* Azure OpenAI (`chat_completion`, `completion`,
        `text_embedding`)\n* Cohere (`completion`, `rerank`, `text_embedding`)\n*
        DeepSeek (`chat_completion`, `completion`)\n* Elasticsearch (`rerank`, `sparse_embedding`,
        `text_embedding` - this service is for built-in models and models uploaded
        through Eland)\n* ELSER (`sparse_embedding`)\n* Google AI Studio (`completion`,
        `text_embedding`)\n* Google Vertex AI (`chat_completion`, `completion`, `rerank`,
        `text_embedding`)\n* Groq (`chat_completion`)\n* Hugging Face (`chat_completion`,
        `completion`, `rerank`, `text_embedding`)\n* JinaAI (`embedding`, `rerank`,
        `text_embedding`)\n* Llama (`chat_completion`, `completion`, `text_embedding`)\n*
        Mistral (`chat_completion`, `completion`, `text_embedding`)\n* Nvidia (`chat_completion`,
        `completion`, `text_embedding`, `rerank`)\n* OpenAI (`chat_completion`, `completion`,
        `text_embedding`)\n* OpenShift AI (`chat_completion`, `completion`, `rerank`,
        `text_embedding`)\n* VoyageAI (`rerank`, `text_embedding`)\n* Watsonx (`chat_completion`,
        `completion`, `rerank`, `text_embedding`)\n\n## Required authorization\n\n*
        Cluster privileges: `manage_inference`\n"
      operationId: inference-put
      parameters:
      - "$ref": "#/components/parameters/inference.put-task_type"
      - "$ref": "#/components/parameters/inference.put-inference_id"
      - "$ref": "#/components/parameters/inference.put-timeout"
      requestBody:
        "$ref": "#/components/requestBodies/inference.put"
      responses:
        '200':
          "$ref": "#/components/responses/inference.put-200"
      x-state: Generally available; Added in 8.11.0
      x-codeSamples:
      - lang: Console
        source: |-
          PUT _inference/rerank/my-rerank-model
          {
           "service": "cohere",
           "service_settings": {
             "model_id": "rerank-english-v3.0",
             "api_key": "{{COHERE_API_KEY}}"
           }
          }
      - lang: Python
        source: |-
          resp = client.inference.put(
              task_type="rerank",
              inference_id="my-rerank-model",
              inference_config={
                  "service": "cohere",
                  "service_settings": {
                      "model_id": "rerank-english-v3.0",
                      "api_key": "{{COHERE_API_KEY}}"
                  }
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.inference.put({
            task_type: "rerank",
            inference_id: "my-rerank-model",
            inference_config: {
              service: "cohere",
              service_settings: {
                model_id: "rerank-english-v3.0",
                api_key: "{{COHERE_API_KEY}}",
              },
            },
          });
      - lang: Ruby
        source: |-
          response = client.inference.put(
            task_type: "rerank",
            inference_id: "my-rerank-model",
            body: {
              "service": "cohere",
              "service_settings": {
                "model_id": "rerank-english-v3.0",
                "api_key": "{{COHERE_API_KEY}}"
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->inference()->put([
              "task_type" => "rerank",
              "inference_id" => "my-rerank-model",
              "body" => [
                  "service" => "cohere",
                  "service_settings" => [
                      "model_id" => "rerank-english-v3.0",
                      "api_key" => "{{COHERE_API_KEY}}",
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"service":"cohere","service_settings":{"model_id":"rerank-english-v3.0","api_key":"{{COHERE_API_KEY}}"}}''
          "$ELASTICSEARCH_URL/_inference/rerank/my-rerank-model"'
      - lang: Java
        source: |
          client.inference().put(p -> p
              .inferenceId("my-rerank-model")
              .taskType(TaskType.Rerank)
              .inferenceConfig(i -> i
                  .service("cohere")
                  .serviceSettings(JsonData.fromJson("{\"model_id\":\"rerank-english-v3.0\",\"api_key\":\"{{COHERE_API_KEY}}\"}"))
              )
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
    post:
      tags:
      - inference
      summary: 'Perform inference on the service

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_inference/{inference_id}</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_inference/{task_type}/{inference_id}</span>\n
        \                     </div>\n                    \n\nThis API enables you
        to use machine learning models to perform specific tasks on data that you
        provide as an input.\nIt returns a response with the results of the tasks.\nThe
        inference endpoint you use can perform one specific task that has been defined
        when the endpoint was created with the create inference API.\n\nFor details
        about using this API with a service, such as Amazon Bedrock, Anthropic, or
        HuggingFace, refer to the service-specific documentation.\n\n> info\n> The
        inference APIs enable you to use certain services, such as built-in machine
        learning models (ELSER, E5), models uploaded through Eland, Cohere, OpenAI,
        Azure, Google AI Studio, Google Vertex AI, Anthropic, Watsonx.ai, or Hugging
        Face. For built-in models and models uploaded through Eland, the inference
        APIs offer an alternative way to use and manage trained models. However, if
        you do not plan to use the inference APIs to use these models or if you want
        to use non-NLP models, use the machine learning trained model APIs.\n\n##
        Required authorization\n\n* Cluster privileges: `monitor_inference`\n"
      operationId: inference-inference
      parameters:
      - "$ref": "#/components/parameters/inference.inference-task_type"
      - "$ref": "#/components/parameters/inference.inference-inference_id"
      - "$ref": "#/components/parameters/inference.inference-timeout"
      requestBody:
        "$ref": "#/components/requestBodies/inference.inference"
      responses:
        '200':
          "$ref": "#/components/responses/inference.inference-200"
      x-state: Generally available; Added in 8.11.0
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
    delete:
      tags:
      - inference
      summary: 'Delete an inference endpoint

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb delete\">DELETE</span>\n                      <span
        class=\"operation-path\">/_inference/{inference_id}</span>\n                      </div>\n
        \                   <div>\n                      <span class=\"operation-verb
        delete\">DELETE</span>\n                      <span class=\"operation-path\">/_inference/{task_type}/{inference_id}</span>\n
        \                     </div>\n                    \n\nThis API requires the
        manage_inference cluster privilege (the built-in `inference_admin` role grants
        this privilege)."
      operationId: inference-delete
      parameters:
      - "$ref": "#/components/parameters/inference.delete-task_type"
      - "$ref": "#/components/parameters/inference.delete-inference_id"
      - "$ref": "#/components/parameters/inference.delete-dry_run"
      - "$ref": "#/components/parameters/inference.delete-force"
      responses:
        '200':
          "$ref": "#/components/responses/inference.delete-200"
      x-state: Generally available; Added in 8.11.0
      x-codeSamples:
      - lang: Console
        source: 'DELETE /_inference/sparse_embedding/my-elser-model

          '
      - lang: Python
        source: |-
          resp = client.inference.delete(
              task_type="sparse_embedding",
              inference_id="my-elser-model",
          )
      - lang: JavaScript
        source: |-
          const response = await client.inference.delete({
            task_type: "sparse_embedding",
            inference_id: "my-elser-model",
          });
      - lang: Ruby
        source: |-
          response = client.inference.delete(
            task_type: "sparse_embedding",
            inference_id: "my-elser-model"
          )
      - lang: PHP
        source: |-
          $resp = $client->inference()->delete([
              "task_type" => "sparse_embedding",
              "inference_id" => "my-elser-model",
          ]);
      - lang: curl
        source: 'curl -X DELETE -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_inference/sparse_embedding/my-elser-model"'
      - lang: Java
        source: |
          client.inference().delete(d -> d
              .inferenceId("my-elser-model")
              .taskType(TaskType.SparseEmbedding)
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_inference/embedding/{inference_id}":
    post:
      tags:
      - inference
      summary: Perform dense embedding inference on the service
      operationId: inference-embedding
      parameters:
      - in: path
        name: inference_id
        description: The inference Id
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: timeout
        description: Specifies the amount of time to wait for the inference request
          to complete.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/inference._types.RequestEmbedding"
            examples:
              EmbeddingRequestExample1:
                summary: Multimodal embedding task
                description: Run `POST _inference/embedding/my-multimodal-endpoint`
                  to generate embeddings from the example text and image
                value: |-
                  {
                    "input": [
                        {
                            "content": {
                                "type": "image",
                                "format": "base64",
                                "value": "data:image/jpg;base64,..."
                            }
                        },
                        {
                            "content": {
                                "type": "text",
                                "value": "Some text to create an embedding"
                            }
                        }
                    ]
                  }
              EmbeddingRequestExample2:
                summary: Text-only embedding task
                description: Run `POST _inference/embedding/my-text-only-endpoint`
                  to generate embeddings from the example text
                value: |-
                  {
                    "input": ["The first text", "The second text"]
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/inference._types.EmbeddingInferenceResult"
              examples:
                EmbeddingResponseExample1:
                  summary: Multimodal embedding task
                  description: 'An abbreviated response from `POST _inference/embedding/my-multimodal-endpoint`.

                    '
                  value: |-
                    {
                      "embeddings": [
                        {
                          "embedding": [
                            -0.0189209,
                            -0.04174805,
                            0.00854492,
                            0.01556396,
                            0.01928711,
                            -0.00616455,
                            -0.00460815,
                            0.01477051,
                            -0.00656128,
                            0.05419922
                          ]
                        },
                        {
                          "embedding": [
                            -0.01379395,
                            -0.02368164,
                            0.01068115,
                            0.0279541,
                            0.01043701,
                            -7.7057E-4,
                            0.04150391,
                            0.00836182,
                            -0.01135254,
                            0.0246582
                          ]
                        }
                      ]
                    }
                EmbeddingResponseExample2:
                  summary: Text-only embedding task
                  description: 'An abbreviated response from `POST _inference/embedding/my-text-only-endpoint`.

                    '
                  value: |-
                    {
                      "embeddings": [
                        {
                          "embedding": [
                            0.00854492,
                            -0.00616455,
                            -0.0189209,
                            0.01556396,
                            -0.00460815,
                            0.01477051,
                            -0.04174805,
                            0.01928711,
                            -0.00656128,
                            0.05419922
                          ]
                        },
                        {
                          "embedding": [
                            -0.01135254,
                            0.0279541,
                            -0.02368164,
                            0.01068115,
                            0.01043701,
                            0.04150391,
                            0.00836182,
                            -7.7057E-4,
                            -0.01379395,
                            0.0246582
                          ]
                        }
                      ]
                    }
      x-state: Technical preview; Added in 9.4.0
      x-codeSamples:
      - lang: Console
        source: |-
          POST _inference/embedding/my-multimodal-endpoint
          {
            "input": [
                {
                    "content": {
                        "type": "image",
                        "format": "base64",
                        "value": "data:image/jpg;base64,..."
                    }
                },
                {
                    "content": {
                        "type": "text",
                        "value": "Some text to create an embedding"
                    }
                }
            ]
          }
      - lang: Python
        source: |-
          resp = client.inference.embedding(
              inference_id="my-multimodal-endpoint",
              embedding={
                  "input": [
                      {
                          "content": {
                              "type": "image",
                              "format": "base64",
                              "value": "data:image/jpg;base64,..."
                          }
                      },
                      {
                          "content": {
                              "type": "text",
                              "value": "Some text to create an embedding"
                          }
                      }
                  ]
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.inference.embedding({
            inference_id: "my-multimodal-endpoint",
            embedding: {
              input: [
                {
                  content: {
                    type: "image",
                    format: "base64",
                    value: "data:image/jpg;base64,...",
                  },
                },
                {
                  content: {
                    type: "text",
                    value: "Some text to create an embedding",
                  },
                },
              ],
            },
          });
      - lang: Ruby
        source: |-
          response = client.inference.embedding(
            inference_id: "my-multimodal-endpoint",
            body: {
              "input": [
                {
                  "content": {
                    "type": "image",
                    "format": "base64",
                    "value": "data:image/jpg;base64,..."
                  }
                },
                {
                  "content": {
                    "type": "text",
                    "value": "Some text to create an embedding"
                  }
                }
              ]
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->inference()->embedding([
              "inference_id" => "my-multimodal-endpoint",
              "body" => [
                  "input" => array(
                      [
                          "content" => [
                              "type" => "image",
                              "format" => "base64",
                              "value" => "data:image/jpg;base64,...",
                          ],
                      ],
                      [
                          "content" => [
                              "type" => "text",
                              "value" => "Some text to create an embedding",
                          ],
                      ],
                  ),
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"input":[{"content":{"type":"image","format":"base64","value":"data:image/jpg;base64,..."}},{"content":{"type":"text","value":"Some
          text to create an embedding"}}]}'' "$ELASTICSEARCH_URL/_inference/embedding/my-multimodal-endpoint"'
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_inference/{task_type}/{ai21_inference_id}":
    put:
      tags:
      - inference
      summary: Create a AI21 inference endpoint
      description: |
        Create an inference endpoint to perform an inference task with the `ai21` service.

        ## Required authorization

        * Cluster privileges: `manage_inference`
      operationId: inference-put-ai21
      parameters:
      - in: path
        name: task_type
        description: The type of the inference task that the model will perform.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/inference._types.Ai21TaskType"
        style: simple
      - in: path
        name: ai21_inference_id
        description: The unique identifier of the inference endpoint.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: timeout
        description: Specifies the amount of time to wait for the inference endpoint
          to be created.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                service:
                  description: The type of service supported for the specified task
                    type. In this case, `ai21`.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.Ai21ServiceType"
                service_settings:
                  description: Settings used to install the inference model. These
                    settings are specific to the `ai21` service.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.Ai21ServiceSettings"
              required:
              - service
              - service_settings
            examples:
              PutAi21RequestExample1:
                description: Run `PUT _inference/completion/ai21-completion` to create
                  an AI21 inference endpoint that performs a `completion` task.
                value: "{\n  \"service\": \"ai21\",\n  \"service_settings\": {\n    \"api_key\":
                  \"ai21-api-key\",\n    \"model_id\": \"jamba-large\" \n  }\n}"
              PutAi21RequestExample2:
                description: Run `PUT _inference/chat-completion/ai21-chat-completion`
                  to create a AI21 inference endpoint that performs a `chat_completion`
                  task.
                value: "{\n  \"service\": \"ai21\",\n  \"service_settings\": {\n    \"api_key\":
                  \"ai21-api-key\",\n    \"model_id\": \"jamba-mini\" \n  }\n}"
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/inference._types.InferenceEndpointInfoAi21"
      x-state: Generally available; Added in 9.2.0
      x-codeSamples:
      - lang: Console
        source: "PUT _inference/completion/ai21-completion\n{\n  \"service\": \"ai21\",\n
          \ \"service_settings\": {\n    \"api_key\": \"ai21-api-key\",\n    \"model_id\":
          \"jamba-large\" \n  }\n}"
      - lang: Python
        source: |-
          resp = client.inference.put(
              task_type="completion",
              inference_id="ai21-completion",
              inference_config={
                  "service": "ai21",
                  "service_settings": {
                      "api_key": "ai21-api-key",
                      "model_id": "jamba-large"
                  }
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.inference.put({
            task_type: "completion",
            inference_id: "ai21-completion",
            inference_config: {
              service: "ai21",
              service_settings: {
                api_key: "ai21-api-key",
                model_id: "jamba-large",
              },
            },
          });
      - lang: Ruby
        source: |-
          response = client.inference.put(
            task_type: "completion",
            inference_id: "ai21-completion",
            body: {
              "service": "ai21",
              "service_settings": {
                "api_key": "ai21-api-key",
                "model_id": "jamba-large"
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->inference()->put([
              "task_type" => "completion",
              "inference_id" => "ai21-completion",
              "body" => [
                  "service" => "ai21",
                  "service_settings" => [
                      "api_key" => "ai21-api-key",
                      "model_id" => "jamba-large",
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"service":"ai21","service_settings":{"api_key":"ai21-api-key","model_id":"jamba-large"}}''
          "$ELASTICSEARCH_URL/_inference/completion/ai21-completion"'
      - lang: Java
        source: |
          client.inference().put(p -> p
              .inferenceId("ai21-completion")
              .taskType(TaskType.Completion)
              .inferenceConfig(i -> i
                  .service("ai21")
                  .serviceSettings(JsonData.fromJson("{\"api_key\":\"ai21-api-key\",\"model_id\":\"jamba-large\"}"))
              )
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_inference/{task_type}/{alibabacloud_inference_id}":
    put:
      tags:
      - inference
      summary: Create an AlibabaCloud AI Search inference endpoint
      description: |
        Create an inference endpoint to perform an inference task with the `alibabacloud-ai-search` service.

        ## Required authorization

        * Cluster privileges: `manage_inference`
      operationId: inference-put-alibabacloud
      parameters:
      - in: path
        name: task_type
        description: The type of the inference task that the model will perform.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/inference._types.AlibabaCloudTaskType"
        style: simple
      - in: path
        name: alibabacloud_inference_id
        description: The unique identifier of the inference endpoint.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: timeout
        description: Specifies the amount of time to wait for the inference endpoint
          to be created.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                chunking_settings:
                  externalDocs:
                    url: https://www.elastic.co/docs/explore-analyze/elastic-inference/inference-api#infer-chunking-config
                  description: |-
                    The chunking configuration object.
                    Applies only to the `sparse_embedding` or `text_embedding` task types.
                    Not applicable to the `rerank` or `completion` task types.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.InferenceChunkingSettings"
                service:
                  description: The type of service supported for the specified task
                    type. In this case, `alibabacloud-ai-search`.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.AlibabaCloudServiceType"
                service_settings:
                  description: Settings used to install the inference model. These
                    settings are specific to the `alibabacloud-ai-search` service.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.AlibabaCloudServiceSettings"
                task_settings:
                  description: |-
                    Settings to configure the inference task.
                    These settings are specific to the task type you specified.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.AlibabaCloudTaskSettings"
              required:
              - service
              - service_settings
            examples:
              PutAlibabaCloudRequestExample1:
                summary: A completion task
                description: Run `PUT _inference/completion/alibabacloud_ai_search_completion`
                  to create an inference endpoint that performs a completion task.
                value: |-
                  {
                      "service": "alibabacloud-ai-search",
                      "service_settings": {
                          "host" : "default-j01.platform-cn-shanghai.opensearch.aliyuncs.com",
                          "api_key": "AlibabaCloud-API-Key",
                          "service_id": "ops-qwen-turbo",
                          "workspace" : "default"
                      }
                  }
              PutAlibabaCloudRequestExample2:
                summary: A rerank task
                description: Run `PUT _inference/rerank/alibabacloud_ai_search_rerank`
                  to create an inference endpoint that performs a rerank task.
                value: |-
                  {
                      "service": "alibabacloud-ai-search",
                      "service_settings": {
                          "api_key": "AlibabaCloud-API-Key",
                          "service_id": "ops-bge-reranker-larger",
                          "host": "default-j01.platform-cn-shanghai.opensearch.aliyuncs.com",
                          "workspace": "default"
                      }
                  }
              PutAlibabaCloudRequestExample3:
                summary: A sparse embedding task
                description: Run `PUT _inference/sparse_embedding/alibabacloud_ai_search_sparse`
                  to create an inference endpoint that performs perform a sparse embedding
                  task.
                value: |-
                  {
                      "service": "alibabacloud-ai-search",
                      "service_settings": {
                          "api_key": "AlibabaCloud-API-Key",
                          "service_id": "ops-text-sparse-embedding-001",
                          "host": "default-j01.platform-cn-shanghai.opensearch.aliyuncs.com",
                          "workspace": "default"
                      }
                  }
              PutAlibabaCloudRequestExample4:
                summary: A text embedding task
                description: Run `PUT _inference/text_embedding/alibabacloud_ai_search_embeddings`
                  to create an inference endpoint that performs a text embedding task.
                value: |-
                  {
                      "service": "alibabacloud-ai-search",
                      "service_settings": {
                          "api_key": "AlibabaCloud-API-Key",
                          "service_id": "ops-text-embedding-001",
                          "host": "default-j01.platform-cn-shanghai.opensearch.aliyuncs.com",
                          "workspace": "default"
                      }
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/inference._types.InferenceEndpointInfoAlibabaCloudAI"
      x-state: Generally available; Added in 8.16.0
      x-codeSamples:
      - lang: Console
        source: |-
          PUT _inference/completion/alibabacloud_ai_search_completion
          {
              "service": "alibabacloud-ai-search",
              "service_settings": {
                  "host" : "default-j01.platform-cn-shanghai.opensearch.aliyuncs.com",
                  "api_key": "AlibabaCloud-API-Key",
                  "service_id": "ops-qwen-turbo",
                  "workspace" : "default"
              }
          }
      - lang: Python
        source: |-
          resp = client.inference.put(
              task_type="completion",
              inference_id="alibabacloud_ai_search_completion",
              inference_config={
                  "service": "alibabacloud-ai-search",
                  "service_settings": {
                      "host": "default-j01.platform-cn-shanghai.opensearch.aliyuncs.com",
                      "api_key": "AlibabaCloud-API-Key",
                      "service_id": "ops-qwen-turbo",
                      "workspace": "default"
                  }
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.inference.put({
            task_type: "completion",
            inference_id: "alibabacloud_ai_search_completion",
            inference_config: {
              service: "alibabacloud-ai-search",
              service_settings: {
                host: "default-j01.platform-cn-shanghai.opensearch.aliyuncs.com",
                api_key: "AlibabaCloud-API-Key",
                service_id: "ops-qwen-turbo",
                workspace: "default",
              },
            },
          });
      - lang: Ruby
        source: |-
          response = client.inference.put(
            task_type: "completion",
            inference_id: "alibabacloud_ai_search_completion",
            body: {
              "service": "alibabacloud-ai-search",
              "service_settings": {
                "host": "default-j01.platform-cn-shanghai.opensearch.aliyuncs.com",
                "api_key": "AlibabaCloud-API-Key",
                "service_id": "ops-qwen-turbo",
                "workspace": "default"
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->inference()->put([
              "task_type" => "completion",
              "inference_id" => "alibabacloud_ai_search_completion",
              "body" => [
                  "service" => "alibabacloud-ai-search",
                  "service_settings" => [
                      "host" => "default-j01.platform-cn-shanghai.opensearch.aliyuncs.com",
                      "api_key" => "AlibabaCloud-API-Key",
                      "service_id" => "ops-qwen-turbo",
                      "workspace" => "default",
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"service":"alibabacloud-ai-search","service_settings":{"host":"default-j01.platform-cn-shanghai.opensearch.aliyuncs.com","api_key":"AlibabaCloud-API-Key","service_id":"ops-qwen-turbo","workspace":"default"}}''
          "$ELASTICSEARCH_URL/_inference/completion/alibabacloud_ai_search_completion"'
      - lang: Java
        source: |
          client.inference().put(p -> p
              .inferenceId("alibabacloud_ai_search_completion")
              .taskType(TaskType.Completion)
              .inferenceConfig(i -> i
                  .service("alibabacloud-ai-search")
                  .serviceSettings(JsonData.fromJson("{\"host\":\"default-j01.platform-cn-shanghai.opensearch.aliyuncs.com\",\"api_key\":\"AlibabaCloud-API-Key\",\"service_id\":\"ops-qwen-turbo\",\"workspace\":\"default\"}"))
              )
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_inference/{task_type}/{amazonbedrock_inference_id}":
    put:
      tags:
      - inference
      summary: Create an Amazon Bedrock inference endpoint
      description: |
        Create an inference endpoint to perform an inference task with the `amazonbedrock` service.

        >info
        > You need to provide the access and secret keys only once, during the inference model creation. The get inference API does not retrieve your access or secret keys. After creating the inference model, you cannot change the associated key pairs. If you want to use a different access and secret key pair, delete the inference model and recreate it with the same name and the updated keys.

        ## Required authorization

        * Cluster privileges: `manage_inference`
      operationId: inference-put-amazonbedrock
      parameters:
      - in: path
        name: task_type
        description: The type of the inference task that the model will perform.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/inference._types.AmazonBedrockTaskType"
        style: simple
      - in: path
        name: amazonbedrock_inference_id
        description: The unique identifier of the inference endpoint.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: timeout
        description: Specifies the amount of time to wait for the inference endpoint
          to be created.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                chunking_settings:
                  externalDocs:
                    url: https://www.elastic.co/docs/explore-analyze/elastic-inference/inference-api#infer-chunking-config
                  description: |-
                    The chunking configuration object.
                    Applies only to the `text_embedding` task type.
                    Not applicable to the `chat_completion` and `completion` task types.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.InferenceChunkingSettings"
                service:
                  description: The type of service supported for the specified task
                    type. In this case, `amazonbedrock`.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.AmazonBedrockServiceType"
                service_settings:
                  description: Settings used to install the inference model. These
                    settings are specific to the `amazonbedrock` service.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.AmazonBedrockServiceSettings"
                task_settings:
                  description: |-
                    Settings to configure the inference task.
                    These settings are specific to the task type you specified.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.AmazonBedrockTaskSettings"
              required:
              - service
              - service_settings
            examples:
              PutAmazonBedrockRequestExample1:
                summary: A text embedding task
                description: Run `PUT _inference/text_embedding/amazon_bedrock_embeddings`
                  to create an inference endpoint that performs a text embedding task.
                value: |-
                  {
                      "service": "amazonbedrock",
                      "service_settings": {
                          "access_key": "AWS-access-key",
                          "secret_key": "AWS-secret-key",
                          "region": "us-east-1",
                          "provider": "amazontitan",
                          "model": "amazon.titan-embed-text-v2:0"
                      }
                  }
              PutAmazonBedrockRequestExample2:
                summary: A completion task
                description: Run `PUT _inference/completion/amazon_bedrock_completion`
                  to create an inference endpoint to perform a completion task.
                value: |-
                  {
                      "service": "amazonbedrock",
                      "service_settings": {
                          "access_key": "AWS-access-key",
                          "secret_key": "AWS-secret-key",
                          "region": "us-east-1",
                          "provider": "amazontitan",
                          "model": "amazon.titan-text-premier-v1:0"
                      }
                  }
              PutAmazonBedrockRequestExample3:
                summary: A chat completion task
                description: Run `PUT _inference/chat_completion/amazon_bedrock_chat_completion`
                  to create an inference endpoint to perform a chat completion task.
                value: |-
                  {
                      "service": "amazonbedrock",
                      "service_settings": {
                          "access_key": "AWS-access-key",
                          "secret_key": "AWS-secret-key",
                          "region": "us-east-1",
                          "provider": "amazontitan",
                          "model": "amazon.titan-text-premier-v1:0"
                      }
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/inference._types.InferenceEndpointInfoAmazonBedrock"
      x-state: Generally available; Added in 8.12.0
      x-codeSamples:
      - lang: Console
        source: |-
          PUT _inference/text_embedding/amazon_bedrock_embeddings
          {
              "service": "amazonbedrock",
              "service_settings": {
                  "access_key": "AWS-access-key",
                  "secret_key": "AWS-secret-key",
                  "region": "us-east-1",
                  "provider": "amazontitan",
                  "model": "amazon.titan-embed-text-v2:0"
              }
          }
      - lang: Python
        source: |-
          resp = client.inference.put(
              task_type="text_embedding",
              inference_id="amazon_bedrock_embeddings",
              inference_config={
                  "service": "amazonbedrock",
                  "service_settings": {
                      "access_key": "AWS-access-key",
                      "secret_key": "AWS-secret-key",
                      "region": "us-east-1",
                      "provider": "amazontitan",
                      "model": "amazon.titan-embed-text-v2:0"
                  }
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.inference.put({
            task_type: "text_embedding",
            inference_id: "amazon_bedrock_embeddings",
            inference_config: {
              service: "amazonbedrock",
              service_settings: {
                access_key: "AWS-access-key",
                secret_key: "AWS-secret-key",
                region: "us-east-1",
                provider: "amazontitan",
                model: "amazon.titan-embed-text-v2:0",
              },
            },
          });
      - lang: Ruby
        source: |-
          response = client.inference.put(
            task_type: "text_embedding",
            inference_id: "amazon_bedrock_embeddings",
            body: {
              "service": "amazonbedrock",
              "service_settings": {
                "access_key": "AWS-access-key",
                "secret_key": "AWS-secret-key",
                "region": "us-east-1",
                "provider": "amazontitan",
                "model": "amazon.titan-embed-text-v2:0"
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->inference()->put([
              "task_type" => "text_embedding",
              "inference_id" => "amazon_bedrock_embeddings",
              "body" => [
                  "service" => "amazonbedrock",
                  "service_settings" => [
                      "access_key" => "AWS-access-key",
                      "secret_key" => "AWS-secret-key",
                      "region" => "us-east-1",
                      "provider" => "amazontitan",
                      "model" => "amazon.titan-embed-text-v2:0",
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"service":"amazonbedrock","service_settings":{"access_key":"AWS-access-key","secret_key":"AWS-secret-key","region":"us-east-1","provider":"amazontitan","model":"amazon.titan-embed-text-v2:0"}}''
          "$ELASTICSEARCH_URL/_inference/text_embedding/amazon_bedrock_embeddings"'
      - lang: Java
        source: |
          client.inference().put(p -> p
              .inferenceId("amazon_bedrock_embeddings")
              .taskType(TaskType.TextEmbedding)
              .inferenceConfig(i -> i
                  .service("amazonbedrock")
                  .serviceSettings(JsonData.fromJson("{\"access_key\":\"AWS-access-key\",\"secret_key\":\"AWS-secret-key\",\"region\":\"us-east-1\",\"provider\":\"amazontitan\",\"model\":\"amazon.titan-embed-text-v2:0\"}"))
              )
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_inference/{task_type}/{amazonsagemaker_inference_id}":
    put:
      tags:
      - inference
      summary: Create an Amazon SageMaker inference endpoint
      description: |
        Create an inference endpoint to perform an inference task with the `amazon_sagemaker` service.

        ## Required authorization

        * Cluster privileges: `manage_inference`
      operationId: inference-put-amazonsagemaker
      parameters:
      - in: path
        name: task_type
        description: The type of the inference task that the model will perform.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/inference._types.TaskTypeAmazonSageMaker"
        style: simple
      - in: path
        name: amazonsagemaker_inference_id
        description: The unique identifier of the inference endpoint.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: timeout
        description: Specifies the amount of time to wait for the inference endpoint
          to be created.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                chunking_settings:
                  externalDocs:
                    url: https://www.elastic.co/docs/explore-analyze/elastic-inference/inference-api#infer-chunking-config
                  description: |-
                    The chunking configuration object.
                    Applies only to the `sparse_embedding` or `text_embedding` task types.
                    Not applicable to the `rerank`, `completion`, or `chat_completion` task types.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.InferenceChunkingSettings"
                service:
                  description: The type of service supported for the specified task
                    type. In this case, `amazon_sagemaker`.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.AmazonSageMakerServiceType"
                service_settings:
                  description: |-
                    Settings used to install the inference model.
                    These settings are specific to the `amazon_sagemaker` service and `service_settings.api` you specified.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.AmazonSageMakerServiceSettings"
                task_settings:
                  description: |-
                    Settings to configure the inference task.
                    These settings are specific to the task type and `service_settings.api` you specified.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.AmazonSageMakerTaskSettings"
              required:
              - service
              - service_settings
            examples:
              PutAmazonSageMakerRequestExample1:
                summary: A text embedding task
                description: Run `PUT _inference/text_embedding/amazon_sagemaker_embeddings`
                  to create an inference endpoint that performs a text embedding task.
                value: |-
                  {
                      "service": "amazon_sagemaker",
                      "service_settings": {
                          "access_key": "AWS-access-key",
                          "secret_key": "AWS-secret-key",
                          "region": "us-east-1",
                          "api": "elastic",
                          "endpoint_name": "my-endpoint",
                          "dimensions": 384,
                          "element_type": "float"
                      }
                  }
              PutAmazonSageMakerRequestExample2:
                summary: A completion task
                description: Run `PUT _inference/completion/amazon_sagemaker_completion`
                  to create an inference endpoint that performs a completion task.
                value: |-
                  {
                      "service": "amazon_sagemaker",
                      "service_settings": {
                          "access_key": "AWS-access-key",
                          "secret_key": "AWS-secret-key",
                          "region": "us-east-1",
                          "api": "elastic",
                          "endpoint_name": "my-endpoint"
                      }
                  }
              PutAmazonSageMakerRequestExample3:
                summary: A chat completion task
                description: Run `PUT _inference/chat_completion/amazon_sagemaker_chat_completion`
                  to create an inference endpoint that performs a chat completion
                  task.
                value: |-
                  {
                      "service": "amazon_sagemaker",
                      "service_settings": {
                          "access_key": "AWS-access-key",
                          "secret_key": "AWS-secret-key",
                          "region": "us-east-1",
                          "api": "elastic",
                          "endpoint_name": "my-endpoint"
                      }
                  }
              PutAmazonSageMakerRequestExample4:
                summary: A sparse embedding task
                description: Run `PUT _inference/sparse_embedding/amazon_sagemaker_sparse_embedding`
                  to create an inference endpoint that performs a sparse embedding
                  task.
                value: |-
                  {
                      "service": "amazon_sagemaker",
                      "service_settings": {
                          "access_key": "AWS-access-key",
                          "secret_key": "AWS-secret-key",
                          "region": "us-east-1",
                          "api": "elastic",
                          "endpoint_name": "my-endpoint"
                      }
                  }
              PutAmazonSageMakerRequestExample5:
                summary: A rerank task
                description: Run `PUT _inference/rerank/amazon_sagemaker_rerank` to
                  create an inference endpoint that performs a rerank task.
                value: |-
                  {
                      "service": "amazon_sagemaker",
                      "service_settings": {
                          "access_key": "AWS-access-key",
                          "secret_key": "AWS-secret-key",
                          "region": "us-east-1",
                          "api": "elastic",
                          "endpoint_name": "my-endpoint"
                      }
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/inference._types.InferenceEndpointInfoAmazonSageMaker"
      x-state: Generally available; Added in 9.1.0
      x-codeSamples:
      - lang: Console
        source: |-
          PUT _inference/text_embedding/amazon_sagemaker_embeddings
          {
              "service": "amazon_sagemaker",
              "service_settings": {
                  "access_key": "AWS-access-key",
                  "secret_key": "AWS-secret-key",
                  "region": "us-east-1",
                  "api": "elastic",
                  "endpoint_name": "my-endpoint",
                  "dimensions": 384,
                  "element_type": "float"
              }
          }
      - lang: Python
        source: |-
          resp = client.inference.put(
              task_type="text_embedding",
              inference_id="amazon_sagemaker_embeddings",
              inference_config={
                  "service": "amazon_sagemaker",
                  "service_settings": {
                      "access_key": "AWS-access-key",
                      "secret_key": "AWS-secret-key",
                      "region": "us-east-1",
                      "api": "elastic",
                      "endpoint_name": "my-endpoint",
                      "dimensions": 384,
                      "element_type": "float"
                  }
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.inference.put({
            task_type: "text_embedding",
            inference_id: "amazon_sagemaker_embeddings",
            inference_config: {
              service: "amazon_sagemaker",
              service_settings: {
                access_key: "AWS-access-key",
                secret_key: "AWS-secret-key",
                region: "us-east-1",
                api: "elastic",
                endpoint_name: "my-endpoint",
                dimensions: 384,
                element_type: "float",
              },
            },
          });
      - lang: Ruby
        source: |-
          response = client.inference.put(
            task_type: "text_embedding",
            inference_id: "amazon_sagemaker_embeddings",
            body: {
              "service": "amazon_sagemaker",
              "service_settings": {
                "access_key": "AWS-access-key",
                "secret_key": "AWS-secret-key",
                "region": "us-east-1",
                "api": "elastic",
                "endpoint_name": "my-endpoint",
                "dimensions": 384,
                "element_type": "float"
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->inference()->put([
              "task_type" => "text_embedding",
              "inference_id" => "amazon_sagemaker_embeddings",
              "body" => [
                  "service" => "amazon_sagemaker",
                  "service_settings" => [
                      "access_key" => "AWS-access-key",
                      "secret_key" => "AWS-secret-key",
                      "region" => "us-east-1",
                      "api" => "elastic",
                      "endpoint_name" => "my-endpoint",
                      "dimensions" => 384,
                      "element_type" => "float",
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"service":"amazon_sagemaker","service_settings":{"access_key":"AWS-access-key","secret_key":"AWS-secret-key","region":"us-east-1","api":"elastic","endpoint_name":"my-endpoint","dimensions":384,"element_type":"float"}}''
          "$ELASTICSEARCH_URL/_inference/text_embedding/amazon_sagemaker_embeddings"'
      - lang: Java
        source: |
          client.inference().put(p -> p
              .inferenceId("amazon_sagemaker_embeddings")
              .taskType(TaskType.TextEmbedding)
              .inferenceConfig(i -> i
                  .service("amazon_sagemaker")
                  .serviceSettings(JsonData.fromJson("{\"access_key\":\"AWS-access-key\",\"secret_key\":\"AWS-secret-key\",\"region\":\"us-east-1\",\"api\":\"elastic\",\"endpoint_name\":\"my-endpoint\",\"dimensions\":384,\"element_type\":\"float\"}"))
              )
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_inference/{task_type}/{anthropic_inference_id}":
    put:
      tags:
      - inference
      summary: Create an Anthropic inference endpoint
      description: |
        Create an inference endpoint to perform an inference task with the `anthropic` service.

        ## Required authorization

        * Cluster privileges: `manage_inference`
      operationId: inference-put-anthropic
      parameters:
      - in: path
        name: task_type
        description: |-
          The task type.
          The only valid task type for the model to perform is `completion`.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/inference._types.AnthropicTaskType"
        style: simple
      - in: path
        name: anthropic_inference_id
        description: The unique identifier of the inference endpoint.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: timeout
        description: Specifies the amount of time to wait for the inference endpoint
          to be created.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                service:
                  description: The type of service supported for the specified task
                    type. In this case, `anthropic`.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.AnthropicServiceType"
                service_settings:
                  description: Settings used to install the inference model. These
                    settings are specific to the `anthropic` service.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.AnthropicServiceSettings"
                task_settings:
                  description: |-
                    Settings to configure the inference task.
                    These settings are specific to the task type you specified.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.AnthropicTaskSettings"
              required:
              - service
              - service_settings
            examples:
              PutAnthropicRequestExample1:
                description: Run `PUT _inference/completion/anthropic_completion`
                  to create an inference endpoint that performs a completion task.
                value: |-
                  {
                      "service": "anthropic",
                      "service_settings": {
                          "api_key": "Anthropic-Api-Key",
                          "model_id": "Model-ID"
                      },
                      "task_settings": {
                          "max_tokens": 1024
                      }
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/inference._types.InferenceEndpointInfoAnthropic"
      x-state: Generally available; Added in 8.16.0
      x-codeSamples:
      - lang: Console
        source: |-
          PUT _inference/completion/anthropic_completion
          {
              "service": "anthropic",
              "service_settings": {
                  "api_key": "Anthropic-Api-Key",
                  "model_id": "Model-ID"
              },
              "task_settings": {
                  "max_tokens": 1024
              }
          }
      - lang: Python
        source: |-
          resp = client.inference.put(
              task_type="completion",
              inference_id="anthropic_completion",
              inference_config={
                  "service": "anthropic",
                  "service_settings": {
                      "api_key": "Anthropic-Api-Key",
                      "model_id": "Model-ID"
                  },
                  "task_settings": {
                      "max_tokens": 1024
                  }
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.inference.put({
            task_type: "completion",
            inference_id: "anthropic_completion",
            inference_config: {
              service: "anthropic",
              service_settings: {
                api_key: "Anthropic-Api-Key",
                model_id: "Model-ID",
              },
              task_settings: {
                max_tokens: 1024,
              },
            },
          });
      - lang: Ruby
        source: |-
          response = client.inference.put(
            task_type: "completion",
            inference_id: "anthropic_completion",
            body: {
              "service": "anthropic",
              "service_settings": {
                "api_key": "Anthropic-Api-Key",
                "model_id": "Model-ID"
              },
              "task_settings": {
                "max_tokens": 1024
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->inference()->put([
              "task_type" => "completion",
              "inference_id" => "anthropic_completion",
              "body" => [
                  "service" => "anthropic",
                  "service_settings" => [
                      "api_key" => "Anthropic-Api-Key",
                      "model_id" => "Model-ID",
                  ],
                  "task_settings" => [
                      "max_tokens" => 1024,
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"service":"anthropic","service_settings":{"api_key":"Anthropic-Api-Key","model_id":"Model-ID"},"task_settings":{"max_tokens":1024}}''
          "$ELASTICSEARCH_URL/_inference/completion/anthropic_completion"'
      - lang: Java
        source: |
          client.inference().put(p -> p
              .inferenceId("anthropic_completion")
              .taskType(TaskType.Completion)
              .inferenceConfig(i -> i
                  .service("anthropic")
                  .serviceSettings(JsonData.fromJson("{\"api_key\":\"Anthropic-Api-Key\",\"model_id\":\"Model-ID\"}"))
                  .taskSettings(JsonData.fromJson("{\"max_tokens\":1024}"))
              )
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_inference/{task_type}/{azureaistudio_inference_id}":
    put:
      tags:
      - inference
      summary: Create an Azure AI studio inference endpoint
      description: |
        Create an inference endpoint to perform an inference task with the `azureaistudio` service.

        ## Required authorization

        * Cluster privileges: `manage_inference`
      operationId: inference-put-azureaistudio
      parameters:
      - in: path
        name: task_type
        description: The type of the inference task that the model will perform.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/inference._types.AzureAiStudioTaskType"
        style: simple
      - in: path
        name: azureaistudio_inference_id
        description: The unique identifier of the inference endpoint.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: timeout
        description: Specifies the amount of time to wait for the inference endpoint
          to be created.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                chunking_settings:
                  externalDocs:
                    url: https://www.elastic.co/docs/explore-analyze/elastic-inference/inference-api#infer-chunking-config
                  description: |-
                    The chunking configuration object.
                    Applies only to the `text_embedding` task type.
                    Not applicable to the `rerank` or `completion` task types.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.InferenceChunkingSettings"
                service:
                  description: The type of service supported for the specified task
                    type. In this case, `azureaistudio`.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.AzureAiStudioServiceType"
                service_settings:
                  description: Settings used to install the inference model. These
                    settings are specific to the `azureaistudio` service.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.AzureAiStudioServiceSettings"
                task_settings:
                  description: |-
                    Settings to configure the inference task.
                    These settings are specific to the task type you specified.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.AzureAiStudioTaskSettings"
              required:
              - service
              - service_settings
            examples:
              PutAzureAiStudioRequestExample1:
                summary: A text embedding task
                description: Run `PUT _inference/text_embedding/azure_ai_studio_embeddings`
                  to create an inference endpoint that performs a text_embedding task.
                  Note that you do not specify a model here, as it is defined already
                  in the Azure AI Studio deployment.
                value: |-
                  {
                      "service": "azureaistudio",
                      "service_settings": {
                          "api_key": "Azure-AI-Studio-API-key",
                          "target": "Target-Uri",
                          "provider": "openai",
                          "endpoint_type": "token"
                      }
                  }
              PutAzureAiStudioRequestExample2:
                summary: A completion task
                description: Run `PUT _inference/completion/azure_ai_studio_completion`
                  to create an inference endpoint that performs a completion task.
                value: |-
                  {
                      "service": "azureaistudio",
                      "service_settings": {
                          "api_key": "Azure-AI-Studio-API-key",
                          "target": "Target-URI",
                          "provider": "databricks",
                          "endpoint_type": "realtime"
                      }
                  }
              PutAzureAiStudioRequestExample3:
                summary: A rerank task
                description: Run `PUT _inference/rerank/azure_ai_studio_rerank` to
                  create an inference endpoint that performs a rerank task.
                value: |-
                  {
                      "service": "azureaistudio",
                      "service_settings": {
                          "api_key": "Azure-AI-Studio-API-key",
                          "target": "Target-URI",
                          "provider": "cohere",
                          "endpoint_type": "token"
                      }
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/inference._types.InferenceEndpointInfoAzureAIStudio"
      x-state: Generally available; Added in 8.14.0
      x-codeSamples:
      - lang: Console
        source: |-
          PUT _inference/text_embedding/azure_ai_studio_embeddings
          {
              "service": "azureaistudio",
              "service_settings": {
                  "api_key": "Azure-AI-Studio-API-key",
                  "target": "Target-Uri",
                  "provider": "openai",
                  "endpoint_type": "token"
              }
          }
      - lang: Python
        source: |-
          resp = client.inference.put(
              task_type="text_embedding",
              inference_id="azure_ai_studio_embeddings",
              inference_config={
                  "service": "azureaistudio",
                  "service_settings": {
                      "api_key": "Azure-AI-Studio-API-key",
                      "target": "Target-Uri",
                      "provider": "openai",
                      "endpoint_type": "token"
                  }
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.inference.put({
            task_type: "text_embedding",
            inference_id: "azure_ai_studio_embeddings",
            inference_config: {
              service: "azureaistudio",
              service_settings: {
                api_key: "Azure-AI-Studio-API-key",
                target: "Target-Uri",
                provider: "openai",
                endpoint_type: "token",
              },
            },
          });
      - lang: Ruby
        source: |-
          response = client.inference.put(
            task_type: "text_embedding",
            inference_id: "azure_ai_studio_embeddings",
            body: {
              "service": "azureaistudio",
              "service_settings": {
                "api_key": "Azure-AI-Studio-API-key",
                "target": "Target-Uri",
                "provider": "openai",
                "endpoint_type": "token"
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->inference()->put([
              "task_type" => "text_embedding",
              "inference_id" => "azure_ai_studio_embeddings",
              "body" => [
                  "service" => "azureaistudio",
                  "service_settings" => [
                      "api_key" => "Azure-AI-Studio-API-key",
                      "target" => "Target-Uri",
                      "provider" => "openai",
                      "endpoint_type" => "token",
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"service":"azureaistudio","service_settings":{"api_key":"Azure-AI-Studio-API-key","target":"Target-Uri","provider":"openai","endpoint_type":"token"}}''
          "$ELASTICSEARCH_URL/_inference/text_embedding/azure_ai_studio_embeddings"'
      - lang: Java
        source: |
          client.inference().put(p -> p
              .inferenceId("azure_ai_studio_embeddings")
              .taskType(TaskType.TextEmbedding)
              .inferenceConfig(i -> i
                  .service("azureaistudio")
                  .serviceSettings(JsonData.fromJson("{\"api_key\":\"Azure-AI-Studio-API-key\",\"target\":\"Target-Uri\",\"provider\":\"openai\",\"endpoint_type\":\"token\"}"))
              )
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_inference/{task_type}/{azureopenai_inference_id}":
    put:
      tags:
      - inference
      summary: Create an Azure OpenAI inference endpoint
      description: |
        Create an inference endpoint to perform an inference task with the `azureopenai` service.

        The list of chat completion models that you can choose from in your Azure OpenAI deployment include:

        * [GPT-4 and GPT-4 Turbo models](https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models?tabs=global-standard%2Cstandard-chat-completions#gpt-4-and-gpt-4-turbo-models)
        * [GPT-3.5](https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models?tabs=global-standard%2Cstandard-chat-completions#gpt-35)

        The list of embeddings models that you can choose from in your deployment can be found in the [Azure models documentation](https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models?tabs=global-standard%2Cstandard-chat-completions#embeddings).

        ## Required authorization

        * Cluster privileges: `manage_inference`
      operationId: inference-put-azureopenai
      parameters:
      - in: path
        name: task_type
        description: |-
          The type of the inference task that the model will perform.
          NOTE: The `chat_completion` task type only supports streaming and only through the _stream API.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/inference._types.AzureOpenAITaskType"
        style: simple
      - in: path
        name: azureopenai_inference_id
        description: The unique identifier of the inference endpoint.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: timeout
        description: Specifies the amount of time to wait for the inference endpoint
          to be created.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                chunking_settings:
                  externalDocs:
                    url: https://www.elastic.co/docs/explore-analyze/elastic-inference/inference-api#infer-chunking-config
                  description: |-
                    The chunking configuration object.
                    Applies only to the `text_embedding` task type.
                    Not applicable to the `completion` and `chat_completion` task types.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.InferenceChunkingSettings"
                service:
                  description: The type of service supported for the specified task
                    type. In this case, `azureopenai`.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.AzureOpenAIServiceType"
                service_settings:
                  description: Settings used to install the inference model. These
                    settings are specific to the `azureopenai` service.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.AzureOpenAIServiceSettings"
                task_settings:
                  description: |-
                    Settings to configure the inference task.
                    These settings are specific to the task type you specified.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.AzureOpenAITaskSettings"
              required:
              - service
              - service_settings
            examples:
              PutAzureOpenAiRequestExample1:
                summary: A text embedding task
                description: Run `PUT _inference/text_embedding/azure_openai_embeddings`
                  to create an inference endpoint that performs a `text_embedding`
                  task. You do not specify a model, as it is defined already in the
                  Azure OpenAI deployment.
                value: |-
                  {
                      "service": "azureopenai",
                      "service_settings": {
                          "api_key": "Api-Key",
                          "resource_name": "Resource-name",
                          "deployment_id": "Deployment-id",
                          "api_version": "2024-02-01"
                      }
                  }
              PutAzureOpenAiRequestExample2:
                summary: A completion task
                description: Run `PUT _inference/completion/azure_openai_completion`
                  to create an inference endpoint that performs a `completion` task.
                value: |-
                  {
                      "service": "azureopenai",
                      "service_settings": {
                          "api_key": "Api-Key",
                          "resource_name": "Resource-name",
                          "deployment_id": "Deployment-id",
                          "api_version": "2024-02-01"
                      }
                  }
              PutAzureOpenAiRequestExample3:
                summary: A chat completion task
                description: Run `PUT _inference/chat_completion/azure_openai_chat_completion`
                  to create an inference endpoint that performs a `chat_completion`
                  task.
                value: |-
                  {
                      "service": "azureopenai",
                      "service_settings": {
                          "api_key": "Api-Key",
                          "resource_name": "Resource-name",
                          "deployment_id": "Deployment-id",
                          "api_version": "2024-02-01"
                      }
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/inference._types.InferenceEndpointInfoAzureOpenAI"
              examples:
                PutAzureOpenAiResponseExample1:
                  summary: A text embedding task
                  description: A successful response when creating an Azure OpenAI
                    `text_embedding` inference endpoint.
                  value: |-
                    {
                      "inference_id": "azure_openai_embeddings",
                      "task_type": "text_embedding",
                      "service": "azureopenai",
                      "service_settings": {
                        "resource_name": "Resource-name",
                        "deployment_id": "Deployment-id",
                        "api_version": "2024-02-01",
                        "rate_limit": {
                          "requests_per_minute": 1140
                        },
                        "dimensions": 1536,
                        "similarity": "dot_product"
                      },
                      "chunking_settings": {
                        "strategy": "sentence",
                        "max_chunk_size": 250,
                        "sentence_overlap": 1
                      }
                    }
                PutAzureOpenAiResponseExample2:
                  summary: A completion task
                  description: A successful response when creating an Azure OpenAI
                    `completion` inference endpoint.
                  value: |-
                    {
                      "inference_id": "azure_openai_completion",
                      "task_type": "completion",
                      "service": "azureopenai",
                      "service_settings": {
                        "resource_name": "Resource-name",
                        "deployment_id": "Deployment-id",
                        "api_version": "2024-02-01",
                        "rate_limit": {
                          "requests_per_minute": 120
                        }
                      }
                    }
                PutAzureOpenAiResponseExample3:
                  summary: A chat completion task
                  description: A successful response when creating an Azure OpenAI
                    `chat_completion` inference endpoint.
                  value: |-
                    {
                      "inference_id": "azure_openai_chat_completion",
                      "task_type": "chat_completion",
                      "service": "azureopenai",
                      "service_settings": {
                        "resource_name": "Resource-name",
                        "deployment_id": "Deployment-id",
                        "api_version": "2024-02-01",
                        "rate_limit": {
                          "requests_per_minute": 120
                        }
                      }
                    }
      x-state: Generally available; Added in 8.14.0
      x-codeSamples:
      - lang: Console
        source: |-
          PUT _inference/text_embedding/azure_openai_embeddings
          {
              "service": "azureopenai",
              "service_settings": {
                  "api_key": "Api-Key",
                  "resource_name": "Resource-name",
                  "deployment_id": "Deployment-id",
                  "api_version": "2024-02-01"
              }
          }
      - lang: Python
        source: |-
          resp = client.inference.put(
              task_type="text_embedding",
              inference_id="azure_openai_embeddings",
              inference_config={
                  "service": "azureopenai",
                  "service_settings": {
                      "api_key": "Api-Key",
                      "resource_name": "Resource-name",
                      "deployment_id": "Deployment-id",
                      "api_version": "2024-02-01"
                  }
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.inference.put({
            task_type: "text_embedding",
            inference_id: "azure_openai_embeddings",
            inference_config: {
              service: "azureopenai",
              service_settings: {
                api_key: "Api-Key",
                resource_name: "Resource-name",
                deployment_id: "Deployment-id",
                api_version: "2024-02-01",
              },
            },
          });
      - lang: Ruby
        source: |-
          response = client.inference.put(
            task_type: "text_embedding",
            inference_id: "azure_openai_embeddings",
            body: {
              "service": "azureopenai",
              "service_settings": {
                "api_key": "Api-Key",
                "resource_name": "Resource-name",
                "deployment_id": "Deployment-id",
                "api_version": "2024-02-01"
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->inference()->put([
              "task_type" => "text_embedding",
              "inference_id" => "azure_openai_embeddings",
              "body" => [
                  "service" => "azureopenai",
                  "service_settings" => [
                      "api_key" => "Api-Key",
                      "resource_name" => "Resource-name",
                      "deployment_id" => "Deployment-id",
                      "api_version" => "2024-02-01",
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"service":"azureopenai","service_settings":{"api_key":"Api-Key","resource_name":"Resource-name","deployment_id":"Deployment-id","api_version":"2024-02-01"}}''
          "$ELASTICSEARCH_URL/_inference/text_embedding/azure_openai_embeddings"'
      - lang: Java
        source: |
          client.inference().put(p -> p
              .inferenceId("azure_openai_embeddings")
              .taskType(TaskType.TextEmbedding)
              .inferenceConfig(i -> i
                  .service("azureopenai")
                  .serviceSettings(JsonData.fromJson("{\"api_key\":\"Api-Key\",\"resource_name\":\"Resource-name\",\"deployment_id\":\"Deployment-id\",\"api_version\":\"2024-02-01\"}"))
              )
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_inference/{task_type}/{cohere_inference_id}":
    put:
      tags:
      - inference
      summary: Create a Cohere inference endpoint
      description: |
        Create an inference endpoint to perform an inference task with the `cohere` service.

        ## Required authorization

        * Cluster privileges: `manage_inference`
      operationId: inference-put-cohere
      parameters:
      - in: path
        name: task_type
        description: The type of the inference task that the model will perform.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/inference._types.CohereTaskType"
        style: simple
      - in: path
        name: cohere_inference_id
        description: The unique identifier of the inference endpoint.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: timeout
        description: Specifies the amount of time to wait for the inference endpoint
          to be created.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                chunking_settings:
                  externalDocs:
                    url: https://www.elastic.co/docs/explore-analyze/elastic-inference/inference-api#infer-chunking-config
                  description: |-
                    The chunking configuration object.
                    Applies only to the `text_embedding` task type.
                    Not applicable to the `rerank` or `completion` task type.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.InferenceChunkingSettings"
                service:
                  description: The type of service supported for the specified task
                    type. In this case, `cohere`.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.CohereServiceType"
                service_settings:
                  description: |-
                    Settings used to install the inference model.
                    These settings are specific to the `cohere` service.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.CohereServiceSettings"
                task_settings:
                  description: |-
                    Settings to configure the inference task.
                    These settings are specific to the task type you specified.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.CohereTaskSettings"
              required:
              - service
              - service_settings
            examples:
              PutCohereRequestExample1:
                summary: A text embedding task
                description: Run `PUT _inference/text_embedding/cohere-embeddings`
                  to create an inference endpoint that performs a text embedding task.
                value: |-
                  {
                      "service": "cohere",
                      "service_settings": {
                          "api_key": "Cohere-Api-key",
                          "model_id": "embed-english-light-v3.0",
                          "embedding_type": "byte"
                      }
                  }
              PutCohereRequestExample2:
                summary: A rerank task
                description: Run `PUT _inference/rerank/cohere-rerank` to create an
                  inference endpoint that performs a rerank task.
                value: |-
                  {
                      "service": "cohere",
                      "service_settings": {
                          "api_key": "Cohere-API-key",
                          "model_id": "rerank-english-v3.0"
                      },
                      "task_settings": {
                          "top_n": 10,
                          "return_documents": true
                      }
                  }
              PutCohereRequestExample3:
                summary: A completion task
                description: Run `PUT _inference/completion/cohere-completion` to
                  create an inference endpoint that performs a completion task.
                value: |-
                  {
                      "service": "cohere",
                      "service_settings": {
                          "api_key": "Cohere-API-key",
                          "model_id": "command-a-03-2025"
                      }
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/inference._types.InferenceEndpointInfoCohere"
      x-state: Generally available; Added in 8.13.0
      x-codeSamples:
      - lang: Console
        source: |-
          PUT _inference/text_embedding/cohere-embeddings
          {
              "service": "cohere",
              "service_settings": {
                  "api_key": "Cohere-Api-key",
                  "model_id": "embed-english-light-v3.0",
                  "embedding_type": "byte"
              }
          }
      - lang: Python
        source: |-
          resp = client.inference.put(
              task_type="text_embedding",
              inference_id="cohere-embeddings",
              inference_config={
                  "service": "cohere",
                  "service_settings": {
                      "api_key": "Cohere-Api-key",
                      "model_id": "embed-english-light-v3.0",
                      "embedding_type": "byte"
                  }
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.inference.put({
            task_type: "text_embedding",
            inference_id: "cohere-embeddings",
            inference_config: {
              service: "cohere",
              service_settings: {
                api_key: "Cohere-Api-key",
                model_id: "embed-english-light-v3.0",
                embedding_type: "byte",
              },
            },
          });
      - lang: Ruby
        source: |-
          response = client.inference.put(
            task_type: "text_embedding",
            inference_id: "cohere-embeddings",
            body: {
              "service": "cohere",
              "service_settings": {
                "api_key": "Cohere-Api-key",
                "model_id": "embed-english-light-v3.0",
                "embedding_type": "byte"
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->inference()->put([
              "task_type" => "text_embedding",
              "inference_id" => "cohere-embeddings",
              "body" => [
                  "service" => "cohere",
                  "service_settings" => [
                      "api_key" => "Cohere-Api-key",
                      "model_id" => "embed-english-light-v3.0",
                      "embedding_type" => "byte",
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"service":"cohere","service_settings":{"api_key":"Cohere-Api-key","model_id":"embed-english-light-v3.0","embedding_type":"byte"}}''
          "$ELASTICSEARCH_URL/_inference/text_embedding/cohere-embeddings"'
      - lang: Java
        source: |
          client.inference().put(p -> p
              .inferenceId("cohere-embeddings")
              .taskType(TaskType.TextEmbedding)
              .inferenceConfig(i -> i
                  .service("cohere")
                  .serviceSettings(JsonData.fromJson("{\"api_key\":\"Cohere-Api-key\",\"model_id\":\"embed-english-light-v3.0\",\"embedding_type\":\"byte\"}"))
              )
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_inference/{task_type}/{contextualai_inference_id}":
    put:
      tags:
      - inference
      summary: Create an Contextual AI inference endpoint
      description: |
        Create an inference endpoint to perform an inference task with the `contexualai` service.

        To review the available `rerank` models, refer to <https://docs.contextual.ai/api-reference/rerank/rerank#body-model>.

        ## Required authorization

        * Cluster privileges: `manage_inference`
      operationId: inference-put-contextualai
      parameters:
      - in: path
        name: task_type
        description: The type of the inference task that the model will perform.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/inference._types.TaskTypeContextualAI"
        style: simple
      - in: path
        name: contextualai_inference_id
        description: The unique identifier of the inference endpoint.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: timeout
        description: Specifies the amount of time to wait for the inference endpoint
          to be created.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                service:
                  description: The type of service supported for the specified task
                    type. In this case, `contextualai`.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.ContextualAIServiceType"
                service_settings:
                  description: Settings used to install the inference model. These
                    settings are specific to the `contextualai` service.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.ContextualAIServiceSettings"
                task_settings:
                  description: |-
                    Settings to configure the inference task.
                    These settings are specific to the task type you specified.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.ContextualAITaskSettings"
              required:
              - service
              - service_settings
            examples:
              PutContextualAiRequestExample1:
                summary: A rerank task
                description: Run `PUT _inference/rerank/contextualai-rerank` to create
                  an inference endpoint for rerank tasks using the Contextual AI service.
                value: |-
                  {
                      "service": "contextualai",
                      "service_settings": {
                          "api_key": "ContextualAI-Api-key",
                          "model_id": "ctxl-rerank-v2-instruct-multilingual-mini"
                      },
                      "task_settings": {
                          "instruction": "Rerank the following documents based on their relevance to the query.",
                          "top_k": 3
                      }
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/inference._types.InferenceEndpointInfoContextualAi"
      x-state: Generally available; Added in 9.2.0
      x-codeSamples:
      - lang: Console
        source: |-
          PUT _inference/rerank/contextualai-rerank
          {
              "service": "contextualai",
              "service_settings": {
                  "api_key": "ContextualAI-Api-key",
                  "model_id": "ctxl-rerank-v2-instruct-multilingual-mini"
              },
              "task_settings": {
                  "instruction": "Rerank the following documents based on their relevance to the query.",
                  "top_k": 3
              }
          }
      - lang: Python
        source: |-
          resp = client.inference.put(
              task_type="rerank",
              inference_id="contextualai-rerank",
              inference_config={
                  "service": "contextualai",
                  "service_settings": {
                      "api_key": "ContextualAI-Api-key",
                      "model_id": "ctxl-rerank-v2-instruct-multilingual-mini"
                  },
                  "task_settings": {
                      "instruction": "Rerank the following documents based on their relevance to the query.",
                      "top_k": 3
                  }
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.inference.put({
            task_type: "rerank",
            inference_id: "contextualai-rerank",
            inference_config: {
              service: "contextualai",
              service_settings: {
                api_key: "ContextualAI-Api-key",
                model_id: "ctxl-rerank-v2-instruct-multilingual-mini",
              },
              task_settings: {
                instruction:
                  "Rerank the following documents based on their relevance to the query.",
                top_k: 3,
              },
            },
          });
      - lang: Ruby
        source: |-
          response = client.inference.put(
            task_type: "rerank",
            inference_id: "contextualai-rerank",
            body: {
              "service": "contextualai",
              "service_settings": {
                "api_key": "ContextualAI-Api-key",
                "model_id": "ctxl-rerank-v2-instruct-multilingual-mini"
              },
              "task_settings": {
                "instruction": "Rerank the following documents based on their relevance to the query.",
                "top_k": 3
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->inference()->put([
              "task_type" => "rerank",
              "inference_id" => "contextualai-rerank",
              "body" => [
                  "service" => "contextualai",
                  "service_settings" => [
                      "api_key" => "ContextualAI-Api-key",
                      "model_id" => "ctxl-rerank-v2-instruct-multilingual-mini",
                  ],
                  "task_settings" => [
                      "instruction" => "Rerank the following documents based on their relevance to the query.",
                      "top_k" => 3,
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"service":"contextualai","service_settings":{"api_key":"ContextualAI-Api-key","model_id":"ctxl-rerank-v2-instruct-multilingual-mini"},"task_settings":{"instruction":"Rerank
          the following documents based on their relevance to the query.","top_k":3}}''
          "$ELASTICSEARCH_URL/_inference/rerank/contextualai-rerank"'
      - lang: Java
        source: |
          client.inference().put(p -> p
              .inferenceId("contextualai-rerank")
              .taskType(TaskType.Rerank)
              .inferenceConfig(i -> i
                  .service("contextualai")
                  .serviceSettings(JsonData.fromJson("{\"api_key\":\"ContextualAI-Api-key\",\"model_id\":\"ctxl-rerank-v2-instruct-multilingual-mini\"}"))
                  .taskSettings(JsonData.fromJson("{\"instruction\":\"Rerank the following documents based on their relevance to the query.\",\"top_k\":3}"))
              )
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_inference/{task_type}/{custom_inference_id}":
    put:
      tags:
      - inference
      summary: Create a custom inference endpoint
      description: |
        The custom service gives more control over how to interact with external inference services that aren't explicitly supported through dedicated integrations.
        The custom service gives you the ability to define the headers, url, query parameters, request body, and secrets.
        The custom service supports the template replacement functionality, which enables you to define a template that can be replaced with the value associated with that key.
        Templates are portions of a string that start with `${` and end with `}`.
        The parameters `secret_parameters` and `task_settings` are checked for keys for template replacement. Template replacement is supported in the `request`, `headers`, `url`, and `query_parameters`.
        If the definition (key) is not found for a template, an error message is returned.
        In case of an endpoint definition like the following:
        ```
        PUT _inference/text_embedding/test-text-embedding
        {
          "service": "custom",
          "service_settings": {
             "secret_parameters": {
                  "api_key": "<some api key>"
             },
             "url": "...endpoints.huggingface.cloud/v1/embeddings",
             "headers": {
                 "Authorization": "Bearer ${api_key}",
                 "Content-Type": "application/json"
             },
             "request": "{\"input\": ${input}}",
             "response": {
                 "json_parser": {
                     "text_embeddings":"$.data[*].embedding[*]"
                 }
             }
          }
        }
        ```
        To replace `${api_key}` the `secret_parameters` and `task_settings` are checked for a key named `api_key`.

        > info
        > Templates should not be surrounded by quotes.

        Pre-defined templates:
        * `${input}` refers to the array of input strings that comes from the `input` field of the subsequent inference requests.
        * `${input_type}` refers to the input type translation values.
        * `${query}` refers to the query field used specifically for reranking tasks.
        * `${top_n}` refers to the `top_n` field available when performing rerank requests.
        * `${return_documents}` refers to the `return_documents` field available when performing rerank requests.

        ## Required authorization

        * Cluster privileges: `manage_inference`
      operationId: inference-put-custom
      parameters:
      - in: path
        name: task_type
        description: The type of the inference task that the model will perform.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/inference._types.CustomTaskType"
        style: simple
      - in: path
        name: custom_inference_id
        description: The unique identifier of the inference endpoint.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                chunking_settings:
                  externalDocs:
                    url: https://www.elastic.co/docs/explore-analyze/elastic-inference/inference-api#infer-chunking-config
                  description: |-
                    The chunking configuration object.
                    Applies only to the `sparse_embedding` or `text_embedding` task types.
                    Not applicable to the `rerank` or `completion` task types.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.InferenceChunkingSettings"
                service:
                  description: The type of service supported for the specified task
                    type. In this case, `custom`.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.CustomServiceType"
                service_settings:
                  description: |-
                    Settings used to install the inference model.
                    These settings are specific to the `custom` service.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.CustomServiceSettings"
                task_settings:
                  description: |-
                    Settings to configure the inference task.
                    These settings are specific to the task type you specified.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.CustomTaskSettings"
              required:
              - service
              - service_settings
            examples:
              PutCustomRequestExample1:
                summary: Custom text embedding task (OpenAI)
                description: Run `PUT _inference/text_embedding/custom-embeddings`
                  to create an inference endpoint that performs a text embedding task.
                value: |-
                  {
                      "service": "custom",
                      "service_settings": {
                          "secret_parameters": {
                              "api_key": "<api key>"
                          },
                          "url": "https://api.openai.com/v1/embeddings",
                          "headers": {
                              "Authorization": "Bearer ${api_key}",
                              "Content-Type": "application/json;charset=utf-8"
                          },
                          "request": "{\"input\": ${input}, \"model\": \"text-embedding-3-small\"}",
                          "response": {
                              "json_parser": {
                                  "text_embeddings": "$.data[*].embedding[*]"
                              }
                          }
                      }
                  }
              PutCustomRequestExample2:
                summary: Custom rerank task (Cohere APIv2)
                description: Run `PUT _inference/rerank/custom-rerank` to create an
                  inference endpoint that performs a rerank task.
                value: |-
                  {
                    "service": "custom",
                    "service_settings": {
                        "secret_parameters": {
                            "api_key": "<api key>"
                        },
                        "url": "https://api.cohere.com/v2/rerank",
                        "headers": {
                            "Authorization": "bearer ${api_key}",
                            "Content-Type": "application/json"
                        },
                        "request": "{\"documents\": ${input}, \"query\": ${query}, \"model\": \"rerank-v3.5\"}",
                        "response": {
                            "json_parser": {
                                "reranked_index":"$.results[*].index",
                                "relevance_score":"$.results[*].relevance_score"
                            }
                        }
                    }
                  }
              PutCustomRequestExample3:
                summary: Custom text embedding task (Cohere APIv2)
                description: Run `PUT _inference/text_embedding/custom-text-embedding`
                  to create an inference endpoint that performs a text embedding task.
                value: |-
                  {
                    "service": "custom",
                    "service_settings": {
                        "secret_parameters": {
                            "api_key": "<api key>"
                        },
                        "url": "https://api.cohere.com/v2/embed",
                        "headers": {
                            "Authorization": "bearer ${api_key}",
                            "Content-Type": "application/json"
                        },
                        "request": "{\"texts\": ${input}, \"model\": \"embed-v4.0\", \"input_type\": ${input_type}}",
                        "response": {
                            "json_parser": {
                                "text_embeddings":"$.embeddings.float[*]"
                            }
                        },
                        "input_type": {
                            "translation": {
                                "ingest": "search_document",
                                "search": "search_query"
                            },
                            "default": "search_document"
                        }
                    }
                  }
              PutCustomRequestExample4:
                summary: Custom rerank task (Jina AI)
                description: Run `PUT _inference/rerank/custom-rerank-jina` to create
                  an inference endpoint that performs a rerank task.
                value: "{\n  \"service\": \"custom\",\n  \"service_settings\": {\n
                  \   \"secret_parameters\": {\n      \"api_key\": \"<api key>\"\n
                  \   },    \n    \"url\": \"https://api.jina.ai/v1/rerank\",\n    \"headers\":
                  {\n      \"Content-Type\": \"application/json\",\n      \"Authorization\":
                  \"Bearer ${api_key}\"\n    },\n    \"request\": \"{\\\"model\\\":
                  \\\"jina-reranker-v2-base-multilingual\\\",\\\"query\\\": ${query},\\\"documents\\\":${input}}\",\n
                  \   \"response\": {\n      \"json_parser\": {\n        \"relevance_score\":
                  \"$.results[*].relevance_score\",\n        \"reranked_index\": \"$.results[*].index\"\n
                  \     }\n    }\n  }\n}"
              PutCustomRequestExample5:
                summary: Custom text embedding task (Hugging Face)
                description: Run `PUT _inference/text_embedding/custom-text-embedding-hf`
                  to create an inference endpoint that performs a text embedding task
                  by using the Qwen/Qwen3-Embedding-8B model.
                value: |-
                  {
                    "service": "custom",
                    "service_settings": {
                        "secret_parameters": {
                            "api_key": "<api key>"
                        },
                        "url": "<dedicated inference endpoint on HF>/v1/embeddings",
                        "headers": {
                            "Authorization": "Bearer ${api_key}",
                            "Content-Type": "application/json"
                        },
                        "request": "{\"input\": ${input}}",
                        "response": {
                            "json_parser": {
                                "text_embeddings":"$.data[*].embedding[*]"
                            }
                        }
                    }
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/inference._types.InferenceEndpointInfoCustom"
      x-state: Generally available; Added in 8.19.0
      x-codeSamples:
      - lang: Console
        source: |-
          PUT _inference/text_embedding/custom-embeddings
          {
              "service": "custom",
              "service_settings": {
                  "secret_parameters": {
                      "api_key": "<api key>"
                  },
                  "url": "https://api.openai.com/v1/embeddings",
                  "headers": {
                      "Authorization": "Bearer ${api_key}",
                      "Content-Type": "application/json;charset=utf-8"
                  },
                  "request": "{\"input\": ${input}, \"model\": \"text-embedding-3-small\"}",
                  "response": {
                      "json_parser": {
                          "text_embeddings": "$.data[*].embedding[*]"
                      }
                  }
              }
          }
      - lang: Python
        source: |-
          resp = client.inference.put(
              task_type="text_embedding",
              inference_id="custom-embeddings",
              inference_config={
                  "service": "custom",
                  "service_settings": {
                      "secret_parameters": {
                          "api_key": "<api key>"
                      },
                      "url": "https://api.openai.com/v1/embeddings",
                      "headers": {
                          "Authorization": "Bearer ${api_key}",
                          "Content-Type": "application/json;charset=utf-8"
                      },
                      "request": "{\"input\": ${input}, \"model\": \"text-embedding-3-small\"}",
                      "response": {
                          "json_parser": {
                              "text_embeddings": "$.data[*].embedding[*]"
                          }
                      }
                  }
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.inference.put({
            task_type: "text_embedding",
            inference_id: "custom-embeddings",
            inference_config: {
              service: "custom",
              service_settings: {
                secret_parameters: {
                  api_key: "<api key>",
                },
                url: "https://api.openai.com/v1/embeddings",
                headers: {
                  Authorization: "Bearer ${api_key}",
                  "Content-Type": "application/json;charset=utf-8",
                },
                request: '{"input": ${input}, "model": "text-embedding-3-small"}',
                response: {
                  json_parser: {
                    text_embeddings: "$.data[*].embedding[*]",
                  },
                },
              },
            },
          });
      - lang: Ruby
        source: |-
          response = client.inference.put(
            task_type: "text_embedding",
            inference_id: "custom-embeddings",
            body: {
              "service": "custom",
              "service_settings": {
                "secret_parameters": {
                  "api_key": "<api key>"
                },
                "url": "https://api.openai.com/v1/embeddings",
                "headers": {
                  "Authorization": "Bearer ${api_key}",
                  "Content-Type": "application/json;charset=utf-8"
                },
                "request": "{\"input\": ${input}, \"model\": \"text-embedding-3-small\"}",
                "response": {
                  "json_parser": {
                    "text_embeddings": "$.data[*].embedding[*]"
                  }
                }
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->inference()->put([
              "task_type" => "text_embedding",
              "inference_id" => "custom-embeddings",
              "body" => [
                  "service" => "custom",
                  "service_settings" => [
                      "secret_parameters" => [
                          "api_key" => "<api key>",
                      ],
                      "url" => "https://api.openai.com/v1/embeddings",
                      "headers" => [
                          "Authorization" => "Bearer \${api_key}",
                          "Content-Type" => "application/json;charset=utf-8",
                      ],
                      "request" => "{\"input\": \${input}, \"model\": \"text-embedding-3-small\"}",
                      "response" => [
                          "json_parser" => [
                              "text_embeddings" => "$.data[*].embedding[*]",
                          ],
                      ],
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"service":"custom","service_settings":{"secret_parameters":{"api_key":"<api
          key>"},"url":"https://api.openai.com/v1/embeddings","headers":{"Authorization":"Bearer
          ${api_key}","Content-Type":"application/json;charset=utf-8"},"request":"{\"input\":
          ${input}, \"model\": \"text-embedding-3-small\"}","response":{"json_parser":{"text_embeddings":"$.data[*].embedding[*]"}}}}''
          "$ELASTICSEARCH_URL/_inference/text_embedding/custom-embeddings"'
      - lang: Java
        source: |
          client.inference().put(p -> p
              .inferenceId("custom-embeddings")
              .taskType(TaskType.TextEmbedding)
              .inferenceConfig(i -> i
                  .service("custom")
                  .serviceSettings(JsonData.fromJson("{\"secret_parameters\":{\"api_key\":\"<api key>\"},\"url\":\"https://api.openai.com/v1/embeddings\",\"headers\":{\"Authorization\":\"Bearer ${api_key}\",\"Content-Type\":\"application/json;charset=utf-8\"},\"request\":\"{\\"input\\": ${input}, \\"model\\": \\"text-embedding-3-small\\"}\",\"response\":{\"json_parser\":{\"text_embeddings\":\"$.data[*].embedding[*]\"}}}"))
              )
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_inference/{task_type}/{deepseek_inference_id}":
    put:
      tags:
      - inference
      summary: Create a DeepSeek inference endpoint
      description: |
        Create an inference endpoint to perform an inference task with the `deepseek` service.

        ## Required authorization

        * Cluster privileges: `manage_inference`
      operationId: inference-put-deepseek
      parameters:
      - in: path
        name: task_type
        description: The type of the inference task that the model will perform.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/inference._types.TaskTypeDeepSeek"
        style: simple
      - in: path
        name: deepseek_inference_id
        description: The unique identifier of the inference endpoint.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: timeout
        description: Specifies the amount of time to wait for the inference endpoint
          to be created.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                service:
                  description: The type of service supported for the specified task
                    type. In this case, `deepseek`.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.DeepSeekServiceType"
                service_settings:
                  description: |-
                    Settings used to install the inference model.
                    These settings are specific to the `deepseek` service.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.DeepSeekServiceSettings"
              required:
              - service
              - service_settings
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/inference._types.InferenceEndpointInfoDeepSeek"
      x-state: Generally available; Added in 9.1.0
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_inference/{task_type}/{elasticsearch_inference_id}":
    put:
      tags:
      - inference
      summary: Create an Elasticsearch inference endpoint
      description: |
        Create an inference endpoint to perform an inference task with the `elasticsearch` service.

        > info
        > Your Elasticsearch deployment contains preconfigured ELSER and E5 inference endpoints, you only need to create the enpoints using the API if you want to customize the settings.

        If you use the ELSER or the E5 model through the `elasticsearch` service, the API request will automatically download and deploy the model if it isn't downloaded yet.

        > info
        > You might see a 502 bad gateway error in the response when using the Kibana Console. This error usually just reflects a timeout, while the model downloads in the background. You can check the download progress in the Machine Learning UI. If using the Python client, you can set the timeout parameter to a higher value.

        After creating the endpoint, wait for the model deployment to complete before using it.
        To verify the deployment status, use the get trained model statistics API.
        Look for `"state": "fully_allocated"` in the response and ensure that the `"allocation_count"` matches the `"target_allocation_count"`.
        Avoid creating multiple endpoints for the same model unless required, as each endpoint consumes significant resources.

        ## Required authorization

        * Cluster privileges: `manage_inference`
      operationId: inference-put-elasticsearch
      parameters:
      - in: path
        name: task_type
        description: The type of the inference task that the model will perform.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/inference._types.ElasticsearchTaskType"
        style: simple
      - in: path
        name: elasticsearch_inference_id
        description: |-
          The unique identifier of the inference endpoint.
          The must not match the `model_id`.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: timeout
        description: Specifies the amount of time to wait for the inference endpoint
          to be created.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                chunking_settings:
                  externalDocs:
                    url: https://www.elastic.co/docs/explore-analyze/elastic-inference/inference-api#infer-chunking-config
                  description: |-
                    The chunking configuration object.
                    Applies only to the `sparse_embedding` and `text_embedding` task types.
                    Not applicable to the `rerank` task type.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.InferenceChunkingSettings"
                service:
                  description: The type of service supported for the specified task
                    type. In this case, `elasticsearch`.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.ElasticsearchServiceType"
                service_settings:
                  description: Settings used to install the inference model. These
                    settings are specific to the `elasticsearch` service.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.ElasticsearchServiceSettings"
                task_settings:
                  description: |-
                    Settings to configure the inference task.
                    These settings are specific to the task type you specified.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.ElasticsearchTaskSettings"
              required:
              - service
              - service_settings
            examples:
              PutElasticsearchRequestExample1:
                summary: ELSER sparse embedding task
                description: Run `PUT _inference/sparse_embedding/my-elser-model`
                  to create an inference endpoint that performs a `sparse_embedding`
                  task. The `model_id` must be the ID of one of the built-in ELSER
                  models. The API will automatically download the ELSER model if it
                  isn't already downloaded and then deploy the model.
                value: "{\n    \"service\": \"elasticsearch\",\n    \"service_settings\":
                  {\n        \"adaptive_allocations\": { \n        \"enabled\": true,\n
                  \       \"min_number_of_allocations\": 1,\n        \"max_number_of_allocations\":
                  4\n        },\n        \"num_threads\": 1,\n        \"model_id\":
                  \".elser_model_2\" \n    }\n}"
              PutElasticsearchRequestExample2:
                summary: Elastic rerank task
                description: Run `PUT _inference/rerank/my-elastic-rerank` to create
                  an inference endpoint that performs a rerank task using the built-in
                  Elastic Rerank cross-encoder model.  The `model_id` must be `.rerank-v1`,
                  which is the ID of the built-in Elastic Rerank model. The API will
                  automatically download the Elastic Rerank model if it isn't already
                  downloaded and then deploy the model. Once deployed, the model can
                  be used for semantic re-ranking with a `text_similarity_reranker`
                  retriever.
                value: "{\n    \"service\": \"elasticsearch\",\n    \"service_settings\":
                  {\n        \"model_id\": \".rerank-v1\", \n        \"num_threads\":
                  1,\n        \"adaptive_allocations\": { \n        \"enabled\": true,\n
                  \       \"min_number_of_allocations\": 1,\n        \"max_number_of_allocations\":
                  4\n        }\n    }\n}"
              PutElasticsearchRequestExample3:
                summary: E5 text embedding task
                description: Run `PUT _inference/text_embedding/my-e5-model` to create
                  an inference endpoint that performs a `text_embedding` task. The
                  `model_id` must be the ID of one of the built-in E5 models. The
                  API will automatically download the E5 model if it isn't already
                  downloaded and then deploy the model.
                value: "{\n    \"service\": \"elasticsearch\",\n    \"service_settings\":
                  {\n        \"num_allocations\": 1,\n        \"num_threads\": 1,\n
                  \       \"model_id\": \".multilingual-e5-small\" \n    }\n}"
              PutElasticsearchRequestExample4:
                summary: Eland text embedding task
                description: Run `PUT _inference/text_embedding/my-msmarco-minilm-model`
                  to create an inference endpoint that performs a `text_embedding`
                  task with a model that was uploaded by Eland.
                value: "{\n    \"service\": \"elasticsearch\",\n    \"service_settings\":
                  {\n        \"num_allocations\": 1,\n        \"num_threads\": 1,\n
                  \       \"model_id\": \"msmarco-MiniLM-L12-cos-v5\" \n    }\n}"
              PutElasticsearchRequestExample5:
                summary: Adaptive allocation
                description: Run `PUT _inference/text_embedding/my-e5-model` to create
                  an inference endpoint that performs a `text_embedding` task and
                  to configure adaptive allocations. The API request will automatically
                  download the E5 model if it isn't already downloaded and then deploy
                  the model.
                value: |-
                  {
                      "service": "elasticsearch",
                      "service_settings": {
                          "adaptive_allocations": {
                          "enabled": true,
                          "min_number_of_allocations": 3,
                          "max_number_of_allocations": 10
                          },
                          "num_threads": 1,
                          "model_id": ".multilingual-e5-small"
                      }
                  }
              PutElasticsearchRequestExample6:
                summary: Existing model deployment
                description: Run `PUT _inference/sparse_embedding/use_existing_deployment`
                  to use an already existing model deployment when creating an inference
                  endpoint.
                value: |-
                  {
                      "service": "elasticsearch",
                      "service_settings": {
                          "deployment_id": ".elser_model_2"
                      }
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/inference._types.InferenceEndpointInfoElasticsearch"
              examples:
                PutElasticsearchResponseExample1:
                  description: 'A successful response from `PUT _inference/sparse_embedding/use_existing_deployment`.
                    It contains the model ID and the threads and allocations settings
                    from the model deployment.

                    '
                  value: |-
                    {
                      "inference_id": "use_existing_deployment",
                      "task_type": "sparse_embedding",
                      "service": "elasticsearch",
                      "service_settings": {
                        "num_allocations": 2,
                        "num_threads": 1,
                        "model_id": ".elser_model_2",
                        "deployment_id": ".elser_model_2"
                      },
                      "chunking_settings": {
                        "strategy": "sentence",
                        "max_chunk_size": 250,
                        "sentence_overlap": 1
                      }
                    }
      x-state: Generally available; Added in 8.13.0
      x-codeSamples:
      - lang: Console
        source: "PUT _inference/sparse_embedding/my-elser-model\n{\n    \"service\":
          \"elasticsearch\",\n    \"service_settings\": {\n        \"adaptive_allocations\":
          { \n        \"enabled\": true,\n        \"min_number_of_allocations\": 1,\n
          \       \"max_number_of_allocations\": 4\n        },\n        \"num_threads\":
          1,\n        \"model_id\": \".elser_model_2\" \n    }\n}"
      - lang: Python
        source: |-
          resp = client.inference.put(
              task_type="sparse_embedding",
              inference_id="my-elser-model",
              inference_config={
                  "service": "elasticsearch",
                  "service_settings": {
                      "adaptive_allocations": {
                          "enabled": True,
                          "min_number_of_allocations": 1,
                          "max_number_of_allocations": 4
                      },
                      "num_threads": 1,
                      "model_id": ".elser_model_2"
                  }
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.inference.put({
            task_type: "sparse_embedding",
            inference_id: "my-elser-model",
            inference_config: {
              service: "elasticsearch",
              service_settings: {
                adaptive_allocations: {
                  enabled: true,
                  min_number_of_allocations: 1,
                  max_number_of_allocations: 4,
                },
                num_threads: 1,
                model_id: ".elser_model_2",
              },
            },
          });
      - lang: Ruby
        source: |-
          response = client.inference.put(
            task_type: "sparse_embedding",
            inference_id: "my-elser-model",
            body: {
              "service": "elasticsearch",
              "service_settings": {
                "adaptive_allocations": {
                  "enabled": true,
                  "min_number_of_allocations": 1,
                  "max_number_of_allocations": 4
                },
                "num_threads": 1,
                "model_id": ".elser_model_2"
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->inference()->put([
              "task_type" => "sparse_embedding",
              "inference_id" => "my-elser-model",
              "body" => [
                  "service" => "elasticsearch",
                  "service_settings" => [
                      "adaptive_allocations" => [
                          "enabled" => true,
                          "min_number_of_allocations" => 1,
                          "max_number_of_allocations" => 4,
                      ],
                      "num_threads" => 1,
                      "model_id" => ".elser_model_2",
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"service":"elasticsearch","service_settings":{"adaptive_allocations":{"enabled":true,"min_number_of_allocations":1,"max_number_of_allocations":4},"num_threads":1,"model_id":".elser_model_2"}}''
          "$ELASTICSEARCH_URL/_inference/sparse_embedding/my-elser-model"'
      - lang: Java
        source: |
          client.inference().put(p -> p
              .inferenceId("my-elser-model")
              .taskType(TaskType.SparseEmbedding)
              .inferenceConfig(i -> i
                  .service("elasticsearch")
                  .serviceSettings(JsonData.fromJson("{\"adaptive_allocations\":{\"enabled\":true,\"min_number_of_allocations\":1,\"max_number_of_allocations\":4},\"num_threads\":1,\"model_id\":\".elser_model_2\"}"))
              )
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_inference/{task_type}/{elser_inference_id}":
    put:
      tags:
      - inference
      summary: Create an ELSER inference endpoint
      description: |
        Create an inference endpoint to perform an inference task with the `elser` service.
        You can also deploy ELSER by using the Elasticsearch inference integration.

        > info
        > Your Elasticsearch deployment contains a preconfigured ELSER inference endpoint, you only need to create the enpoint using the API if you want to customize the settings.

        The API request will automatically download and deploy the ELSER model if it isn't already downloaded.

        > info
        > You might see a 502 bad gateway error in the response when using the Kibana Console. This error usually just reflects a timeout, while the model downloads in the background. You can check the download progress in the Machine Learning UI. If using the Python client, you can set the timeout parameter to a higher value.

        After creating the endpoint, wait for the model deployment to complete before using it.
        To verify the deployment status, use the get trained model statistics API.
        Look for `"state": "fully_allocated"` in the response and ensure that the `"allocation_count"` matches the `"target_allocation_count"`.
        Avoid creating multiple endpoints for the same model unless required, as each endpoint consumes significant resources.

        ## Required authorization

        * Cluster privileges: `manage_inference`
      operationId: inference-put-elser
      parameters:
      - in: path
        name: task_type
        description: The type of the inference task that the model will perform.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/inference._types.ElserTaskType"
        style: simple
      - in: path
        name: elser_inference_id
        description: The unique identifier of the inference endpoint.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: timeout
        description: Specifies the amount of time to wait for the inference endpoint
          to be created.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                chunking_settings:
                  externalDocs:
                    url: https://www.elastic.co/docs/explore-analyze/elastic-inference/inference-api#infer-chunking-config
                  description: |-
                    The chunking configuration object.
                    Note that for ELSER endpoints, the max_chunk_size may not exceed `300`.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.InferenceChunkingSettings"
                service:
                  description: The type of service supported for the specified task
                    type. In this case, `elser`.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.ElserServiceType"
                service_settings:
                  description: Settings used to install the inference model. These
                    settings are specific to the `elser` service.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.ElserServiceSettings"
              required:
              - service
              - service_settings
            examples:
              PutElserRequestExample1:
                summary: A sparse embedding task
                description: Run `PUT _inference/sparse_embedding/my-elser-model`
                  to create an inference endpoint that performs a `sparse_embedding`
                  task. The request will automatically download the ELSER model if
                  it isn't already downloaded and then deploy the model.
                value: |-
                  {
                      "service": "elser",
                      "service_settings": {
                          "num_allocations": 1,
                          "num_threads": 1
                      }
                  }
              PutElserRequestExample2:
                summary: Adaptive allocations
                description: Run `PUT _inference/sparse_embedding/my-elser-model`
                  to create an inference endpoint that performs a `sparse_embedding`
                  task with adaptive allocations. When adaptive allocations are enabled,
                  the number of allocations of the model is set automatically based
                  on the current load.
                value: |-
                  {
                      "service": "elser",
                      "service_settings": {
                          "adaptive_allocations": {
                              "enabled": true,
                              "min_number_of_allocations": 3,
                              "max_number_of_allocations": 10
                          },
                          "num_threads": 1
                      }
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/inference._types.InferenceEndpointInfoELSER"
              examples:
                PutElserResponseExample1:
                  description: A successful response when creating an ELSER inference
                    endpoint.
                  value: |-
                    {
                      "inference_id": "my-elser-model",
                      "task_type": "sparse_embedding",
                      "service": "elser",
                      "service_settings": {
                        "num_allocations": 1,
                        "num_threads": 1
                      },
                      "task_settings": {}
                    }
      deprecated: true
      x-state: Generally available; Added in 8.11.0
      x-codeSamples:
      - lang: Console
        source: |-
          PUT _inference/sparse_embedding/my-elser-model
          {
              "service": "elser",
              "service_settings": {
                  "num_allocations": 1,
                  "num_threads": 1
              }
          }
      - lang: Python
        source: |-
          resp = client.inference.put(
              task_type="sparse_embedding",
              inference_id="my-elser-model",
              inference_config={
                  "service": "elser",
                  "service_settings": {
                      "num_allocations": 1,
                      "num_threads": 1
                  }
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.inference.put({
            task_type: "sparse_embedding",
            inference_id: "my-elser-model",
            inference_config: {
              service: "elser",
              service_settings: {
                num_allocations: 1,
                num_threads: 1,
              },
            },
          });
      - lang: Ruby
        source: |-
          response = client.inference.put(
            task_type: "sparse_embedding",
            inference_id: "my-elser-model",
            body: {
              "service": "elser",
              "service_settings": {
                "num_allocations": 1,
                "num_threads": 1
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->inference()->put([
              "task_type" => "sparse_embedding",
              "inference_id" => "my-elser-model",
              "body" => [
                  "service" => "elser",
                  "service_settings" => [
                      "num_allocations" => 1,
                      "num_threads" => 1,
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"service":"elser","service_settings":{"num_allocations":1,"num_threads":1}}''
          "$ELASTICSEARCH_URL/_inference/sparse_embedding/my-elser-model"'
      - lang: Java
        source: |
          client.inference().put(p -> p
              .inferenceId("my-elser-model")
              .taskType(TaskType.SparseEmbedding)
              .inferenceConfig(i -> i
                  .service("elser")
                  .serviceSettings(JsonData.fromJson("{\"num_allocations\":1,\"num_threads\":1}"))
              )
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_inference/{task_type}/{googleaistudio_inference_id}":
    put:
      tags:
      - inference
      summary: Create an Google AI Studio inference endpoint
      description: |
        Create an inference endpoint to perform an inference task with the `googleaistudio` service.

        ## Required authorization

        * Cluster privileges: `manage_inference`
      operationId: inference-put-googleaistudio
      parameters:
      - in: path
        name: task_type
        description: The type of the inference task that the model will perform.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/inference._types.GoogleAiStudioTaskType"
        style: simple
      - in: path
        name: googleaistudio_inference_id
        description: The unique identifier of the inference endpoint.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: timeout
        description: Specifies the amount of time to wait for the inference endpoint
          to be created.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                chunking_settings:
                  externalDocs:
                    url: https://www.elastic.co/docs/explore-analyze/elastic-inference/inference-api#infer-chunking-config
                  description: |-
                    The chunking configuration object.
                    Applies only to the `text_embedding` task type.
                    Not applicable to the `completion` task type.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.InferenceChunkingSettings"
                service:
                  description: The type of service supported for the specified task
                    type. In this case, `googleaistudio`.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.GoogleAiServiceType"
                service_settings:
                  description: Settings used to install the inference model. These
                    settings are specific to the `googleaistudio` service.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.GoogleAiStudioServiceSettings"
              required:
              - service
              - service_settings
            examples:
              PutGoogleAiStudioRequestExample1:
                summary: A completion task
                description: Run `PUT _inference/completion/google_ai_studio_completion`
                  to create an inference endpoint to perform a `completion` task type.
                value: |-
                  {
                      "service": "googleaistudio",
                      "service_settings": {
                          "api_key": "api-key",
                          "model_id": "model-id"
                      }
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/inference._types.InferenceEndpointInfoGoogleAIStudio"
      x-state: Generally available; Added in 8.15.0
      x-codeSamples:
      - lang: Console
        source: |-
          PUT _inference/completion/google_ai_studio_completion
          {
              "service": "googleaistudio",
              "service_settings": {
                  "api_key": "api-key",
                  "model_id": "model-id"
              }
          }
      - lang: Python
        source: |-
          resp = client.inference.put(
              task_type="completion",
              inference_id="google_ai_studio_completion",
              inference_config={
                  "service": "googleaistudio",
                  "service_settings": {
                      "api_key": "api-key",
                      "model_id": "model-id"
                  }
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.inference.put({
            task_type: "completion",
            inference_id: "google_ai_studio_completion",
            inference_config: {
              service: "googleaistudio",
              service_settings: {
                api_key: "api-key",
                model_id: "model-id",
              },
            },
          });
      - lang: Ruby
        source: |-
          response = client.inference.put(
            task_type: "completion",
            inference_id: "google_ai_studio_completion",
            body: {
              "service": "googleaistudio",
              "service_settings": {
                "api_key": "api-key",
                "model_id": "model-id"
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->inference()->put([
              "task_type" => "completion",
              "inference_id" => "google_ai_studio_completion",
              "body" => [
                  "service" => "googleaistudio",
                  "service_settings" => [
                      "api_key" => "api-key",
                      "model_id" => "model-id",
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"service":"googleaistudio","service_settings":{"api_key":"api-key","model_id":"model-id"}}''
          "$ELASTICSEARCH_URL/_inference/completion/google_ai_studio_completion"'
      - lang: Java
        source: |
          client.inference().put(p -> p
              .inferenceId("google_ai_studio_completion")
              .taskType(TaskType.Completion)
              .inferenceConfig(i -> i
                  .service("googleaistudio")
                  .serviceSettings(JsonData.fromJson("{\"api_key\":\"api-key\",\"model_id\":\"model-id\"}"))
              )
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_inference/{task_type}/{googlevertexai_inference_id}":
    put:
      tags:
      - inference
      summary: Create a Google Vertex AI inference endpoint
      description: |
        Create an inference endpoint to perform an inference task with the `googlevertexai` service.

        ## Required authorization

        * Cluster privileges: `manage_inference`
      operationId: inference-put-googlevertexai
      parameters:
      - in: path
        name: task_type
        description: The type of the inference task that the model will perform.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/inference._types.GoogleVertexAITaskType"
        style: simple
      - in: path
        name: googlevertexai_inference_id
        description: The unique identifier of the inference endpoint.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: timeout
        description: Specifies the amount of time to wait for the inference endpoint
          to be created.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                chunking_settings:
                  externalDocs:
                    url: https://www.elastic.co/docs/explore-analyze/elastic-inference/inference-api#infer-chunking-config
                  description: |-
                    The chunking configuration object.
                    Applies only to the `text_embedding` task type.
                    Not applicable to the `rerank`, `completion`, or `chat_completion` task types.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.InferenceChunkingSettings"
                service:
                  description: The type of service supported for the specified task
                    type. In this case, `googlevertexai`.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.GoogleVertexAIServiceType"
                service_settings:
                  description: Settings used to install the inference model. These
                    settings are specific to the `googlevertexai` service.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.GoogleVertexAIServiceSettings"
                task_settings:
                  description: |-
                    Settings to configure the inference task.
                    These settings are specific to the task type you specified.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.GoogleVertexAITaskSettings"
              required:
              - service
              - service_settings
            examples:
              PutGoogleVertexAiRequestExample1:
                summary: A text embedding task
                description: Run `PUT _inference/text_embedding/google_vertex_ai_embeddings`
                  to create an inference endpoint to perform a `text_embedding` task
                  type.
                value: |-
                  {
                      "service": "googlevertexai",
                      "service_settings": {
                          "service_account_json": "service-account-json",
                          "model_id": "model-id",
                          "location": "location",
                          "project_id": "project-id"
                      }
                  }
              PutGoogleVertexAiRequestExample10:
                summary: A chat_completion task for Google Model Garden Meta shared
                  endpoint with single streaming URL provided
                description: Run `PUT _inference/chat_completion/google_model_garden_meta_chat_completion`
                  to create an inference endpoint to perform a `chat_completion` task
                  using Meta's model hosted on Google Model Garden shared endpoint
                  with single streaming URL provided. See the endpoint's `Sample request`
                  page for the variable values used in the URL.
                value: |-
                  {
                      "service": "googlevertexai",
                      "service_settings": {
                          "provider": "meta",
                          "service_account_json": "service-account-json",
                          "streaming_url": "https://%LOCATION_ID%-aiplatform.googleapis.com/v1/projects/%PROJECT_ID%/locations/%LOCATION_ID%/endpoints/%ENDPOINT_ID%/chat/completions"
                      }
                  }
              PutGoogleVertexAiRequestExample11:
                summary: A completion task for Google Model Garden Hugging Face dedicated
                  endpoint with single URL provided for both streaming and non-streaming
                  tasks
                description: Run `PUT _inference/completion/google_model_garden_hugging_face_completion`
                  to create an inference endpoint to perform a `completion` task using
                  Hugging Face's model hosted on Google Model Garden dedicated endpoint
                  with single URL provided for both streaming and non-streaming tasks.
                  See the endpoint's `Sample request` page for the variable values
                  used in the URL.
                value: |-
                  {
                      "service": "googlevertexai",
                      "service_settings": {
                          "provider": "hugging_face",
                          "service_account_json": "service-account-json",
                          "url": "https://%ENDPOINT_ID%.%LOCATION_ID%-%PROJECT_ID%.prediction.vertexai.goog/v1/projects/%PROJECT_ID%/locations/%LOCATION_ID%/endpoints/%ENDPOINT_ID%/chat/completions"
                      }
                  }
              PutGoogleVertexAiRequestExample12:
                summary: A chat_completion task for Google Model Garden Hugging Face
                  dedicated endpoint with single streaming URL provided
                description: Run `PUT _inference/chat_completion/google_model_garden_hugging_face_chat_completion`
                  to create an inference endpoint to perform a `chat_completion` task
                  using Hugging Face's model hosted on Google Model Garden dedicated
                  endpoint with single streaming URL provided. See the endpoint's
                  `Sample request` page for the variable values used in the URL.
                value: |-
                  {
                      "service": "googlevertexai",
                      "service_settings": {
                          "provider": "hugging_face",
                          "service_account_json": "service-account-json",
                          "streaming_url": "https://%ENDPOINT_ID%.%LOCATION_ID%-%PROJECT_ID%.prediction.vertexai.goog/v1/projects/%PROJECT_ID%/locations/%LOCATION_ID%/endpoints/%ENDPOINT_ID%/chat/completions"
                      }
                  }
              PutGoogleVertexAiRequestExample13:
                summary: A completion task for Google Model Garden Hugging Face shared
                  endpoint with single URL provided for both streaming and non-streaming
                  tasks
                description: Run `PUT _inference/completion/google_model_garden_hugging_face_completion`
                  to create an inference endpoint to perform a `completion` task using
                  Hugging Face's model hosted on Google Model Garden shared endpoint
                  with single URL provided for both streaming and non-streaming tasks.
                  See the endpoint's `Sample request` page for the variable values
                  used in the URL.
                value: |-
                  {
                      "service": "googlevertexai",
                      "service_settings": {
                          "provider": "hugging_face",
                          "service_account_json": "service-account-json",
                          "url": "https://%LOCATION_ID%-aiplatform.googleapis.com/v1/projects/%PROJECT_ID%/locations/%LOCATION_ID%/endpoints/%ENDPOINT_ID%/chat/completions"
                      }
                  }
              PutGoogleVertexAiRequestExample14:
                summary: A chat_completion task for Google Model Garden Hugging Face
                  shared endpoint with single streaming URL provided
                description: Run `PUT _inference/chat_completion/google_model_garden_hugging_face_chat_completion`
                  to create an inference endpoint to perform a `chat_completion` task
                  using Hugging Face's model hosted on Google Model Garden shared
                  endpoint with single streaming URL provided. See the endpoint's
                  `Sample request` page for the variable values used in the URL.
                value: |-
                  {
                      "service": "googlevertexai",
                      "service_settings": {
                          "provider": "hugging_face",
                          "service_account_json": "service-account-json",
                          "streaming_url": "https://%LOCATION_ID%-aiplatform.googleapis.com/v1/projects/%PROJECT_ID%/locations/%LOCATION_ID%/endpoints/%ENDPOINT_ID%/chat/completions"
                      }
                  }
              PutGoogleVertexAiRequestExample15:
                summary: A completion task for Google Model Garden Mistral serverless
                  endpoint with separate URLs for streaming and non-streaming tasks
                description: Run `PUT _inference/completion/google_model_garden_mistral_completion`
                  to create an inference endpoint to perform a `completion` task using
                  Mistral's serverless model hosted on Google Model Garden with separate
                  URLs for streaming and non-streaming tasks. See the Mistral model
                  documentation for instructions on how to construct URLs.
                value: |-
                  {
                      "service": "googlevertexai",
                      "service_settings": {
                          "provider": "mistral",
                          "model_id": "mistral-small-2503",
                          "service_account_json": "service-account-json",
                          "url": "https://%LOCATION_ID%-aiplatform.googleapis.com/v1/projects/%PROJECT_ID%/locations/%LOCATION_ID%/publishers/mistralai/models/%MODEL_ID%:rawPredict",
                          "streaming_url": "https://%LOCATION_ID%-aiplatform.googleapis.com/v1/projects/%PROJECT_ID%/locations/%LOCATION_ID%/publishers/mistralai/models/%MODEL_ID%:streamRawPredict"
                      }
                  }
              PutGoogleVertexAiRequestExample16:
                summary: A chat_completion task for Google Model Garden Mistral serverless
                  endpoint with single streaming URL provided
                description: Run `PUT _inference/chat_completion/google_model_garden_mistral_chat_completion`
                  to create an inference endpoint to perform a `chat_completion` task
                  using Mistral's serverless model hosted on Google Model Garden with
                  single streaming URL provided. See the Mistral model documentation
                  for instructions on how to construct the URL.
                value: |-
                  {
                      "service": "googlevertexai",
                      "service_settings": {
                          "provider": "mistral",
                          "model_id": "mistral-small-2503",
                          "service_account_json": "service-account-json",
                          "streaming_url": "https://%LOCATION_ID%-aiplatform.googleapis.com/v1/projects/%PROJECT_ID%/locations/%LOCATION_ID%/publishers/mistralai/models/%MODEL_ID%:streamRawPredict"
                      }
                  }
              PutGoogleVertexAiRequestExample17:
                summary: A completion task for Google Model Garden Mistral dedicated
                  endpoint with single URL provided for both streaming and non-streaming
                  tasks
                description: Run `PUT _inference/completion/google_model_garden_mistral_completion`
                  to create an inference endpoint to perform a `completion` task using
                  Mistral's model hosted on Google Model Garden dedicated endpoint
                  with single URL provided for both streaming and non-streaming tasks.
                  See the endpoint's `Sample request` page for the variable values
                  used in the URL.
                value: |-
                  {
                      "service": "googlevertexai",
                      "service_settings": {
                          "provider": "mistral",
                          "service_account_json": "service-account-json",
                          "url": "https://%ENDPOINT_ID%.%LOCATION_ID%-%PROJECT_ID%.prediction.vertexai.goog/v1/projects/%PROJECT_ID%/locations/%LOCATION_ID%/endpoints/%ENDPOINT_ID%/chat/completions"
                      }
                  }
              PutGoogleVertexAiRequestExample18:
                summary: A chat_completion task for Google Model Garden Mistral dedicated
                  endpoint with single streaming URL provided
                description: Run `PUT _inference/chat_completion/google_model_garden_mistral_chat_completion`
                  to create an inference endpoint to perform a `chat_completion` task
                  using Mistral's model hosted on Google Model Garden dedicated endpoint
                  with single streaming URL provided. See the endpoint's `Sample request`
                  page for the variable values used in the URL.
                value: |-
                  {
                      "service": "googlevertexai",
                      "service_settings": {
                          "provider": "mistral",
                          "service_account_json": "service-account-json",
                          "streaming_url": "https://%ENDPOINT_ID%.%LOCATION_ID%-%PROJECT_ID%.prediction.vertexai.goog/v1/projects/%PROJECT_ID%/locations/%LOCATION_ID%/endpoints/%ENDPOINT_ID%/chat/completions"
                      }
                  }
              PutGoogleVertexAiRequestExample19:
                summary: A completion task for Google Model Garden Mistral shared
                  endpoint with single URL provided for both streaming and non-streaming
                  tasks
                description: Run `PUT _inference/completion/google_model_garden_mistral_completion`
                  to create an inference endpoint to perform a `completion` task using
                  Mistral's model hosted on Google Model Garden shared endpoint with
                  single URL provided for both streaming and non-streaming tasks.
                  See the endpoint's `Sample request` page for the variable values
                  used in the URL.
                value: |-
                  {
                      "service": "googlevertexai",
                      "service_settings": {
                          "provider": "mistral",
                          "service_account_json": "service-account-json",
                          "url": "https://%LOCATION_ID%-aiplatform.googleapis.com/v1/projects/%PROJECT_ID%/locations/%LOCATION_ID%/endpoints/%ENDPOINT_ID%/chat/completions"
                      }
                  }
              PutGoogleVertexAiRequestExample2:
                summary: A rerank task
                description: Run `PUT _inference/rerank/google_vertex_ai_rerank` to
                  create an inference endpoint to perform a `rerank` task type.
                value: |-
                  {
                      "service": "googlevertexai",
                      "service_settings": {
                          "service_account_json": "service-account-json",
                          "project_id": "project-id"
                      }
                  }
              PutGoogleVertexAiRequestExample20:
                summary: A chat_completion task for Google Model Garden Mistral shared
                  endpoint with single streaming URL provided
                description: Run `PUT _inference/chat_completion/google_model_garden_mistral_chat_completion`
                  to create an inference endpoint to perform a `chat_completion` task
                  using Mistral's model hosted on Google Model Garden shared endpoint
                  with single streaming URL provided. See the endpoint's `Sample request`
                  page for the variable values used in the URL.
                value: |-
                  {
                      "service": "googlevertexai",
                      "service_settings": {
                          "provider": "mistral",
                          "service_account_json": "service-account-json",
                          "streaming_url": "https://%LOCATION_ID%-aiplatform.googleapis.com/v1/projects/%PROJECT_ID%/locations/%LOCATION_ID%/endpoints/%ENDPOINT_ID%/chat/completions"
                      }
                  }
              PutGoogleVertexAiRequestExample21:
                summary: A completion task for Google Model Garden AI21 serverless
                  endpoint with separate URLs for streaming and non-streaming tasks
                description: Run `PUT _inference/completion/google_model_garden_ai21_completion`
                  to create an inference endpoint to perform a `completion` task using
                  AI21's model hosted on Google Model Garden serverless endpoint with
                  separate URLs for streaming and non-streaming tasks. See the AI21
                  model documentation for instructions on how to construct URLs.
                value: |-
                  {
                      "service": "googlevertexai",
                      "service_settings": {
                          "provider": "ai21",
                          "service_account_json": "service-account-json",
                          "url": "https://%LOCATION_ID%-aiplatform.googleapis.com/v1/projects/%PROJECT_ID%/locations/%LOCATION_ID%/publishers/ai21/models/%MODEL_ID%:rawPredict",
                          "streaming_url": "https://%LOCATION_ID%-aiplatform.googleapis.com/v1/projects/%PROJECT_ID%/locations/%LOCATION_ID%/publishers/ai21/models/%MODEL_ID%:streamRawPredict"
                      }
                  }
              PutGoogleVertexAiRequestExample22:
                summary: A chat_completion task for Google Model Garden AI21 serverless
                  endpoint with single streaming URL provided
                description: Run `PUT _inference/chat_completion/google_model_garden_ai21_chat_completion`
                  to create an inference endpoint to perform a `chat_completion` task
                  using AI21's model hosted on Google Model Garden serverless endpoint
                  with single streaming URL provided. See the AI21 model documentation
                  for instructions on how to construct URLs.
                value: |-
                  {
                      "service": "googlevertexai",
                      "service_settings": {
                          "provider": "ai21",
                          "service_account_json": "service-account-json",
                          "streaming_url": "https://%LOCATION_ID%-aiplatform.googleapis.com/v1/projects/%PROJECT_ID%/locations/%LOCATION_ID%/publishers/ai21/models/%MODEL_ID%:streamRawPredict"
                      }
                  }
              PutGoogleVertexAiRequestExample3:
                summary: A completion task for Google Model Garden Anthropic serverless
                  endpoint with separate URLs for streaming and non-streaming tasks
                description: Run `PUT _inference/completion/google_model_garden_anthropic_completion`
                  to create an inference endpoint to perform a `completion` task using
                  Anthropic's serverless model hosted on Google Model Garden with
                  separate URLs for streaming and non-streaming tasks. See the Anthropic
                  model documentation for instructions on how to construct URLs.
                value: |-
                  {
                      "service": "googlevertexai",
                      "service_settings": {
                          "provider": "anthropic",
                          "service_account_json": "service-account-json",
                          "url": "https://%LOCATION_ID%-aiplatform.googleapis.com/v1/projects/%PROJECT_ID%/locations/%LOCATION_ID%/publishers/anthropic/models/%MODEL_ID%:rawPredict",
                          "streaming_url": "https://%LOCATION_ID%-aiplatform.googleapis.com/v1/projects/%PROJECT_ID%/locations/%LOCATION_ID%/publishers/anthropic/models/%MODEL_ID%:streamRawPredict"
                      },
                      "task_settings": {
                          "max_tokens": 128
                      }
                  }
              PutGoogleVertexAiRequestExample4:
                summary: A chat_completion task for Google Model Garden Anthropic
                  serverless endpoint with single streaming URL provided
                description: Run `PUT _inference/chat_completion/google_model_garden_anthropic_chat_completion`
                  to create an inference endpoint to perform a `chat_completion` task
                  using Anthropic's serverless model hosted on Google Model Garden
                  with single streaming URL provided. See the Anthropic model documentation
                  for instructions on how to construct the URL.
                value: |-
                  {
                      "service": "googlevertexai",
                      "service_settings": {
                          "provider": "anthropic",
                          "service_account_json": "service-account-json",
                          "streaming_url": "https://%LOCATION_ID%-aiplatform.googleapis.com/v1/projects/%PROJECT_ID%/locations/%LOCATION_ID%/publishers/anthropic/models/%MODEL_ID%:streamRawPredict"
                      },
                      "task_settings": {
                          "max_tokens": 128
                      }
                  }
              PutGoogleVertexAiRequestExample5:
                summary: A completion task for Google Model Garden Meta serverless
                  endpoint with single URL provided for both streaming and non-streaming
                  tasks
                description: Run `PUT _inference/completion/google_model_garden_meta_completion`
                  to create an inference endpoint to perform a `completion` task using
                  Meta's serverless model hosted on Google Model Garden with single
                  URL provided for both streaming and non-streaming tasks. See the
                  Meta model documentation for instructions on how to construct the
                  URL.
                value: |-
                  {
                      "service": "googlevertexai",
                      "service_settings": {
                          "provider": "meta",
                          "model_id": "meta/llama-3.3-70b-instruct-maas",
                          "service_account_json": "service-account-json",
                          "url": "https://%LOCATION_ID%-aiplatform.googleapis.com/v1/projects/%PROJECT_ID%/locations/%LOCATION_ID%/endpoints/openapi/chat/completions"
                      }
                  }
              PutGoogleVertexAiRequestExample6:
                summary: A chat_completion task for Google Model Garden Meta serverless
                  endpoint with single streaming URL provided
                description: Run `PUT _inference/chat_completion/google_model_garden_meta_chat_completion`
                  to create an inference endpoint to perform a `chat_completion` task
                  using Meta's serverless model hosted on Google Model Garden with
                  single streaming URL provided. See the Meta model documentation
                  for instructions on how to construct the URL.
                value: |-
                  {
                      "service": "googlevertexai",
                      "service_settings": {
                          "provider": "meta",
                          "model_id": "meta/llama-3.3-70b-instruct-maas",
                          "service_account_json": "service-account-json",
                          "streaming_url": "https://%LOCATION_ID%-aiplatform.googleapis.com/v1/projects/%PROJECT_ID%/locations/%LOCATION_ID%/endpoints/openapi/chat/completions"
                      }
                  }
              PutGoogleVertexAiRequestExample7:
                summary: A completion task for Google Model Garden Meta dedicated
                  endpoint with single URL provided for both streaming and non-streaming
                  tasks
                description: Run `PUT _inference/completion/google_model_garden_meta_completion`
                  to create an inference endpoint to perform a `completion` task using
                  Meta's model hosted on Google Model Garden dedicated endpoint with
                  single URL provided for both streaming and non-streaming tasks.
                  See the endpoint's `Sample request` page for the variable values
                  used in the URL.
                value: |-
                  {
                      "service": "googlevertexai",
                      "service_settings": {
                          "provider": "meta",
                          "service_account_json": "service-account-json",
                          "url": "https://%ENDPOINT_ID%.%LOCATION_ID%-fasttryout.prediction.vertexai.goog/v1/projects/%PROJECT_ID%/locations/%LOCATION_ID%/endpoints/%ENDPOINT_ID%/chat/completions"
                      }
                  }
              PutGoogleVertexAiRequestExample8:
                summary: A chat_completion task for Google Model Garden Meta dedicated
                  endpoint with single streaming URL provided
                description: Run `PUT _inference/chat_completion/google_model_garden_meta_chat_completion`
                  to create an inference endpoint to perform a `chat_completion` task
                  using Meta's model hosted on Google Model Garden dedicated endpoint
                  with single streaming URL provided. See the endpoint's `Sample request`
                  page for the variable values used in the URL.
                value: |-
                  {
                      "service": "googlevertexai",
                      "service_settings": {
                          "provider": "meta",
                          "service_account_json": "service-account-json",
                          "streaming_url": "https://%ENDPOINT_ID%.%LOCATION_ID%-fasttryout.prediction.vertexai.goog/v1/projects/%PROJECT_ID%/locations/%LOCATION_ID%/endpoints/%ENDPOINT_ID%/chat/completions"
                      }
                  }
              PutGoogleVertexAiRequestExample9:
                summary: A completion task for Google Model Garden Meta shared endpoint
                  with single URL provided for both streaming and non-streaming tasks
                description: Run `PUT _inference/completion/google_model_garden_meta_completion`
                  to create an inference endpoint to perform a `completion` task using
                  Meta's model hosted on Google Model Garden shared endpoint with
                  single URL provided for both streaming and non-streaming tasks.
                  See the endpoint's `Sample request` page for the variable values
                  used in the URL.
                value: |-
                  {
                      "service": "googlevertexai",
                      "service_settings": {
                          "provider": "meta",
                          "service_account_json": "service-account-json",
                          "url": "https://%LOCATION_ID%-aiplatform.googleapis.com/v1/projects/%PROJECT_ID%/locations/%LOCATION_ID%/endpoints/%ENDPOINT_ID%/chat/completions"
                      }
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/inference._types.InferenceEndpointInfoGoogleVertexAI"
      x-state: Generally available; Added in 8.15.0
      x-codeSamples:
      - lang: Console
        source: |-
          PUT _inference/text_embedding/google_vertex_ai_embeddingss
          {
              "service": "googlevertexai",
              "service_settings": {
                  "service_account_json": "service-account-json",
                  "model_id": "model-id",
                  "location": "location",
                  "project_id": "project-id"
              }
          }
      - lang: Python
        source: |-
          resp = client.inference.put(
              task_type="text_embedding",
              inference_id="google_vertex_ai_embeddingss",
              inference_config={
                  "service": "googlevertexai",
                  "service_settings": {
                      "service_account_json": "service-account-json",
                      "model_id": "model-id",
                      "location": "location",
                      "project_id": "project-id"
                  }
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.inference.put({
            task_type: "text_embedding",
            inference_id: "google_vertex_ai_embeddingss",
            inference_config: {
              service: "googlevertexai",
              service_settings: {
                service_account_json: "service-account-json",
                model_id: "model-id",
                location: "location",
                project_id: "project-id",
              },
            },
          });
      - lang: Ruby
        source: |-
          response = client.inference.put(
            task_type: "text_embedding",
            inference_id: "google_vertex_ai_embeddingss",
            body: {
              "service": "googlevertexai",
              "service_settings": {
                "service_account_json": "service-account-json",
                "model_id": "model-id",
                "location": "location",
                "project_id": "project-id"
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->inference()->put([
              "task_type" => "text_embedding",
              "inference_id" => "google_vertex_ai_embeddingss",
              "body" => [
                  "service" => "googlevertexai",
                  "service_settings" => [
                      "service_account_json" => "service-account-json",
                      "model_id" => "model-id",
                      "location" => "location",
                      "project_id" => "project-id",
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"service":"googlevertexai","service_settings":{"service_account_json":"service-account-json","model_id":"model-id","location":"location","project_id":"project-id"}}''
          "$ELASTICSEARCH_URL/_inference/text_embedding/google_vertex_ai_embeddingss"'
      - lang: Java
        source: |
          client.inference().put(p -> p
              .inferenceId("google_vertex_ai_embeddingss")
              .taskType(TaskType.TextEmbedding)
              .inferenceConfig(i -> i
                  .service("googlevertexai")
                  .serviceSettings(JsonData.fromJson("{\"service_account_json\":\"service-account-json\",\"model_id\":\"model-id\",\"location\":\"location\",\"project_id\":\"project-id\"}"))
              )
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_inference/{task_type}/{groq_inference_id}":
    put:
      tags:
      - inference
      summary: Create a Groq inference endpoint
      description: |
        Create an inference endpoint to perform an inference task with the `groq` service.

        ## Required authorization

        * Cluster privileges: `manage_inference`
      operationId: inference-put-groq
      parameters:
      - in: path
        name: task_type
        description: The type of the inference task that the model will perform.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/inference._types.GroqTaskType"
        style: simple
      - in: path
        name: groq_inference_id
        description: The unique identifier of the inference endpoint.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: timeout
        description: Specifies the amount of time to wait for the inference endpoint
          to be created.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                service:
                  description: The type of service supported for the specified task
                    type. In this case, `groq`.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.GroqServiceType"
                service_settings:
                  description: Settings used to install the inference model. These
                    settings are specific to the `groq` service.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.GroqServiceSettings"
              required:
              - service
              - service_settings
            examples:
              PutGroqRequestExample1:
                description: Run `PUT _inference/chat_completion/groq-chat-completion`
                  to create a Groq inference endpoint that performs a `chat_completion`
                  task.
                value: "{\n  \"service\": \"groq\",\n  \"service_settings\": {\n    \"api_key\":
                  \"groq-api-key\",\n    \"model_id\": \"llama-3.3-70b-versatile\"
                  \n  }\n}"
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/inference._types.InferenceEndpointInfoGroq"
      x-state: Generally available; Added in 9.3.0
      x-codeSamples:
      - lang: Console
        source: "PUT _inference/chat_completion/groq-chat-completion\n{\n  \"service\":
          \"groq\",\n  \"service_settings\": {\n    \"api_key\": \"groq-api-key\",\n
          \   \"model_id\": \"llama-3.3-70b-versatile\" \n  }\n}"
      - lang: Python
        source: |-
          resp = client.inference.put(
              task_type="chat_completion",
              inference_id="groq-chat-completion",
              inference_config={
                  "service": "groq",
                  "service_settings": {
                      "api_key": "groq-api-key",
                      "model_id": "llama-3.3-70b-versatile"
                  }
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.inference.put({
            task_type: "chat_completion",
            inference_id: "groq-chat-completion",
            inference_config: {
              service: "groq",
              service_settings: {
                api_key: "groq-api-key",
                model_id: "llama-3.3-70b-versatile",
              },
            },
          });
      - lang: Ruby
        source: |-
          response = client.inference.put(
            task_type: "chat_completion",
            inference_id: "groq-chat-completion",
            body: {
              "service": "groq",
              "service_settings": {
                "api_key": "groq-api-key",
                "model_id": "llama-3.3-70b-versatile"
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->inference()->put([
              "task_type" => "chat_completion",
              "inference_id" => "groq-chat-completion",
              "body" => [
                  "service" => "groq",
                  "service_settings" => [
                      "api_key" => "groq-api-key",
                      "model_id" => "llama-3.3-70b-versatile",
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"service":"groq","service_settings":{"api_key":"groq-api-key","model_id":"llama-3.3-70b-versatile"}}''
          "$ELASTICSEARCH_URL/_inference/chat_completion/groq-chat-completion"'
      - lang: Java
        source: |
          client.inference().put(p -> p
              .inferenceId("groq-chat-completion")
              .taskType(TaskType.ChatCompletion)
              .inferenceConfig(i -> i
                  .service("groq")
                  .serviceSettings(JsonData.fromJson("{\"api_key\":\"groq-api-key\",\"model_id\":\"llama-3.3-70b-versatile\"}"))
              )
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_inference/{task_type}/{huggingface_inference_id}":
    put:
      tags:
      - inference
      summary: Create a Hugging Face inference endpoint
      description: |
        Create an inference endpoint to perform an inference task with the `hugging_face` service.
        Supported tasks include: `text_embedding`, `completion`, and `chat_completion`.

        To configure the endpoint, first visit the Hugging Face Inference Endpoints page and create a new endpoint.
        Select a model that supports the task you intend to use.

        For Elastic's `text_embedding` task:
        The selected model must support the `Sentence Embeddings` task. On the new endpoint creation page, select the `Sentence Embeddings` task under the `Advanced Configuration` section.
        After the endpoint has initialized, copy the generated endpoint URL.
        Recommended models for `text_embedding` task:

        * `all-MiniLM-L6-v2`
        * `all-MiniLM-L12-v2`
        * `all-mpnet-base-v2`
        * `e5-base-v2`
        * `e5-small-v2`
        * `multilingual-e5-base`
        * `multilingual-e5-small`

        For Elastic's `chat_completion` and `completion` tasks:
        The selected model must support the `Text Generation` task and expose OpenAI API. HuggingFace supports both serverless and dedicated endpoints for `Text Generation`. When creating dedicated endpoint select the `Text Generation` task.
        After the endpoint is initialized (for dedicated) or ready (for serverless), ensure it supports the OpenAI API and includes `/v1/chat/completions` part in URL. Then, copy the full endpoint URL for use.
        Recommended models for `chat_completion` and `completion` tasks:

        * `Mistral-7B-Instruct-v0.2`
        * `QwQ-32B`
        * `Phi-3-mini-128k-instruct`

        For Elastic's `rerank` task:
        The selected model must support the `sentence-ranking` task and expose OpenAI API.
        HuggingFace supports only dedicated (not serverless) endpoints for `Rerank` so far.
        After the endpoint is initialized, copy the full endpoint URL for use.
        Tested models for `rerank` task:

        * `bge-reranker-base`
        * `jina-reranker-v1-turbo-en-GGUF`

        ## Required authorization

        * Cluster privileges: `manage_inference`
      operationId: inference-put-hugging-face
      parameters:
      - in: path
        name: task_type
        description: The type of the inference task that the model will perform.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/inference._types.HuggingFaceTaskType"
        style: simple
      - in: path
        name: huggingface_inference_id
        description: The unique identifier of the inference endpoint.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: timeout
        description: Specifies the amount of time to wait for the inference endpoint
          to be created.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                chunking_settings:
                  externalDocs:
                    url: https://www.elastic.co/docs/explore-analyze/elastic-inference/inference-api#infer-chunking-config
                  description: |-
                    The chunking configuration object.
                    Applies only to the `text_embedding` task type.
                    Not applicable to the `rerank`, `completion`, or `chat_completion` task types.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.InferenceChunkingSettings"
                service:
                  description: The type of service supported for the specified task
                    type. In this case, `hugging_face`.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.HuggingFaceServiceType"
                service_settings:
                  description: Settings used to install the inference model. These
                    settings are specific to the `hugging_face` service.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.HuggingFaceServiceSettings"
                task_settings:
                  description: |-
                    Settings to configure the inference task.
                    These settings are specific to the task type you specified.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.HuggingFaceTaskSettings"
              required:
              - service
              - service_settings
            examples:
              PutHuggingFaceRequestExample1:
                summary: A text embedding task
                description: Run `PUT _inference/text_embedding/hugging-face-embeddings`
                  to create an inference endpoint that performs a `text_embedding`
                  task type.
                value: "{\n    \"service\": \"hugging_face\",\n    \"service_settings\":
                  {\n        \"api_key\": \"hugging-face-access-token\", \n        \"url\":
                  \"url-endpoint\" \n    }\n}"
              PutHuggingFaceRequestExample2:
                summary: A rerank task
                description: Run `PUT _inference/rerank/hugging-face-rerank` to create
                  an inference endpoint that performs a `rerank` task type.
                value: "{\n    \"service\": \"hugging_face\",\n    \"service_settings\":
                  {\n        \"api_key\": \"hugging-face-access-token\", \n        \"url\":
                  \"url-endpoint\" \n    },\n    \"task_settings\": {\n        \"return_documents\":
                  true,\n        \"top_n\": 3\n    }\n}"
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/inference._types.InferenceEndpointInfoHuggingFace"
      x-state: Generally available; Added in 8.12.0
      x-codeSamples:
      - lang: Console
        source: "PUT _inference/text_embedding/hugging-face-embeddings\n{\n    \"service\":
          \"hugging_face\",\n    \"service_settings\": {\n        \"api_key\": \"hugging-face-access-token\",
          \n        \"url\": \"url-endpoint\" \n    }\n}"
      - lang: Python
        source: |-
          resp = client.inference.put(
              task_type="text_embedding",
              inference_id="hugging-face-embeddings",
              inference_config={
                  "service": "hugging_face",
                  "service_settings": {
                      "api_key": "hugging-face-access-token",
                      "url": "url-endpoint"
                  }
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.inference.put({
            task_type: "text_embedding",
            inference_id: "hugging-face-embeddings",
            inference_config: {
              service: "hugging_face",
              service_settings: {
                api_key: "hugging-face-access-token",
                url: "url-endpoint",
              },
            },
          });
      - lang: Ruby
        source: |-
          response = client.inference.put(
            task_type: "text_embedding",
            inference_id: "hugging-face-embeddings",
            body: {
              "service": "hugging_face",
              "service_settings": {
                "api_key": "hugging-face-access-token",
                "url": "url-endpoint"
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->inference()->put([
              "task_type" => "text_embedding",
              "inference_id" => "hugging-face-embeddings",
              "body" => [
                  "service" => "hugging_face",
                  "service_settings" => [
                      "api_key" => "hugging-face-access-token",
                      "url" => "url-endpoint",
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"service":"hugging_face","service_settings":{"api_key":"hugging-face-access-token","url":"url-endpoint"}}''
          "$ELASTICSEARCH_URL/_inference/text_embedding/hugging-face-embeddings"'
      - lang: Java
        source: |
          client.inference().put(p -> p
              .inferenceId("hugging-face-embeddings")
              .taskType(TaskType.TextEmbedding)
              .inferenceConfig(i -> i
                  .service("hugging_face")
                  .serviceSettings(JsonData.fromJson("{\"api_key\":\"hugging-face-access-token\",\"url\":\"url-endpoint\"}"))
              )
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_inference/{task_type}/{jinaai_inference_id}":
    put:
      tags:
      - inference
      summary: Create an JinaAI inference endpoint
      description: |
        Create an inference endpoint to perform an inference task with the `jinaai` service.

        To review the available `rerank` models, refer to <https://jina.ai/reranker>.
        To review the available `embedding` and `text_embedding` models, refer to <https://jina.ai/embeddings/>.

        ## Required authorization

        * Cluster privileges: `manage_inference`
      operationId: inference-put-jinaai
      parameters:
      - in: path
        name: task_type
        description: The type of the inference task that the model will perform.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/inference._types.JinaAITaskType"
        style: simple
      - in: path
        name: jinaai_inference_id
        description: The unique identifier of the inference endpoint.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: timeout
        description: Specifies the amount of time to wait for the inference endpoint
          to be created.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                chunking_settings:
                  externalDocs:
                    url: https://www.elastic.co/docs/explore-analyze/elastic-inference/inference-api#infer-chunking-config
                  description: |-
                    The chunking configuration object.
                    Applies only to the `embedding` and text_embedding` task types.
                    Not applicable to the `rerank` task type.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.InferenceChunkingSettings"
                service:
                  description: The type of service supported for the specified task
                    type. In this case, `jinaai`.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.JinaAIServiceType"
                service_settings:
                  description: Settings used to install the inference model. These
                    settings are specific to the `jinaai` service.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.JinaAIServiceSettings"
                task_settings:
                  description: |-
                    Settings to configure the inference task.
                    These settings are specific to the task type you specified.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.JinaAITaskSettings"
              required:
              - service
              - service_settings
            examples:
              PutJinaAiRequestExample1:
                summary: A text embedding task
                description: Run `PUT _inference/text_embedding/jinaai-embeddings`
                  to create an inference endpoint for text embedding tasks using the
                  JinaAI service.
                value: |-
                  {
                      "service": "jinaai",
                      "service_settings": {
                          "model_id": "jina-embeddings-v3",
                          "api_key": "JinaAi-Api-key"
                      }
                  }
              PutJinaAiRequestExample2:
                summary: A rerank task
                description: Run `PUT _inference/rerank/jinaai-rerank` to create an
                  inference endpoint for rerank tasks using the JinaAI service.
                value: |-
                  {
                      "service": "jinaai",
                      "service_settings": {
                          "api_key": "JinaAI-Api-key",
                          "model_id": "jina-reranker-v2-base-multilingual"
                      },
                      "task_settings": {
                          "top_n": 10,
                          "return_documents": true
                      }
                  }
              PutJinaAiRequestExample3:
                summary: An embedding task using a multimodal model
                description: Run `PUT _inference/embedding/jinaai-embeddings-multimodal`
                  to create an inference endpoint for embedding tasks using an embedding
                  model that supports multimodal inputs (e.g. `jina-embeddings-v4`)
                  via the JinaAI service.
                value: |-
                  {
                      "service": "jinaai",
                      "service_settings": {
                          "model_id": "jina-embeddings-v4",
                          "api_key": "JinaAi-Api-key"
                      }
                  }
              PutJinaAiRequestExample4:
                summary: An embedding task using a non-multimodal model
                description: Run `PUT _inference/embedding/jinaai-embeddings-text-only`
                  to create an inference endpoint for embedding tasks using an embedding
                  model that does not support multimodal inputs (e.g. `jina-embeddings-v3`)
                  via the JinaAI service.
                value: |-
                  {
                      "service": "jinaai",
                      "service_settings": {
                          "model_id": "jina-embeddings-v3",
                          "api_key": "JinaAi-Api-key",
                          "multimodal_model": false
                      }
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/inference._types.InferenceEndpointInfoJinaAi"
              examples:
                PutJinaAiResponseExample1:
                  summary: A text embedding task
                  description: A successful response when creating a JinaAI `text_embedding`
                    inference endpoint.
                  value: |-
                    {
                       "inference_id": "jinaai-embeddings",
                       "task_type": "text_embedding",
                       "service": "jinaai",
                       "service_settings": {
                           "model_id": "jina-embeddings-v3",
                           "rate_limit": {
                               "requests_per_minute": 2000
                           },
                           "dimensions": 1024,
                           "embedding_type": "float",
                           "similarity": "dot_product"
                       },
                       "chunking_settings": {
                           "strategy": "sentence",
                           "max_chunk_size": 250,
                           "sentence_overlap": 1
                       }
                    }
                PutJinaAiResponseExample2:
                  summary: A rerank task
                  description: A successful response when creating a JinaAI `rerank`
                    inference endpoint.
                  value: |-
                    {
                      "inference_id": "jinaai-rerank",
                      "task_type": "rerank",
                      "service": "jinaai",
                      "service_settings": {
                        "model_id": "jina-reranker-v2-base-multilingual",
                        "rate_limit": {
                          "requests_per_minute": 2000
                        }
                      },
                      "task_settings": {
                        "top_n": 10,
                        "return_documents": true
                      }
                    }
                PutJinaAiResponseExample3:
                  summary: An embedding task using a multimodal model
                  description: A successful response when creating a JinaAI `embedding`
                    inference endpoint.
                  value: |-
                    {
                      "inference_id": "jinaai-embeddings-multimodal",
                      "task_type": "embedding",
                      "service": "jinaai",
                      "service_settings": {
                        "model_id": "jina-embeddings-v4",
                        "rate_limit": {
                          "requests_per_minute": 2000
                        },
                        "dimensions": 2048,
                        "embedding_type": "float",
                        "similarity": "dot_product",
                        "multimodal_model": true
                      },
                      "chunking_settings": {
                        "strategy": "sentence",
                        "max_chunk_size": 250,
                        "sentence_overlap": 1
                      }
                    }
                PutJinaAiResponseExample4:
                  summary: An embedding task using a non-multimodal model
                  description: A successful response when creating a JinaAI `embedding`
                    inference endpoint with a model that does not support multimodal
                    inputs.
                  value: |-
                    {
                      "inference_id": "jinaai-embeddings-text-only",
                      "task_type": "embedding",
                      "service": "jinaai",
                      "service_settings": {
                        "model_id": "jina-embeddings-v3",
                        "rate_limit": {
                          "requests_per_minute": 2000
                        },
                        "dimensions": 1024,
                        "embedding_type": "float",
                        "similarity": "dot_product",
                        "multimodal_model": false
                      },
                      "chunking_settings": {
                        "strategy": "sentence",
                        "max_chunk_size": 250,
                        "sentence_overlap": 1
                      }
                    }
      x-state: Generally available; Added in 8.18.0
      x-codeSamples:
      - lang: Console
        source: |-
          PUT _inference/text_embedding/jinaai-embeddings
          {
              "service": "jinaai",
              "service_settings": {
                  "model_id": "jina-embeddings-v3",
                  "api_key": "JinaAi-Api-key"
              }
          }
      - lang: Python
        source: |-
          resp = client.inference.put(
              task_type="text_embedding",
              inference_id="jinaai-embeddings",
              inference_config={
                  "service": "jinaai",
                  "service_settings": {
                      "model_id": "jina-embeddings-v3",
                      "api_key": "JinaAi-Api-key"
                  }
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.inference.put({
            task_type: "text_embedding",
            inference_id: "jinaai-embeddings",
            inference_config: {
              service: "jinaai",
              service_settings: {
                model_id: "jina-embeddings-v3",
                api_key: "JinaAi-Api-key",
              },
            },
          });
      - lang: Ruby
        source: |-
          response = client.inference.put(
            task_type: "text_embedding",
            inference_id: "jinaai-embeddings",
            body: {
              "service": "jinaai",
              "service_settings": {
                "model_id": "jina-embeddings-v3",
                "api_key": "JinaAi-Api-key"
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->inference()->put([
              "task_type" => "text_embedding",
              "inference_id" => "jinaai-embeddings",
              "body" => [
                  "service" => "jinaai",
                  "service_settings" => [
                      "model_id" => "jina-embeddings-v3",
                      "api_key" => "JinaAi-Api-key",
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"service":"jinaai","service_settings":{"model_id":"jina-embeddings-v3","api_key":"JinaAi-Api-key"}}''
          "$ELASTICSEARCH_URL/_inference/text_embedding/jinaai-embeddings"'
      - lang: Java
        source: |
          client.inference().put(p -> p
              .inferenceId("jinaai-embeddings")
              .taskType(TaskType.TextEmbedding)
              .inferenceConfig(i -> i
                  .service("jinaai")
                  .serviceSettings(JsonData.fromJson("{\"model_id\":\"jina-embeddings-v3\",\"api_key\":\"JinaAi-Api-key\"}"))
              )
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_inference/{task_type}/{llama_inference_id}":
    put:
      tags:
      - inference
      summary: Create a Llama inference endpoint
      description: |
        Create an inference endpoint to perform an inference task with the `llama` service.

        ## Required authorization

        * Cluster privileges: `manage_inference`
      operationId: inference-put-llama
      parameters:
      - in: path
        name: task_type
        description: The type of the inference task that the model will perform.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/inference._types.LlamaTaskType"
        style: simple
      - in: path
        name: llama_inference_id
        description: The unique identifier of the inference endpoint.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: timeout
        description: Specifies the amount of time to wait for the inference endpoint
          to be created.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                chunking_settings:
                  externalDocs:
                    url: https://www.elastic.co/docs/explore-analyze/elastic-inference/inference-api#infer-chunking-config
                  description: |-
                    The chunking configuration object.
                    Applies only to the `text_embedding` task type.
                    Not applicable to the `completion` or `chat_completion` task types.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.InferenceChunkingSettings"
                service:
                  description: The type of service supported for the specified task
                    type. In this case, `llama`.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.LlamaServiceType"
                service_settings:
                  description: Settings used to install the inference model. These
                    settings are specific to the `llama` service.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.LlamaServiceSettings"
              required:
              - service
              - service_settings
            examples:
              PutLlamaRequestExample1:
                description: Run `PUT _inference/text_embedding/llama-text-embedding`
                  to create a Llama inference endpoint that performs a `text_embedding`
                  task.
                value: "{\n  \"service\": \"llama\",\n  \"service_settings\": {\n
                  \   \"url\": \"http://localhost:8321/v1/inference/embeddings\",\n
                  \   \"dimensions\": 384,\n    \"model_id\": \"all-MiniLM-L6-v2\"
                  \n  }\n}"
              PutLlamaRequestExample2:
                description: Run `PUT _inference/completion/llama-completion` to create
                  a Llama inference endpoint that performs a `completion` task.
                value: "{\n  \"service\": \"llama\",\n  \"service_settings\": {\n
                  \   \"url\": \"http://localhost:8321/v1/openai/v1/chat/completions\",\n
                  \   \"model_id\": \"llama3.2:3b\" \n  }\n}"
              PutLlamaRequestExample3:
                description: Run `PUT _inference/chat_completion/llama-chat-completion`
                  to create a Llama inference endpoint that performs a `chat_completion`
                  task.
                value: "{\n  \"service\": \"llama\",\n  \"service_settings\": {\n
                  \   \"url\": \"http://localhost:8321/v1/openai/v1/chat/completions\",\n
                  \   \"model_id\": \"llama3.2:3b\" \n  }\n}"
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/inference._types.InferenceEndpointInfoLlama"
      x-state: Generally available; Added in 9.2.0
      x-codeSamples:
      - lang: Console
        source: "PUT _inference/text_embedding/llama-text-embedding\n{\n  \"service\":
          \"llama\",\n  \"service_settings\": {\n    \"url\": \"http://localhost:8321/v1/inference/embeddings\",\n
          \   \"dimensions\": 384,\n    \"model_id\": \"all-MiniLM-L6-v2\" \n  }\n}"
      - lang: Python
        source: |-
          resp = client.inference.put(
              task_type="text_embedding",
              inference_id="llama-text-embedding",
              inference_config={
                  "service": "llama",
                  "service_settings": {
                      "url": "http://localhost:8321/v1/inference/embeddings",
                      "dimensions": 384,
                      "model_id": "all-MiniLM-L6-v2"
                  }
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.inference.put({
            task_type: "text_embedding",
            inference_id: "llama-text-embedding",
            inference_config: {
              service: "llama",
              service_settings: {
                url: "http://localhost:8321/v1/inference/embeddings",
                dimensions: 384,
                model_id: "all-MiniLM-L6-v2",
              },
            },
          });
      - lang: Ruby
        source: |-
          response = client.inference.put(
            task_type: "text_embedding",
            inference_id: "llama-text-embedding",
            body: {
              "service": "llama",
              "service_settings": {
                "url": "http://localhost:8321/v1/inference/embeddings",
                "dimensions": 384,
                "model_id": "all-MiniLM-L6-v2"
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->inference()->put([
              "task_type" => "text_embedding",
              "inference_id" => "llama-text-embedding",
              "body" => [
                  "service" => "llama",
                  "service_settings" => [
                      "url" => "http://localhost:8321/v1/inference/embeddings",
                      "dimensions" => 384,
                      "model_id" => "all-MiniLM-L6-v2",
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"service":"llama","service_settings":{"url":"http://localhost:8321/v1/inference/embeddings","dimensions":384,"model_id":"all-MiniLM-L6-v2"}}''
          "$ELASTICSEARCH_URL/_inference/text_embedding/llama-text-embedding"'
      - lang: Java
        source: |
          client.inference().put(p -> p
              .inferenceId("llama-text-embedding")
              .taskType(TaskType.TextEmbedding)
              .inferenceConfig(i -> i
                  .service("llama")
                  .serviceSettings(JsonData.fromJson("{\"url\":\"http://localhost:8321/v1/inference/embeddings\",\"dimensions\":384,\"model_id\":\"all-MiniLM-L6-v2\"}"))
              )
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_inference/{task_type}/{mistral_inference_id}":
    put:
      tags:
      - inference
      summary: Create a Mistral inference endpoint
      description: |
        Create an inference endpoint to perform an inference task with the `mistral` service.

        ## Required authorization

        * Cluster privileges: `manage_inference`
      operationId: inference-put-mistral
      parameters:
      - in: path
        name: task_type
        description: The type of the inference task that the model will perform.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/inference._types.MistralTaskType"
        style: simple
      - in: path
        name: mistral_inference_id
        description: The unique identifier of the inference endpoint.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: timeout
        description: Specifies the amount of time to wait for the inference endpoint
          to be created.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                chunking_settings:
                  externalDocs:
                    url: https://www.elastic.co/docs/explore-analyze/elastic-inference/inference-api#infer-chunking-config
                  description: |-
                    The chunking configuration object.
                    Applies only to the `text_embedding` task type.
                    Not applicable to the `completion` or `chat_completion` task types.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.InferenceChunkingSettings"
                service:
                  description: The type of service supported for the specified task
                    type. In this case, `mistral`.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.MistralServiceType"
                service_settings:
                  description: Settings used to install the inference model. These
                    settings are specific to the `mistral` service.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.MistralServiceSettings"
              required:
              - service
              - service_settings
            examples:
              PutMistralRequestExample1:
                description: Run `PUT _inference/text_embedding/mistral-embeddings-test`
                  to create a Mistral inference endpoint that performs a text embedding
                  task.
                value: "{\n  \"service\": \"mistral\",\n  \"service_settings\": {\n
                  \   \"api_key\": \"Mistral-API-Key\",\n    \"model\": \"mistral-embed\"
                  \n  }\n}"
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/inference._types.InferenceEndpointInfoMistral"
      x-state: Generally available; Added in 8.15.0
      x-codeSamples:
      - lang: Console
        source: "PUT _inference/text_embedding/mistral-embeddings-test\n{\n  \"service\":
          \"mistral\",\n  \"service_settings\": {\n    \"api_key\": \"Mistral-API-Key\",\n
          \   \"model\": \"mistral-embed\" \n  }\n}"
      - lang: Python
        source: |-
          resp = client.inference.put(
              task_type="text_embedding",
              inference_id="mistral-embeddings-test",
              inference_config={
                  "service": "mistral",
                  "service_settings": {
                      "api_key": "Mistral-API-Key",
                      "model": "mistral-embed"
                  }
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.inference.put({
            task_type: "text_embedding",
            inference_id: "mistral-embeddings-test",
            inference_config: {
              service: "mistral",
              service_settings: {
                api_key: "Mistral-API-Key",
                model: "mistral-embed",
              },
            },
          });
      - lang: Ruby
        source: |-
          response = client.inference.put(
            task_type: "text_embedding",
            inference_id: "mistral-embeddings-test",
            body: {
              "service": "mistral",
              "service_settings": {
                "api_key": "Mistral-API-Key",
                "model": "mistral-embed"
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->inference()->put([
              "task_type" => "text_embedding",
              "inference_id" => "mistral-embeddings-test",
              "body" => [
                  "service" => "mistral",
                  "service_settings" => [
                      "api_key" => "Mistral-API-Key",
                      "model" => "mistral-embed",
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"service":"mistral","service_settings":{"api_key":"Mistral-API-Key","model":"mistral-embed"}}''
          "$ELASTICSEARCH_URL/_inference/text_embedding/mistral-embeddings-test"'
      - lang: Java
        source: |
          client.inference().put(p -> p
              .inferenceId("mistral-embeddings-test")
              .taskType(TaskType.TextEmbedding)
              .inferenceConfig(i -> i
                  .service("mistral")
                  .serviceSettings(JsonData.fromJson("{\"api_key\":\"Mistral-API-Key\",\"model\":\"mistral-embed\"}"))
              )
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_inference/{task_type}/{nvidia_inference_id}":
    put:
      tags:
      - inference
      summary: Create an Nvidia inference endpoint
      description: |
        Create an inference endpoint to perform an inference task with the `nvidia` service.

        ## Required authorization

        * Cluster privileges: `manage_inference`
      operationId: inference-put-nvidia
      parameters:
      - in: path
        name: task_type
        description: |-
          The type of the inference task that the model will perform.
          NOTE: The `chat_completion` task type only supports streaming and only through the _stream API.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/inference._types.NvidiaTaskType"
        style: simple
      - in: path
        name: nvidia_inference_id
        description: The unique identifier of the inference endpoint.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: timeout
        description: Specifies the amount of time to wait for the inference endpoint
          to be created.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                chunking_settings:
                  externalDocs:
                    url: https://www.elastic.co/docs/explore-analyze/elastic-inference/inference-api#infer-chunking-config
                  description: |-
                    The chunking configuration object.
                    Applies only to the `text_embedding` task type.
                    Not applicable to the `rerank`, `completion`, or `chat_completion` task types.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.InferenceChunkingSettings"
                service:
                  description: The type of service supported for the specified task
                    type. In this case, `nvidia`.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.NvidiaServiceType"
                service_settings:
                  description: Settings used to install the inference model. These
                    settings are specific to the `nvidia` service.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.NvidiaServiceSettings"
                task_settings:
                  description: |-
                    Settings to configure the inference task.
                    Applies only to the `text_embedding` task type.
                    Not applicable to the `rerank`, `completion`, or `chat_completion` task types.
                    These settings are specific to the task type you specified.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.NvidiaTaskSettings"
              required:
              - service
              - service_settings
            examples:
              PutNvidiaRequestExample1:
                summary: A text embedding task
                description: Run `PUT _inference/text_embedding/nvidia-text-embedding`
                  to create an inference endpoint that performs a `text_embedding`
                  task.
                value: |-
                  {
                      "service": "nvidia",
                      "service_settings": {
                          "url": "nvidia-embeddings-url",
                          "api_key": "nvidia-embeddings-token",
                          "model_id": "nvidia/llama-3.2-nv-embedqa-1b-v2"
                      }
                  }
              PutNvidiaRequestExample2:
                summary: A text embedding task with custom `task_settings` and no
                  `url` parameter
                description: Run `PUT _inference/text_embedding/nvidia-text-embedding`
                  to create an inference endpoint that performs a `text_embedding`
                  task, specifying custom `task_settings` and omitting the `url` parameter
                  if model is accessible via default NVIDIA endpoint.
                value: |-
                  {
                      "service": "nvidia",
                      "service_settings": {
                          "model_id": "nvidia/llama-3.2-nv-embedqa-1b-v2",
                          "api_key": "nvidia-text-embeddings-token"
                      },
                      "task_settings": {
                          "input_type": "ingest",
                          "truncate": "start"
                      }
                  }
              PutNvidiaRequestExample3:
                summary: A completion task
                description: Run `PUT _inference/completion/nvidia-completion` to
                  create an inference endpoint that performs a `completion` task.
                value: |-
                  {
                      "service": "nvidia",
                      "service_settings": {
                          "url": "nvidia-completion-url",
                          "api_key": "nvidia-completion-token",
                          "model_id": "microsoft/phi-3-mini-128k-instruct"
                      }
                  }
              PutNvidiaRequestExample4:
                summary: A completion task without `url` parameter
                description: Run `PUT _inference/completion/nvidia-completion` to
                  create an inference endpoint that performs a `completion` task,
                  omitting the `url` parameter if model is accessible via default
                  NVIDIA endpoint.
                value: |-
                  {
                      "service": "nvidia",
                      "service_settings": {
                          "api_key": "nvidia-completion-token",
                          "model_id": "microsoft/phi-3-mini-128k-instruct"
                      }
                  }
              PutNvidiaRequestExample5:
                summary: A chat completion task
                description: Run `PUT _inference/chat_completion/nvidia-chat-completion`
                  to create an inference endpoint that performs a `chat_completion`
                  task.
                value: |-
                  {
                      "service": "nvidia",
                      "service_settings": {
                          "url": "nvidia-chat-completion-url",
                          "api_key": "nvidia-chat-completion-token",
                          "model_id": "microsoft/phi-3-mini-128k-instruct"
                      }
                  }
              PutNvidiaRequestExample6:
                summary: A chat completion task without `url` parameter
                description: Run `PUT _inference/chat_completion/nvidia-chat-completion`
                  to create an inference endpoint that performs a `chat_completion`
                  task, omitting the `url` parameter if model is accessible via default
                  NVIDIA endpoint.
                value: |-
                  {
                      "service": "nvidia",
                      "service_settings": {
                          "api_key": "nvidia-chat-completion-token",
                          "model_id": "microsoft/phi-3-mini-128k-instruct"
                      }
                  }
              PutNvidiaRequestExample7:
                summary: A rerank task
                description: Run `PUT _inference/rerank/nvidia-rerank` to create an
                  inference endpoint that performs a `rerank` task.
                value: |-
                  {
                      "service": "nvidia",
                      "service_settings": {
                          "url": "nvidia-rerank-url",
                          "api_key": "nvidia-rerank-token",
                          "model_id": "nv-rerank-qa-mistral-4b:1"
                      }
                  }
              PutNvidiaRequestExample8:
                summary: A rerank task without `url` parameter
                description: Run `PUT _inference/rerank/nvidia-rerank` to create an
                  inference endpoint that performs a `rerank` task, omitting the `url`
                  parameter if model is accessible via default NVIDIA endpoint.
                value: |-
                  {
                      "service": "nvidia",
                      "service_settings": {
                          "api_key": "nvidia-rerank-token",
                          "model_id": "nv-rerank-qa-mistral-4b:1"
                      }
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/inference._types.InferenceEndpointInfoNvidia"
              examples:
                PutNvidiaResponseExample1:
                  summary: A text embedding task
                  description: A successful response when creating an Nvidia `text_embedding`
                    inference endpoint.
                  value: |-
                    {
                      "inference_id": "nvidia-text-embedding",
                      "task_type": "text_embedding",
                      "service": "nvidia",
                      "service_settings": {
                        "model_id": "nvidia/llama-3.2-nv-embedqa-1b-v2",
                        "url": "nvidia-embeddings-url",
                        "rate_limit": {
                          "requests_per_minute": 3000
                        },
                        "dimensions": 2048,
                        "similarity": "dot_product"
                      },
                      "chunking_settings": {
                        "strategy": "sentence",
                        "max_chunk_size": 250,
                        "sentence_overlap": 1
                      }
                    }
                PutNvidiaResponseExample2:
                  summary: A text embedding task with custom `task_settings` and no
                    `url` parameter
                  description: A successful response when creating an Nvidia `text_embedding`
                    inference endpoint with custom `task_settings` and no `url` parameter.
                  value: |-
                    {
                      "inference_id": "nvidia-text-embedding",
                      "task_type": "text_embedding",
                      "service": "nvidia",
                      "service_settings": {
                        "model_id": "nvidia/llama-3.2-nv-embedqa-1b-v2",
                        "rate_limit": {
                          "requests_per_minute": 3000
                        },
                        "dimensions": 2048,
                        "similarity": "dot_product"
                      },
                      "task_settings": {
                        "input_type": "ingest",
                        "truncate": "start"
                      },
                      "chunking_settings": {
                        "strategy": "sentence",
                        "max_chunk_size": 250,
                        "sentence_overlap": 1
                      }
                    }
                PutNvidiaResponseExample3:
                  summary: A completion task
                  description: A successful response when creating an Nvidia `completion`
                    inference endpoint.
                  value: |-
                    {
                      "inference_id": "nvidia-completion",
                      "task_type": "completion",
                      "service": "nvidia",
                      "service_settings": {
                        "model_id": "microsoft/phi-3-mini-128k-instruct",
                        "url": "nvidia-completion-url",
                        "rate_limit": {
                          "requests_per_minute": 3000
                        }
                      }
                    }
                PutNvidiaResponseExample4:
                  summary: A completion task without `url` parameter
                  description: A successful response when creating an Nvidia `completion`
                    inference endpoint without `url` parameter.
                  value: |-
                    {
                      "inference_id": "nvidia-completion",
                      "task_type": "completion",
                      "service": "nvidia",
                      "service_settings": {
                        "model_id": "microsoft/phi-3-mini-128k-instruct",
                        "rate_limit": {
                          "requests_per_minute": 3000
                        }
                      }
                    }
                PutNvidiaResponseExample5:
                  summary: A chat completion task
                  description: A successful response when creating an Nvidia `chat_completion`
                    inference endpoint.
                  value: |-
                    {
                      "inference_id": "nvidia-chat-completion",
                      "task_type": "chat_completion",
                      "service": "nvidia",
                      "service_settings": {
                        "model_id": "microsoft/phi-3-mini-128k-instruct",
                        "url": "nvidia-chat-completion-url",
                        "rate_limit": {
                          "requests_per_minute": 3000
                        }
                      }
                    }
                PutNvidiaResponseExample6:
                  summary: A chat completion task without `url` parameter
                  description: A successful response when creating an Nvidia `chat_completion`
                    inference endpoint without `url` parameter.
                  value: |-
                    {
                      "inference_id": "nvidia-chat-completion",
                      "task_type": "chat_completion",
                      "service": "nvidia",
                      "service_settings": {
                        "model_id": "microsoft/phi-3-mini-128k-instruct",
                        "rate_limit": {
                          "requests_per_minute": 3000
                        }
                      }
                    }
                PutNvidiaResponseExample7:
                  summary: A rerank task
                  description: A successful response when creating an Nvidia `rerank`
                    inference endpoint.
                  value: |-
                    {
                      "inference_id": "nvidia-rerank",
                      "task_type": "rerank",
                      "service": "nvidia",
                      "service_settings": {
                        "model_id": "nv-rerank-qa-mistral-4b:1",
                        "url": "nvidia-rerank-url",
                        "rate_limit": {
                          "requests_per_minute": 3000
                        }
                      }
                    }
                PutNvidiaResponseExample8:
                  summary: A rerank task without `url` parameter
                  description: A successful response when creating an Nvidia `rerank`
                    inference endpoint without `url` parameter.
                  value: |-
                    {
                      "inference_id": "nvidia-rerank",
                      "task_type": "rerank",
                      "service": "nvidia",
                      "service_settings": {
                        "model_id": "nv-rerank-qa-mistral-4b:1",
                        "rate_limit": {
                          "requests_per_minute": 3000
                        }
                      }
                    }
      x-state: Generally available; Added in 9.3.0
      x-codeSamples:
      - lang: Console
        source: |-
          PUT _inference/text_embedding/nvidia-text-embedding
          {
              "service": "nvidia",
              "service_settings": {
                  "url": "nvidia-embeddings-url",
                  "api_key": "nvidia-embeddings-token",
                  "model_id": "nvidia/llama-3.2-nv-embedqa-1b-v2"
              }
          }
      - lang: Python
        source: |-
          resp = client.inference.put(
              task_type="text_embedding",
              inference_id="nvidia-text-embedding",
              inference_config={
                  "service": "nvidia",
                  "service_settings": {
                      "url": "nvidia-embeddings-url",
                      "api_key": "nvidia-embeddings-token",
                      "model_id": "nvidia/llama-3.2-nv-embedqa-1b-v2"
                  }
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.inference.put({
            task_type: "text_embedding",
            inference_id: "nvidia-text-embedding",
            inference_config: {
              service: "nvidia",
              service_settings: {
                url: "nvidia-embeddings-url",
                api_key: "nvidia-embeddings-token",
                model_id: "nvidia/llama-3.2-nv-embedqa-1b-v2",
              },
            },
          });
      - lang: Ruby
        source: |-
          response = client.inference.put(
            task_type: "text_embedding",
            inference_id: "nvidia-text-embedding",
            body: {
              "service": "nvidia",
              "service_settings": {
                "url": "nvidia-embeddings-url",
                "api_key": "nvidia-embeddings-token",
                "model_id": "nvidia/llama-3.2-nv-embedqa-1b-v2"
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->inference()->put([
              "task_type" => "text_embedding",
              "inference_id" => "nvidia-text-embedding",
              "body" => [
                  "service" => "nvidia",
                  "service_settings" => [
                      "url" => "nvidia-embeddings-url",
                      "api_key" => "nvidia-embeddings-token",
                      "model_id" => "nvidia/llama-3.2-nv-embedqa-1b-v2",
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"service":"nvidia","service_settings":{"url":"nvidia-embeddings-url","api_key":"nvidia-embeddings-token","model_id":"nvidia/llama-3.2-nv-embedqa-1b-v2"}}''
          "$ELASTICSEARCH_URL/_inference/text_embedding/nvidia-text-embedding"'
      - lang: Java
        source: |
          client.inference().put(p -> p
              .inferenceId("nvidia-text-embedding")
              .taskType(TaskType.TextEmbedding)
              .inferenceConfig(i -> i
                  .service("nvidia")
                  .serviceSettings(JsonData.fromJson("{\"url\":\"nvidia-embeddings-url\",\"api_key\":\"nvidia-embeddings-token\",\"model_id\":\"nvidia/llama-3.2-nv-embedqa-1b-v2\"}"))
              )
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_inference/{task_type}/{openai_inference_id}":
    put:
      tags:
      - inference
      summary: Create an OpenAI inference endpoint
      description: |
        Create an inference endpoint to perform an inference task with the `openai` service or `openai` compatible APIs.

        ## Required authorization

        * Cluster privileges: `manage_inference`
      operationId: inference-put-openai
      parameters:
      - in: path
        name: task_type
        description: |-
          The type of the inference task that the model will perform.
          NOTE: The `chat_completion` task type only supports streaming and only through the _stream API.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/inference._types.OpenAITaskType"
        style: simple
      - in: path
        name: openai_inference_id
        description: The unique identifier of the inference endpoint.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: timeout
        description: Specifies the amount of time to wait for the inference endpoint
          to be created.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                chunking_settings:
                  externalDocs:
                    url: https://www.elastic.co/docs/explore-analyze/elastic-inference/inference-api#infer-chunking-config
                  description: |-
                    The chunking configuration object.
                    Applies only to the `text_embedding` task type.
                    Not applicable to the `completion` or `chat_completion` task types.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.InferenceChunkingSettings"
                service:
                  description: The type of service supported for the specified task
                    type. In this case, `openai`.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.OpenAIServiceType"
                service_settings:
                  description: Settings used to install the inference model. These
                    settings are specific to the `openai` service.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.OpenAIServiceSettings"
                task_settings:
                  description: |-
                    Settings to configure the inference task.
                    These settings are specific to the task type you specified.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.OpenAITaskSettings"
              required:
              - service
              - service_settings
            examples:
              PutOpenAiRequestExample1:
                summary: A text embedding task
                description: Run `PUT _inference/text_embedding/openai-embeddings`
                  to create an inference endpoint that performs a `text_embedding`
                  task. The embeddings created by requests to this endpoint will have
                  128 dimensions.
                value: |-
                  {
                      "service": "openai",
                      "service_settings": {
                          "api_key": "OpenAI-API-Key",
                          "model_id": "text-embedding-3-small",
                          "dimensions": 128
                      }
                  }
              PutOpenAiRequestExample2:
                summary: A completion task
                description: Run `PUT _inference/completion/openai-completion` to
                  create an inference endpoint to perform a `completion` task type.
                value: |-
                  {
                      "service": "openai",
                      "service_settings": {
                          "api_key": "OpenAI-API-Key",
                          "model_id": "gpt-3.5-turbo"
                      }
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/inference._types.InferenceEndpointInfoOpenAI"
      x-state: Generally available; Added in 8.12.0
      x-codeSamples:
      - lang: Console
        source: |-
          PUT _inference/text_embedding/openai-embeddings
          {
              "service": "openai",
              "service_settings": {
                  "api_key": "OpenAI-API-Key",
                  "model_id": "text-embedding-3-small",
                  "dimensions": 128
              }
          }
      - lang: Python
        source: |-
          resp = client.inference.put(
              task_type="text_embedding",
              inference_id="openai-embeddings",
              inference_config={
                  "service": "openai",
                  "service_settings": {
                      "api_key": "OpenAI-API-Key",
                      "model_id": "text-embedding-3-small",
                      "dimensions": 128
                  }
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.inference.put({
            task_type: "text_embedding",
            inference_id: "openai-embeddings",
            inference_config: {
              service: "openai",
              service_settings: {
                api_key: "OpenAI-API-Key",
                model_id: "text-embedding-3-small",
                dimensions: 128,
              },
            },
          });
      - lang: Ruby
        source: |-
          response = client.inference.put(
            task_type: "text_embedding",
            inference_id: "openai-embeddings",
            body: {
              "service": "openai",
              "service_settings": {
                "api_key": "OpenAI-API-Key",
                "model_id": "text-embedding-3-small",
                "dimensions": 128
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->inference()->put([
              "task_type" => "text_embedding",
              "inference_id" => "openai-embeddings",
              "body" => [
                  "service" => "openai",
                  "service_settings" => [
                      "api_key" => "OpenAI-API-Key",
                      "model_id" => "text-embedding-3-small",
                      "dimensions" => 128,
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"service":"openai","service_settings":{"api_key":"OpenAI-API-Key","model_id":"text-embedding-3-small","dimensions":128}}''
          "$ELASTICSEARCH_URL/_inference/text_embedding/openai-embeddings"'
      - lang: Java
        source: |
          client.inference().put(p -> p
              .inferenceId("openai-embeddings")
              .taskType(TaskType.TextEmbedding)
              .inferenceConfig(i -> i
                  .service("openai")
                  .serviceSettings(JsonData.fromJson("{\"api_key\":\"OpenAI-API-Key\",\"model_id\":\"text-embedding-3-small\",\"dimensions\":128}"))
              )
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_inference/{task_type}/{openshiftai_inference_id}":
    put:
      tags:
      - inference
      summary: Create an OpenShift AI inference endpoint
      description: |
        Create an inference endpoint to perform an inference task with the `openshift_ai` service.

        ## Required authorization

        * Cluster privileges: `manage_inference`
      operationId: inference-put-openshift-ai
      parameters:
      - in: path
        name: task_type
        description: |-
          The type of the inference task that the model will perform.
          NOTE: The `chat_completion` task type only supports streaming and only through the _stream API.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/inference._types.OpenShiftAiTaskType"
        style: simple
      - in: path
        name: openshiftai_inference_id
        description: The unique identifier of the inference endpoint.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: timeout
        description: Specifies the amount of time to wait for the inference endpoint
          to be created.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                chunking_settings:
                  externalDocs:
                    url: https://www.elastic.co/docs/explore-analyze/elastic-inference/inference-api#infer-chunking-config
                  description: |-
                    The chunking configuration object.
                    Applies only to the `text_embedding` task type.
                    Not applicable to the `rerank`, `completion`, or `chat_completion` task types.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.InferenceChunkingSettings"
                service:
                  description: The type of service supported for the specified task
                    type. In this case, `openshift_ai`.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.OpenShiftAiServiceType"
                service_settings:
                  description: Settings used to install the inference model. These
                    settings are specific to the `openshift_ai` service.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.OpenShiftAiServiceSettings"
                task_settings:
                  description: |-
                    Settings to configure the inference task.
                    Applies only to the `rerank` task type.
                    Not applicable to the `text_embedding`, `completion`, or `chat_completion` task types.
                    These settings are specific to the task type you specified.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.OpenShiftAiTaskSettings"
              required:
              - service
              - service_settings
            examples:
              PutOpenShiftAiRequestExample1:
                summary: A text embedding task
                description: Run `PUT _inference/text_embedding/openshift-ai-text-embedding`
                  to create an inference endpoint that performs a `text_embedding`
                  task.
                value: |-
                  {
                      "service": "openshift_ai",
                      "service_settings": {
                          "url": "openshift-ai-embeddings-url",
                          "api_key": "openshift-ai-embeddings-token",
                          "model_id": "gritlm-7b"
                      }
                  }
              PutOpenShiftAiRequestExample2:
                summary: A completion task
                description: Run `PUT _inference/completion/openshift-ai-completion`
                  to create an inference endpoint that performs a `completion` task.
                value: |-
                  {
                      "service": "openshift_ai",
                      "service_settings": {
                          "url": "openshift-ai-completion-url",
                          "api_key": "openshift-ai-completion-token",
                          "model_id": "llama-31-8b-instruct"
                      }
                  }
              PutOpenShiftAiRequestExample3:
                summary: A chat completion task
                description: Run `PUT _inference/chat_completion/openshift-ai-chat-completion`
                  to create an inference endpoint that performs a `chat_completion`
                  task.
                value: |-
                  {
                      "service": "openshift_ai",
                      "service_settings": {
                          "url": "openshift-ai-chat-completion-url",
                          "api_key": "openshift-ai-chat-completion-token",
                          "model_id": "llama-31-8b-instruct"
                      }
                  }
              PutOpenShiftAiRequestExample4:
                summary: A rerank task
                description: Run `PUT _inference/rerank/openshift-ai-rerank` to create
                  an inference endpoint that performs a `rerank` task.
                value: |-
                  {
                      "service": "openshift_ai",
                      "service_settings": {
                          "url": "openshift-ai-rerank-url",
                          "api_key": "openshift-ai-rerank-token",
                          "model_id": "bge-reranker-v2-m3"
                      }
                  }
              PutOpenShiftAiRequestExample5:
                summary: A rerank task with custom `task_settings` and omitted `model_id`
                description: Run `PUT _inference/rerank/openshift-ai-rerank` to create
                  an inference endpoint that performs a `rerank` task, specifying
                  custom `task_settings` and omitting the `model_id` if deployed model
                  doesn't require it.
                value: |-
                  {
                      "service": "openshift_ai",
                      "service_settings": {
                          "url": "openshift-ai-rerank-url",
                          "api_key": "openshift-ai-rerank-token"
                      },
                      "task_settings": {
                          "return_documents": true,
                          "top_n": 2
                      }
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/inference._types.InferenceEndpointInfoOpenShiftAi"
              examples:
                PutOpenShiftAiResponseExample1:
                  summary: A text embedding task
                  description: A successful response when creating an OpenShift AI
                    `text_embedding` inference endpoint.
                  value: |-
                    {
                      "inference_id": "openshift-ai-text-embedding",
                      "task_type": "text_embedding",
                      "service": "openshift_ai",
                      "service_settings": {
                        "model_id": "gritlm-7b",
                        "url": "openshift-ai-embeddings-url",
                        "rate_limit": {
                          "requests_per_minute": 3000
                        },
                        "dimensions": 4096,
                        "similarity": "dot_product",
                        "dimensions_set_by_user": false
                      },
                      "chunking_settings": {
                        "strategy": "sentence",
                        "max_chunk_size": 250,
                        "sentence_overlap": 1
                      }
                    }
                PutOpenShiftAiResponseExample2:
                  summary: A completion task
                  description: A successful response when creating an OpenShift AI
                    `completion` inference endpoint.
                  value: |-
                    {
                      "inference_id": "openshift-ai-completion",
                      "task_type": "completion",
                      "service": "openshift_ai",
                      "service_settings": {
                        "model_id": "llama-31-8b-instruct",
                        "url": "openshift-ai-completion-url",
                        "rate_limit": {
                          "requests_per_minute": 3000
                        }
                      }
                    }
                PutOpenShiftAiResponseExample3:
                  summary: A chat completion task
                  description: A successful response when creating an OpenShift AI
                    `chat_completion` inference endpoint.
                  value: |-
                    {
                      "inference_id": "openshift-ai-chat-completion",
                      "task_type": "chat_completion",
                      "service": "openshift_ai",
                      "service_settings": {
                        "model_id": "llama-31-8b-instruct",
                        "url": "openshift-ai-chat-completion-url",
                        "rate_limit": {
                          "requests_per_minute": 3000
                        }
                      }
                    }
                PutOpenShiftAiResponseExample4:
                  summary: A rerank task
                  description: A successful response when creating an OpenShift AI
                    `rerank` inference endpoint.
                  value: |-
                    {
                      "inference_id": "openshift-ai-rerank",
                      "task_type": "rerank",
                      "service": "openshift_ai",
                      "service_settings": {
                        "model_id": "bge-reranker-v2-m3",
                        "url": "openshift-ai-rerank-url",
                        "rate_limit": {
                          "requests_per_minute": 3000
                        }
                      }
                    }
                PutOpenShiftAiResponseExample5:
                  summary: A rerank task with custom `task_settings` and omitted `model_id`
                  description: A successful response when creating an OpenShift AI
                    `rerank` inference endpoint with custom `task_settings` and omitted
                    `model_id`
                  value: |-
                    {
                      "inference_id": "openshift-ai-rerank",
                      "task_type": "rerank",
                      "service": "openshift_ai",
                      "service_settings": {
                        "url": "openshift-ai-rerank-url",
                        "rate_limit": {
                          "requests_per_minute": 3000
                        }
                      },
                      "task_settings": {
                        "return_documents": true,
                        "top_n": 2
                      }
                    }
      x-state: Generally available; Added in 9.3.0
      x-codeSamples:
      - lang: Console
        source: |-
          PUT _inference/text_embedding/openshift-ai-text-embedding
          {
              "service": "openshift_ai",
              "service_settings": {
                  "url": "openshift-ai-embeddings-url",
                  "api_key": "openshift-ai-embeddings-token",
                  "model_id": "gritlm-7b"
              }
          }
      - lang: Python
        source: |-
          resp = client.inference.put(
              task_type="text_embedding",
              inference_id="openshift-ai-text-embedding",
              inference_config={
                  "service": "openshift_ai",
                  "service_settings": {
                      "url": "openshift-ai-embeddings-url",
                      "api_key": "openshift-ai-embeddings-token",
                      "model_id": "gritlm-7b"
                  }
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.inference.put({
            task_type: "text_embedding",
            inference_id: "openshift-ai-text-embedding",
            inference_config: {
              service: "openshift_ai",
              service_settings: {
                url: "openshift-ai-embeddings-url",
                api_key: "openshift-ai-embeddings-token",
                model_id: "gritlm-7b",
              },
            },
          });
      - lang: Ruby
        source: |-
          response = client.inference.put(
            task_type: "text_embedding",
            inference_id: "openshift-ai-text-embedding",
            body: {
              "service": "openshift_ai",
              "service_settings": {
                "url": "openshift-ai-embeddings-url",
                "api_key": "openshift-ai-embeddings-token",
                "model_id": "gritlm-7b"
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->inference()->put([
              "task_type" => "text_embedding",
              "inference_id" => "openshift-ai-text-embedding",
              "body" => [
                  "service" => "openshift_ai",
                  "service_settings" => [
                      "url" => "openshift-ai-embeddings-url",
                      "api_key" => "openshift-ai-embeddings-token",
                      "model_id" => "gritlm-7b",
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"service":"openshift_ai","service_settings":{"url":"openshift-ai-embeddings-url","api_key":"openshift-ai-embeddings-token","model_id":"gritlm-7b"}}''
          "$ELASTICSEARCH_URL/_inference/text_embedding/openshift-ai-text-embedding"'
      - lang: Java
        source: |
          client.inference().put(p -> p
              .inferenceId("openshift-ai-text-embedding")
              .taskType(TaskType.TextEmbedding)
              .inferenceConfig(i -> i
                  .service("openshift_ai")
                  .serviceSettings(JsonData.fromJson("{\"url\":\"openshift-ai-embeddings-url\",\"api_key\":\"openshift-ai-embeddings-token\",\"model_id\":\"gritlm-7b\"}"))
              )
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_inference/{task_type}/{voyageai_inference_id}":
    put:
      tags:
      - inference
      summary: Create a VoyageAI inference endpoint
      description: |
        Create an inference endpoint to perform an inference task with the `voyageai` service.

        Avoid creating multiple endpoints for the same model unless required, as each endpoint consumes significant resources.

        ## Required authorization

        * Cluster privileges: `manage_inference`
      operationId: inference-put-voyageai
      parameters:
      - in: path
        name: task_type
        description: The type of the inference task that the model will perform.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/inference._types.VoyageAITaskType"
        style: simple
      - in: path
        name: voyageai_inference_id
        description: The unique identifier of the inference endpoint.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: timeout
        description: Specifies the amount of time to wait for the inference endpoint
          to be created.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                chunking_settings:
                  externalDocs:
                    url: https://www.elastic.co/docs/explore-analyze/elastic-inference/inference-api#infer-chunking-config
                  description: |-
                    The chunking configuration object.
                    Applies only to the `text_embedding` task type.
                    Not applicable to the `rerank` task type.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.InferenceChunkingSettings"
                service:
                  description: The type of service supported for the specified task
                    type. In this case, `voyageai`.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.VoyageAIServiceType"
                service_settings:
                  description: Settings used to install the inference model. These
                    settings are specific to the `voyageai` service.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.VoyageAIServiceSettings"
                task_settings:
                  description: |-
                    Settings to configure the inference task.
                    These settings are specific to the task type you specified.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.VoyageAITaskSettings"
              required:
              - service
              - service_settings
            examples:
              PutVoyageAIRequestExample1:
                summary: A text embedding task
                description: Run `PUT _inference/text_embedding/voyageai-embeddings`
                  to create an inference endpoint that performs a `text_embedding`
                  task. The embeddings created by requests to this endpoint will have
                  512 dimensions.
                value: |-
                  {
                      "service": "voyageai",
                      "service_settings": {
                          "model_id": "voyage-3-large",
                          "dimensions": 512
                      }
                  }
              PutVoyageAIRequestExample2:
                summary: A rerank task
                description: Run `PUT _inference/rerank/voyageai-rerank` to create
                  an inference endpoint that performs a `rerank` task.
                value: |-
                  {
                      "service": "voyageai",
                      "service_settings": {
                          "model_id": "rerank-2"
                      }
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/inference._types.InferenceEndpointInfoVoyageAI"
      x-state: Generally available; Added in 8.19.0
      x-codeSamples:
      - lang: Console
        source: |-
          PUT _inference/text_embedding/openai-embeddings
          {
              "service": "voyageai",
              "service_settings": {
                  "model_id": "voyage-3-large",
                  "dimensions": 512
              }
          }
      - lang: Python
        source: |-
          resp = client.inference.put(
              task_type="text_embedding",
              inference_id="openai-embeddings",
              inference_config={
                  "service": "voyageai",
                  "service_settings": {
                      "model_id": "voyage-3-large",
                      "dimensions": 512
                  }
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.inference.put({
            task_type: "text_embedding",
            inference_id: "openai-embeddings",
            inference_config: {
              service: "voyageai",
              service_settings: {
                model_id: "voyage-3-large",
                dimensions: 512,
              },
            },
          });
      - lang: Ruby
        source: |-
          response = client.inference.put(
            task_type: "text_embedding",
            inference_id: "openai-embeddings",
            body: {
              "service": "voyageai",
              "service_settings": {
                "model_id": "voyage-3-large",
                "dimensions": 512
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->inference()->put([
              "task_type" => "text_embedding",
              "inference_id" => "openai-embeddings",
              "body" => [
                  "service" => "voyageai",
                  "service_settings" => [
                      "model_id" => "voyage-3-large",
                      "dimensions" => 512,
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"service":"voyageai","service_settings":{"model_id":"voyage-3-large","dimensions":512}}''
          "$ELASTICSEARCH_URL/_inference/text_embedding/openai-embeddings"'
      - lang: Java
        source: |
          client.inference().put(p -> p
              .inferenceId("openai-embeddings")
              .taskType(TaskType.TextEmbedding)
              .inferenceConfig(i -> i
                  .service("voyageai")
                  .serviceSettings(JsonData.fromJson("{\"model_id\":\"voyage-3-large\",\"dimensions\":512}"))
              )
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_inference/{task_type}/{watsonx_inference_id}":
    put:
      tags:
      - inference
      summary: Create a Watsonx inference endpoint
      description: |
        Create an inference endpoint to perform an inference task with the `watsonxai` service.
        You need an IBM Cloud Databases for Elasticsearch deployment to use the `watsonxai` inference service.
        You can provision one through the IBM catalog, the Cloud Databases CLI plug-in, the Cloud Databases API, or Terraform.

        ## Required authorization

        * Cluster privileges: `manage_inference`
      operationId: inference-put-watsonx
      parameters:
      - in: path
        name: task_type
        description: The type of the inference task that the model will perform.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/inference._types.WatsonxTaskType"
        style: simple
      - in: path
        name: watsonx_inference_id
        description: The unique identifier of the inference endpoint.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: timeout
        description: Specifies the amount of time to wait for the inference endpoint
          to be created.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                chunking_settings:
                  externalDocs:
                    url: https://www.elastic.co/docs/explore-analyze/elastic-inference/inference-api#infer-chunking-config
                  description: |-
                    The chunking configuration object.
                    Applies only to the `text_embedding` task type.
                    Not applicable to the `rerank`, `completion` or `chat_completion` task types.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.InferenceChunkingSettings"
                service:
                  description: The type of service supported for the specified task
                    type. In this case, `watsonxai`.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.WatsonxServiceType"
                service_settings:
                  description: Settings used to install the inference model. These
                    settings are specific to the `watsonxai` service.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.WatsonxServiceSettings"
              required:
              - service
              - service_settings
            examples:
              PutWatsonxRequestExample1:
                description: Run `PUT _inference/text_embedding/watsonx-embeddings`
                  to create an Watonsx inference endpoint that performs a text embedding
                  task.
                value: "{\n  \"service\": \"watsonxai\",\n  \"service_settings\":
                  {\n      \"api_key\": \"Watsonx-API-Key\", \n      \"url\": \"Wastonx-URL\",
                  \n      \"model_id\": \"ibm/slate-30m-english-rtrvr\",\n      \"project_id\":
                  \"IBM-Cloud-ID\", \n      \"api_version\": \"2024-03-14\"\n  }\n}"
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/inference._types.InferenceEndpointInfoWatsonx"
      x-state: Generally available; Added in 8.16.0
      x-codeSamples:
      - lang: Console
        source: "PUT _inference/text_embedding/watsonx-embeddings\n{\n  \"service\":
          \"watsonxai\",\n  \"service_settings\": {\n      \"api_key\": \"Watsonx-API-Key\",
          \n      \"url\": \"Wastonx-URL\", \n      \"model_id\": \"ibm/slate-30m-english-rtrvr\",\n
          \     \"project_id\": \"IBM-Cloud-ID\", \n      \"api_version\": \"2024-03-14\"\n
          \ }\n}"
      - lang: Python
        source: |-
          resp = client.inference.put(
              task_type="text_embedding",
              inference_id="watsonx-embeddings",
              inference_config={
                  "service": "watsonxai",
                  "service_settings": {
                      "api_key": "Watsonx-API-Key",
                      "url": "Wastonx-URL",
                      "model_id": "ibm/slate-30m-english-rtrvr",
                      "project_id": "IBM-Cloud-ID",
                      "api_version": "2024-03-14"
                  }
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.inference.put({
            task_type: "text_embedding",
            inference_id: "watsonx-embeddings",
            inference_config: {
              service: "watsonxai",
              service_settings: {
                api_key: "Watsonx-API-Key",
                url: "Wastonx-URL",
                model_id: "ibm/slate-30m-english-rtrvr",
                project_id: "IBM-Cloud-ID",
                api_version: "2024-03-14",
              },
            },
          });
      - lang: Ruby
        source: |-
          response = client.inference.put(
            task_type: "text_embedding",
            inference_id: "watsonx-embeddings",
            body: {
              "service": "watsonxai",
              "service_settings": {
                "api_key": "Watsonx-API-Key",
                "url": "Wastonx-URL",
                "model_id": "ibm/slate-30m-english-rtrvr",
                "project_id": "IBM-Cloud-ID",
                "api_version": "2024-03-14"
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->inference()->put([
              "task_type" => "text_embedding",
              "inference_id" => "watsonx-embeddings",
              "body" => [
                  "service" => "watsonxai",
                  "service_settings" => [
                      "api_key" => "Watsonx-API-Key",
                      "url" => "Wastonx-URL",
                      "model_id" => "ibm/slate-30m-english-rtrvr",
                      "project_id" => "IBM-Cloud-ID",
                      "api_version" => "2024-03-14",
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"service":"watsonxai","service_settings":{"api_key":"Watsonx-API-Key","url":"Wastonx-URL","model_id":"ibm/slate-30m-english-rtrvr","project_id":"IBM-Cloud-ID","api_version":"2024-03-14"}}''
          "$ELASTICSEARCH_URL/_inference/text_embedding/watsonx-embeddings"'
      - lang: Java
        source: |
          client.inference().put(p -> p
              .inferenceId("watsonx-embeddings")
              .taskType(TaskType.TextEmbedding)
              .inferenceConfig(i -> i
                  .service("watsonxai")
                  .serviceSettings(JsonData.fromJson("{\"api_key\":\"Watsonx-API-Key\",\"url\":\"Wastonx-URL\",\"model_id\":\"ibm/slate-30m-english-rtrvr\",\"project_id\":\"IBM-Cloud-ID\",\"api_version\":\"2024-03-14\"}"))
              )
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_inference/rerank/{inference_id}":
    post:
      tags:
      - inference
      summary: Perform reranking inference on the service
      description: |2


        ## Required authorization

        * Cluster privileges: `monitor_inference`
      operationId: inference-rerank
      parameters:
      - in: path
        name: inference_id
        description: The unique identifier for the inference endpoint.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: timeout
        description: The amount of time to wait for the inference request to complete.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                query:
                  description: Query input.
                  type: string
                input:
                  description: The documents to rank.
                  type: array
                  items:
                    type: string
                return_documents:
                  description: Include the document text in the response.
                  type: boolean
                top_n:
                  description: Limit the response to the top N documents.
                  type: number
                task_settings:
                  description: |-
                    Task settings for the individual inference request.
                    These settings are specific to the task type you specified and override the task settings specified when initializing the service.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.TaskSettings"
              required:
              - query
              - input
            examples:
              RerankRequestExample1:
                summary: Rerank task
                description: Run `POST _inference/rerank/cohere_rerank` to perform
                  reranking on the example input.
                value: |-
                  {
                    "input": ["luke", "like", "leia", "chewy","r2d2", "star", "wars"],
                    "query": "star wars main character"
                  }
              RerankRequestExample2:
                summary: Rerank task
                description: Run `POST _inference/rerank/bge-reranker-base-mkn` to
                  perform reranking on the example input via Hugging Face
                value: |-
                  {
                    "input": ["luke", "like", "leia", "chewy","r2d2", "star", "wars"],
                    "query": "star wars main character",
                    "return_documents": false,
                    "top_n": 2
                  }
              RerankRequestExample3:
                summary: Rerank task
                description: Run `POST _inference/rerank/bge-reranker-base-mkn` to
                  perform reranking on the example input via Hugging Face
                value: |-
                  {
                    "input": ["luke", "like", "leia", "chewy","r2d2", "star", "wars"],
                    "query": "star wars main character",
                    "return_documents": true,
                    "top_n": 3
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/inference._types.RerankedInferenceResult"
              examples:
                RerankResponseExample1:
                  summary: Rerank task
                  description: 'A successful response from `POST _inference/rerank/cohere_rerank`.

                    '
                  value: |-
                    {
                      "rerank": [
                        {
                          "index": "2",
                          "relevance_score": "0.011597361",
                          "text": "leia"
                        },
                        {
                          "index": "0",
                          "relevance_score": "0.006338922",
                          "text": "luke"
                        },
                        {
                          "index": "5",
                          "relevance_score": "0.0016166499",
                          "text": "star"
                        },
                        {
                          "index": "4",
                          "relevance_score": "0.0011695103",
                          "text": "r2d2"
                        },
                        {
                          "index": "1",
                          "relevance_score": "5.614787E-4",
                          "text": "like"
                        },
                        {
                          "index": "6",
                          "relevance_score": "3.7850367E-4",
                          "text": "wars"
                        },
                        {
                          "index": "3",
                          "relevance_score": "1.2508839E-5",
                          "text": "chewy"
                        }
                      ]
                    }
                RerankResponseExample2:
                  summary: Rerank task
                  description: 'A successful response from `POST _inference/rerank/bge-reranker-base-mkn`.

                    '
                  value: |-
                    {
                      "rerank": [
                        {
                          "index": 6,
                          "relevance_score": 0.50955844
                        },
                        {
                          "index": 5,
                          "relevance_score": 0.084341794
                        }
                      ]
                    }
                RerankResponseExample3:
                  summary: Rerank task
                  description: 'A successful response from `POST _inference/rerank/bge-reranker-base-mkn`.

                    '
                  value: |-
                    {
                      "rerank": [
                        {
                          "index": 6,
                          "relevance_score": 0.50955844,
                          "text": "wars"
                        },
                        {
                          "index": 5,
                          "relevance_score": 0.084341794,
                          "text": "star"
                        },
                        {
                          "index": 3,
                          "relevance_score": 0.004520818,
                          "text": "chewy"
                        }
                      ]
                    }
      x-state: Generally available; Added in 8.11.0
      x-codeSamples:
      - lang: Console
        source: |-
          POST _inference/rerank/cohere_rerank
          {
            "input": ["luke", "like", "leia", "chewy","r2d2", "star", "wars"],
            "query": "star wars main character"
          }
      - lang: Python
        source: |-
          resp = client.inference.rerank(
              inference_id="cohere_rerank",
              input=[
                  "luke",
                  "like",
                  "leia",
                  "chewy",
                  "r2d2",
                  "star",
                  "wars"
              ],
              query="star wars main character",
          )
      - lang: JavaScript
        source: |-
          const response = await client.inference.rerank({
            inference_id: "cohere_rerank",
            input: ["luke", "like", "leia", "chewy", "r2d2", "star", "wars"],
            query: "star wars main character",
          });
      - lang: Ruby
        source: |-
          response = client.inference.rerank(
            inference_id: "cohere_rerank",
            body: {
              "input": [
                "luke",
                "like",
                "leia",
                "chewy",
                "r2d2",
                "star",
                "wars"
              ],
              "query": "star wars main character"
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->inference()->rerank([
              "inference_id" => "cohere_rerank",
              "body" => [
                  "input" => array(
                      "luke",
                      "like",
                      "leia",
                      "chewy",
                      "r2d2",
                      "star",
                      "wars",
                  ),
                  "query" => "star wars main character",
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"input":["luke","like","leia","chewy","r2d2","star","wars"],"query":"star
          wars main character"}'' "$ELASTICSEARCH_URL/_inference/rerank/cohere_rerank"'
      - lang: Java
        source: |
          client.inference().rerank(r -> r
              .inferenceId("cohere_rerank")
              .input(List.of("luke","like","leia","chewy","r2d2","star","wars"))
              .query("star wars main character")
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_inference/sparse_embedding/{inference_id}":
    post:
      tags:
      - inference
      summary: Perform sparse embedding inference on the service
      operationId: inference-sparse-embedding
      parameters:
      - in: path
        name: inference_id
        description: The inference Id
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: timeout
        description: Specifies the amount of time to wait for the inference request
          to complete.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                input:
                  description: |-
                    Inference input.
                    Either a string or an array of strings.
                  oneOf:
                  - type: string
                  - type: array
                    items:
                      type: string
                task_settings:
                  description: Task settings for the individual inference request.
                    These settings are specific to the <task_type> you specified and
                    override the task settings specified when initializing the service.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.TaskSettings"
              required:
              - input
            examples:
              SparseEmbeddingRequestExample1:
                summary: Sparse embedding task
                description: Run `POST _inference/sparse_embedding/my-elser-model`
                  to perform sparse embedding on the example sentence.
                value: |-
                  {
                    "input": "The sky above the port was the color of television tuned to a dead channel."
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/inference._types.SparseEmbeddingInferenceResult"
              examples:
                SparseEmbeddingResponseExample1:
                  summary: Sparse embedding task
                  description: 'An abbreviated response from `POST _inference/sparse_embedding/my-elser-model`.

                    '
                  value: |-
                    {
                      "sparse_embedding": [
                        {
                          "is_truncated": false,
                          "embedding": {
                            "port": 2.1259406,
                            "sky": 1.7073475,
                            "color": 1.6922266,
                            "dead": 1.6247464,
                            "television": 1.3525393,
                            "above": 1.2425821,
                            "tuned": 1.1440028,
                            "colors": 1.1218185,
                            "tv": 1.0111054,
                            "ports": 1.0067928,
                            "poem": 1.0042328,
                            "channel": 0.99471164,
                            "tune": 0.96235967,
                            "scene": 0.9020516
                          }
                        }
                      ]
                    }
      x-state: Generally available; Added in 8.11.0
      x-codeSamples:
      - lang: Console
        source: |-
          POST _inference/sparse_embedding/my-elser-model
          {
            "input": "The sky above the port was the color of television tuned to a dead channel."
          }
      - lang: Python
        source: |-
          resp = client.inference.sparse_embedding(
              inference_id="my-elser-model",
              input="The sky above the port was the color of television tuned to a dead channel.",
          )
      - lang: JavaScript
        source: |-
          const response = await client.inference.sparseEmbedding({
            inference_id: "my-elser-model",
            input:
              "The sky above the port was the color of television tuned to a dead channel.",
          });
      - lang: Ruby
        source: |-
          response = client.inference.sparse_embedding(
            inference_id: "my-elser-model",
            body: {
              "input": "The sky above the port was the color of television tuned to a dead channel."
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->inference()->sparseEmbedding([
              "inference_id" => "my-elser-model",
              "body" => [
                  "input" => "The sky above the port was the color of television tuned to a dead channel.",
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"input":"The sky above the port was the color of
          television tuned to a dead channel."}'' "$ELASTICSEARCH_URL/_inference/sparse_embedding/my-elser-model"'
      - lang: Java
        source: |
          client.inference().sparseEmbedding(s -> s
              .inferenceId("my-elser-model")
              .input("The sky above the port was the color of television tuned to a dead channel.")
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_inference/completion/{inference_id}/_stream":
    post:
      tags:
      - inference
      summary: Perform streaming completion inference on the service
      description: |
        Get real-time responses for completion tasks by delivering answers incrementally, reducing response times during computation.
        This API works only with the completion task type.

        IMPORTANT: The inference APIs enable you to use certain services, such as built-in machine learning models (ELSER, E5), models uploaded through Eland, Cohere, OpenAI, Azure, Google AI Studio, Google Vertex AI, Anthropic, Watsonx.ai, or Hugging Face. For built-in models and models uploaded through Eland, the inference APIs offer an alternative way to use and manage trained models. However, if you do not plan to use the inference APIs to use these models or if you want to use non-NLP models, use the machine learning trained model APIs.

        This API requires the `monitor_inference` cluster privilege (the built-in `inference_admin` and `inference_user` roles grant this privilege). You must use a client that supports streaming.

        ## Required authorization

        * Cluster privileges: `monitor_inference`
      operationId: inference-stream-completion
      parameters:
      - in: path
        name: inference_id
        description: The unique identifier for the inference endpoint.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: timeout
        description: The amount of time to wait for the inference request to complete.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                input:
                  description: |-
                    The text on which you want to perform the inference task.
                    It can be a single string or an array.

                    NOTE: Inference endpoints for the completion task type currently only support a single string as input.
                  oneOf:
                  - type: string
                  - type: array
                    items:
                      type: string
                task_settings:
                  description: Task settings for the individual inference request.
                    These settings are specific to the <task_type> you specified and
                    override the task settings specified when initializing the service.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.TaskSettings"
              required:
              - input
            examples:
              StreamInferenceRequestExample1:
                summary: Perform a completion task
                description: Run `POST _inference/completion/openai-completion/_stream`
                  to perform a completion on the example question with streaming.
                value: |-
                  {
                    "input": "What is Elastic?"
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.StreamResult"
      x-state: Generally available; Added in 8.16.0
      x-codeSamples:
      - lang: Console
        source: |-
          POST _inference/completion/openai-completion/_stream
          {
            "input": "What is Elastic?"
          }
      - lang: Python
        source: |-
          resp = client.inference.stream_completion(
              inference_id="openai-completion",
              input="What is Elastic?",
          )
      - lang: JavaScript
        source: |-
          const response = await client.inference.streamCompletion({
            inference_id: "openai-completion",
            input: "What is Elastic?",
          });
      - lang: Ruby
        source: |-
          response = client.inference.stream_completion(
            inference_id: "openai-completion",
            body: {
              "input": "What is Elastic?"
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->inference()->streamCompletion([
              "inference_id" => "openai-completion",
              "body" => [
                  "input" => "What is Elastic?",
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"input":"What is Elastic?"}'' "$ELASTICSEARCH_URL/_inference/completion/openai-completion/_stream"'
      - lang: Java
        source: |
          client.inference().streamCompletion(s -> s
              .inferenceId("openai-completion")
              .input("What is Elastic?")
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_inference/text_embedding/{inference_id}":
    post:
      tags:
      - inference
      summary: Perform text embedding inference on the service
      operationId: inference-text-embedding
      parameters:
      - in: path
        name: inference_id
        description: The inference Id
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: timeout
        description: Specifies the amount of time to wait for the inference request
          to complete.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                input:
                  description: |-
                    Inference input.
                    Either a string or an array of strings.
                  oneOf:
                  - type: string
                  - type: array
                    items:
                      type: string
                input_type:
                  description: |-
                    The input data type for the text embedding model. Possible values include:
                    * `SEARCH`
                    * `INGEST`
                    * `CLASSIFICATION`
                    * `CLUSTERING`
                    Not all services support all values. Unsupported values will trigger a validation exception.
                    Accepted values depend on the configured inference service, refer to the relevant service-specific documentation for more info.

                    > info
                    > The `input_type` parameter specified on the root level of the request body will take precedence over the `input_type` parameter specified in `task_settings`.
                  type: string
                task_settings:
                  description: Task settings for the individual inference request.
                    These settings are specific to the <task_type> you specified and
                    override the task settings specified when initializing the service.
                  allOf:
                  - "$ref": "#/components/schemas/inference._types.TaskSettings"
              required:
              - input
            examples:
              TextEmbeddingRequestExample1:
                summary: Text embedding task
                description: Run `POST _inference/text_embedding/my-cohere-endpoint`
                  to perform text embedding on the example sentence using the Cohere
                  integration,
                value: |-
                  {
                    "input": "The sky above the port was the color of television tuned to a dead channel.",
                    "input_type": "ingest"
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/inference._types.TextEmbeddingInferenceResult"
              examples:
                TextEmbeddingResponseExample1:
                  summary: Text embedding task
                  description: 'An abbreviated response from `POST _inference/text_embedding/my-text-embedding-endpoint`.

                    '
                  value: |-
                    {
                      "text_embedding": [
                        {
                          "embedding": [
                            0.018569946,
                            -0.036895752,
                            0.01486969,
                            -0.0045204163,
                            -0.04385376,
                            0.0075950623,
                            0.04260254,
                            -0.004005432,
                            0.007865906,
                            0.030792236,
                            -0.050476074,
                            0.011795044,
                            -0.011642456,
                            -0.010070801
                          ]
                        }
                      ]
                    }
      x-state: Generally available; Added in 8.11.0
      x-codeSamples:
      - lang: Console
        source: |-
          POST _inference/text_embedding/my-cohere-endpoint
          {
            "input": "The sky above the port was the color of television tuned to a dead channel.",
            "input_type": "ingest"
          }
      - lang: Python
        source: |-
          resp = client.inference.text_embedding(
              inference_id="my-cohere-endpoint",
              input="The sky above the port was the color of television tuned to a dead channel.",
              input_type="ingest",
          )
      - lang: JavaScript
        source: |-
          const response = await client.inference.textEmbedding({
            inference_id: "my-cohere-endpoint",
            input:
              "The sky above the port was the color of television tuned to a dead channel.",
            input_type: "ingest",
          });
      - lang: Ruby
        source: |-
          response = client.inference.text_embedding(
            inference_id: "my-cohere-endpoint",
            body: {
              "input": "The sky above the port was the color of television tuned to a dead channel.",
              "input_type": "ingest"
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->inference()->textEmbedding([
              "inference_id" => "my-cohere-endpoint",
              "body" => [
                  "input" => "The sky above the port was the color of television tuned to a dead channel.",
                  "input_type" => "ingest",
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"input":"The sky above the port was the color of
          television tuned to a dead channel.","input_type":"ingest"}'' "$ELASTICSEARCH_URL/_inference/text_embedding/my-cohere-endpoint"'
      - lang: Java
        source: |
          client.inference().textEmbedding(t -> t
              .inferenceId("my-cohere-endpoint")
              .input("The sky above the port was the color of television tuned to a dead channel.")
              .inputType("ingest")
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_inference/{task_type}/{inference_id}/_update":
    put:
      tags:
      - inference
      summary: 'Update an inference endpoint

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb put\">PUT</span>\n                      <span class=\"operation-path\">/_inference/{inference_id}/_update</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb put\">PUT</span>\n                      <span class=\"operation-path\">/_inference/{task_type}/{inference_id}/_update</span>\n
        \                     </div>\n                    \n\nModify `task_settings`,
        secrets (within `service_settings`), or `num_allocations` for an inference
        endpoint, depending on the specific endpoint service and `task_type`.\n\nIMPORTANT:
        The inference APIs enable you to use certain services, such as built-in machine
        learning models (ELSER, E5), models uploaded through Eland, Cohere, OpenAI,
        Azure, Google AI Studio, Google Vertex AI, Anthropic, Watsonx.ai, or Hugging
        Face.\nFor built-in models and models uploaded through Eland, the inference
        APIs offer an alternative way to use and manage trained models.\nHowever,
        if you do not plan to use the inference APIs to use these models or if you
        want to use non-NLP models, use the machine learning trained model APIs.\n\n##
        Required authorization\n\n* Cluster privileges: `manage_inference`\n"
      operationId: inference-update
      parameters:
      - "$ref": "#/components/parameters/inference.update-task_type"
      - "$ref": "#/components/parameters/inference.update-inference_id"
      requestBody:
        "$ref": "#/components/requestBodies/inference.update"
      responses:
        '200':
          "$ref": "#/components/responses/inference.update-200"
      x-state: Generally available; Added in 8.17.0
      x-codeSamples:
      - lang: Console
        source: |-
          PUT _inference/my-inference-endpoint/_update
          {
           "service_settings": {
             "api_key": "<API_KEY>"
           },
          "service": "example-service"
          }
      - lang: Python
        source: |-
          resp = client.inference.update(
              inference_id="my-inference-endpoint",
              inference_config={
                  "service_settings": {
                      "api_key": "<API_KEY>"
                  },
                  "service": "example-service"
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.inference.update({
            inference_id: "my-inference-endpoint",
            inference_config: {
              service_settings: {
                api_key: "<API_KEY>",
              },
              service: "example-service",
            },
          });
      - lang: Ruby
        source: |-
          response = client.inference.update(
            inference_id: "my-inference-endpoint",
            body: {
              "service_settings": {
                "api_key": "<API_KEY>"
              },
              "service": "example-service"
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->inference()->update([
              "inference_id" => "my-inference-endpoint",
              "body" => [
                  "service_settings" => [
                      "api_key" => "<API_KEY>",
                  ],
                  "service" => "example-service",
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"service_settings":{"api_key":"<API_KEY>"},"service":"example-service"}''
          "$ELASTICSEARCH_URL/_inference/my-inference-endpoint/_update"'
      - lang: Java
        source: |
          client.inference().update(u -> u
              .inferenceId("my-inference-endpoint")
              .inferenceConfig(i -> i
                  .service("example-service")
                  .serviceSettings(JsonData.fromJson("{\"api_key\":\"<API_KEY>\"}"))
              )
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/":
    get:
      tags:
      - info
      summary: Get cluster info
      description: |
        Get basic build, version, and cluster information.
        ::: In Serverless, this API is retained for backward compatibility only. Some response fields, such as the version number, should be ignored.

        ## Required authorization

        * Cluster privileges: `monitor`
      operationId: info
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  cluster_name:
                    description: The responding cluster's name.
                    allOf:
                    - "$ref": "#/components/schemas/_types.Name"
                  cluster_uuid:
                    allOf:
                    - "$ref": "#/components/schemas/_types.Uuid"
                  name:
                    description: The responding node's name.
                    allOf:
                    - "$ref": "#/components/schemas/_types.Name"
                  tagline:
                    type: string
                  version:
                    description: The running version of Elasticsearch.
                    allOf:
                    - "$ref": "#/components/schemas/_types.ElasticsearchVersionInfo"
                required:
                - cluster_name
                - cluster_uuid
                - name
                - tagline
                - version
              examples:
                RootNodeInfoResponseExample1:
                  summary: Stack response
                  description: A successful response from `GET /`.
                  value: |-
                    {
                      "name": "instance-0000000000",
                      "cluster_name": "my_test_cluster",
                      "cluster_uuid": "zk-HjQtYQGyL3NFSSu7InA",
                      "version": {
                        "number": "9.1.0",
                        "build_flavor": "default",
                        "build_type": "docker",
                        "build_hash": 0,
                        "build_date": "2025-07-09T22:10:13.578Z",
                        "build_snapshot": false,
                        "lucene_version": "10.2.2",
                        "minimum_wire_compatibility_version": "8.19.0",
                        "minimum_index_compatibility_version": "8.0.0"
                      },
                      "tagline": "You Know, for Search"
                    }
                RootNodeInfoResponseExample2:
                  summary: Serverless response
                  description: A successful response from `GET /` on Serverless. This
                    API is retained for backward compatibility only. Some fields,
                    such as the version number, return static values and should be
                    ignored.
                  value: |-
                    {
                      "name": "serverless",
                      "cluster_name": "my_test_serverless_cluster",
                      "cluster_uuid": "8xx0pi24Squnf4PFDOAtwg",
                      "version": {
                        "number": "8.11.0",
                        "build_flavor": "serverless",
                        "build_type": "docker",
                        "build_hash": 0,
                        "build_date": "2023-10-31T00:00:00.000Z",
                        "build_snapshot": false,
                        "lucene_version": "9.7.0",
                        "minimum_wire_compatibility_version": "8.11.0",
                        "minimum_index_compatibility_version": "8.11.0"
                      },
                      "tagline": "You Know, for Search"
                    }
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'GET /

          '
      - lang: Python
        source: resp = client.info()
      - lang: JavaScript
        source: const response = await client.info();
      - lang: Ruby
        source: response = client.info
      - lang: PHP
        source: "$resp = $client->info();"
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/"'
      - lang: Java
        source: 'client.info();

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    head:
      tags:
      - cluster
      summary: Ping the cluster
      description: Get information about whether the cluster is running.
      operationId: ping
      responses:
        '200':
          description: ''
          content:
            application/json: {}
      x-state: Generally available
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_ingest/geoip/database/{id}":
    get:
      tags:
      - ingest
      summary: 'Get GeoIP database configurations

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_ingest/geoip/database</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_ingest/geoip/database/{id}</span>\n
        \                     </div>\n                    \n\nGet information about
        one or more IP geolocation database configurations."
      operationId: ingest-get-geoip-database
      parameters:
      - "$ref": "#/components/parameters/ingest.get_geoip_database-id"
      responses:
        '200':
          "$ref": "#/components/responses/ingest.get_geoip_database-200"
      x-state: Generally available; Added in 8.15.0
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    put:
      tags:
      - ingest
      summary: Create or update a GeoIP database configuration
      description: Refer to the create or update IP geolocation database configuration
        API.
      operationId: ingest-put-geoip-database
      parameters:
      - in: path
        name: id
        description: ID of the database configuration to create or update.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: master_timeout
        description: |-
          Period to wait for a connection to the master node.
          If no response is received before the timeout expires, the request fails and returns an error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: timeout
        description: Period to wait for a response. If no response is received before
          the timeout expires, the request fails and returns an error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  description: The provider-assigned name of the IP geolocation database
                    to download.
                  allOf:
                  - "$ref": "#/components/schemas/_types.Name"
                maxmind:
                  description: |-
                    The configuration necessary to identify which IP geolocation provider to use to download the database, as well as any provider-specific configuration necessary for such downloading.
                    At present, the only supported provider is maxmind, and the maxmind provider requires that an account_id (string) is configured.
                  allOf:
                  - "$ref": "#/components/schemas/ingest._types.Maxmind"
              required:
              - name
              - maxmind
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
      x-state: Generally available; Added in 8.15.0
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    delete:
      tags:
      - ingest
      summary: Delete GeoIP database configurations
      description: Delete one or more IP geolocation database configurations.
      operationId: ingest-delete-geoip-database
      parameters:
      - in: path
        name: id
        description: A comma-separated list of geoip database configurations to delete
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Ids"
        style: simple
      - in: query
        name: master_timeout
        description: |-
          The period to wait for a connection to the master node.
          If no response is received before the timeout expires, the request fails and returns an error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: timeout
        description: The period to wait for a response. If no response is received
          before the timeout expires, the request fails and returns an error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
      x-state: Generally available; Added in 8.15.0
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_ingest/ip_location/database/{id}":
    get:
      tags:
      - ingest
      summary: 'Get IP geolocation database configurations

        '
      description: |
        **All methods and paths for this operation:**

        <div>
                              <span class="operation-verb get">GET</span>
                              <span class="operation-path">/_ingest/ip_location/database</span>
                              </div>
                            <div>
                              <span class="operation-verb get">GET</span>
                              <span class="operation-path">/_ingest/ip_location/database/{id}</span>
                              </div>

        ## Required authorization

        * Cluster privileges: `manage`
      operationId: ingest-get-ip-location-database
      parameters:
      - "$ref": "#/components/parameters/ingest.get_ip_location_database-id"
      responses:
        '200':
          "$ref": "#/components/responses/ingest.get_ip_location_database-200"
      x-state: Generally available; Added in 8.15.0
      x-codeSamples:
      - lang: Console
        source: 'GET /_ingest/ip_location/database/my-database-id

          '
      - lang: Python
        source: |-
          resp = client.ingest.get_ip_location_database(
              id="my-database-id",
          )
      - lang: JavaScript
        source: |-
          const response = await client.ingest.getIpLocationDatabase({
            id: "my-database-id",
          });
      - lang: Ruby
        source: |-
          response = client.ingest.get_ip_location_database(
            id: "my-database-id"
          )
      - lang: PHP
        source: |-
          $resp = $client->ingest()->getIpLocationDatabase([
              "id" => "my-database-id",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_ingest/ip_location/database/my-database-id"'
      - lang: Java
        source: |
          client.ingest().getIpLocationDatabase(g -> g
              .id("my-database-id")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    put:
      tags:
      - ingest
      summary: Create or update an IP geolocation database configuration
      description: |2


        ## Required authorization

        * Cluster privileges: `manage`
      operationId: ingest-put-ip-location-database
      parameters:
      - in: path
        name: id
        description: The database configuration identifier.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: master_timeout
        description: |-
          The period to wait for a connection to the master node.
          If no response is received before the timeout expires, the request fails and returns an error.
          A value of `-1` indicates that the request should never time out.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: timeout
        description: |-
          The period to wait for a response from all relevant nodes in the cluster after updating the cluster metadata.
          If no response is received before the timeout expires, the cluster metadata update still applies but the response indicates that it was not completely acknowledged.
          A value of `-1` indicates that the request should never time out.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/ingest._types.DatabaseConfiguration"
            examples:
              IngestPutIpLocationDatabaseExample1:
                description: An example body for a `PUT _ingest/ip_location/database/my-database-1`
                  request.
                value: |-
                  {
                    "name": "GeoIP2-Domain",
                    "maxmind": {
                      "account_id": "1234567"
                    }
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
      x-state: Generally available; Added in 8.15.0
      x-codeSamples:
      - lang: Console
        source: |-
          PUT _ingest/ip_location/database/my-database-1
          {
            "name": "GeoIP2-Domain",
            "maxmind": {
              "account_id": "1234567"
            }
          }
      - lang: Python
        source: |-
          resp = client.ingest.put_ip_location_database(
              id="my-database-1",
              configuration={
                  "name": "GeoIP2-Domain",
                  "maxmind": {
                      "account_id": "1234567"
                  }
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.ingest.putIpLocationDatabase({
            id: "my-database-1",
            configuration: {
              name: "GeoIP2-Domain",
              maxmind: {
                account_id: "1234567",
              },
            },
          });
      - lang: Ruby
        source: |-
          response = client.ingest.put_ip_location_database(
            id: "my-database-1",
            body: {
              "name": "GeoIP2-Domain",
              "maxmind": {
                "account_id": "1234567"
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->ingest()->putIpLocationDatabase([
              "id" => "my-database-1",
              "body" => [
                  "name" => "GeoIP2-Domain",
                  "maxmind" => [
                      "account_id" => "1234567",
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"name":"GeoIP2-Domain","maxmind":{"account_id":"1234567"}}''
          "$ELASTICSEARCH_URL/_ingest/ip_location/database/my-database-1"'
      - lang: Java
        source: |
          client.ingest().putIpLocationDatabase(p -> p
              .id("my-database-1")
              .configuration(c -> c
                  .maxmind(m -> m
                      .accountId("1234567")
                  )
                  .name("GeoIP2-Domain")
              )
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    delete:
      tags:
      - ingest
      summary: Delete IP geolocation database configurations
      description: |2


        ## Required authorization

        * Cluster privileges: `manage`
      operationId: ingest-delete-ip-location-database
      parameters:
      - in: path
        name: id
        description: A comma-separated list of IP location database configurations.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Ids"
        style: simple
      - in: query
        name: master_timeout
        description: |-
          The period to wait for a connection to the master node.
          If no response is received before the timeout expires, the request fails and returns an error.
          A value of `-1` indicates that the request should never time out.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: timeout
        description: |-
          The period to wait for a response.
          If no response is received before the timeout expires, the request fails and returns an error.
          A value of `-1` indicates that the request should never time out.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
      x-state: Generally available; Added in 8.15.0
      x-codeSamples:
      - lang: Console
        source: 'DELETE /_ingest/ip_location/database/my-database-id

          '
      - lang: Python
        source: |-
          resp = client.ingest.delete_ip_location_database(
              id="my-database-id",
          )
      - lang: JavaScript
        source: |-
          const response = await client.ingest.deleteIpLocationDatabase({
            id: "my-database-id",
          });
      - lang: Ruby
        source: |-
          response = client.ingest.delete_ip_location_database(
            id: "my-database-id"
          )
      - lang: PHP
        source: |-
          $resp = $client->ingest()->deleteIpLocationDatabase([
              "id" => "my-database-id",
          ]);
      - lang: curl
        source: 'curl -X DELETE -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_ingest/ip_location/database/my-database-id"'
      - lang: Java
        source: |
          client.ingest().deleteIpLocationDatabase(d -> d
              .id("my-database-id")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_ingest/pipeline/{id}":
    get:
      tags:
      - ingest
      summary: 'Get pipelines

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_ingest/pipeline</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_ingest/pipeline/{id}</span>\n
        \                     </div>\n                    \n\nGet information about
        one or more ingest pipelines.\nThis API returns a local reference of the pipeline."
      externalDocs:
        url: https://www.elastic.co/docs/manage-data/ingest/transform-enrich/ingest-pipelines
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/get-pipeline-api.html
      operationId: ingest-get-pipeline
      parameters:
      - "$ref": "#/components/parameters/ingest.get_pipeline-id"
      - "$ref": "#/components/parameters/ingest.get_pipeline-master_timeout"
      - "$ref": "#/components/parameters/ingest.get_pipeline-summary"
      responses:
        '200':
          "$ref": "#/components/responses/ingest.get_pipeline-200"
      x-state: Generally available; Added in 5.0.0
      x-codeSamples:
      - lang: Console
        source: 'GET /_ingest/pipeline/my-pipeline-id

          '
      - lang: Python
        source: |-
          resp = client.ingest.get_pipeline(
              id="my-pipeline-id",
          )
      - lang: JavaScript
        source: |-
          const response = await client.ingest.getPipeline({
            id: "my-pipeline-id",
          });
      - lang: Ruby
        source: |-
          response = client.ingest.get_pipeline(
            id: "my-pipeline-id"
          )
      - lang: PHP
        source: |-
          $resp = $client->ingest()->getPipeline([
              "id" => "my-pipeline-id",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_ingest/pipeline/my-pipeline-id"'
      - lang: Java
        source: |
          client.ingest().getPipeline(g -> g
              .id("my-pipeline-id")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    put:
      tags:
      - ingest
      summary: Create or update a pipeline
      description: Changes made using this API take effect immediately.
      externalDocs:
        url: https://www.elastic.co/docs/manage-data/ingest/transform-enrich/ingest-pipelines
      operationId: ingest-put-pipeline
      parameters:
      - in: path
        name: id
        description: ID of the ingest pipeline to create or update.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: master_timeout
        description: Period to wait for a connection to the master node. If no response
          is received before the timeout expires, the request fails and returns an
          error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: timeout
        description: Period to wait for a response. If no response is received before
          the timeout expires, the request fails and returns an error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: if_version
        description: Required version for optimistic concurrency control for pipeline
          updates
        deprecated: false
        schema:
          type: number
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                _meta:
                  description: Optional metadata about the ingest pipeline. May have
                    any contents. This map is not automatically generated by Elasticsearch.
                  allOf:
                  - "$ref": "#/components/schemas/_types.Metadata"
                description:
                  description: Description of the ingest pipeline.
                  type: string
                on_failure:
                  description: Processors to run immediately after a processor failure.
                    Each processor supports a processor-level `on_failure` value.
                    If a processor without an `on_failure` value fails, Elasticsearch
                    uses this pipeline-level parameter as a fallback. The processors
                    in this parameter run sequentially in the order specified. Elasticsearch
                    will not attempt to run the pipeline's remaining processors.
                  type: array
                  items:
                    "$ref": "#/components/schemas/ingest._types.ProcessorContainer"
                processors:
                  description: Processors used to perform transformations on documents
                    before indexing. Processors run sequentially in the order specified.
                  type: array
                  items:
                    "$ref": "#/components/schemas/ingest._types.ProcessorContainer"
                version:
                  description: Version number used by external systems to track ingest
                    pipelines. This parameter is intended for external systems only.
                    Elasticsearch does not use or validate pipeline version numbers.
                  allOf:
                  - "$ref": "#/components/schemas/_types.VersionNumber"
                deprecated:
                  description: |-
                    Marks this ingest pipeline as deprecated.
                    When a deprecated ingest pipeline is referenced as the default or final pipeline when creating or updating a non-deprecated index template, Elasticsearch will emit a deprecation warning.
                  default: false
                  type: boolean
                field_access_pattern:
                  description: Controls how processors in this pipeline should read
                    and write data on a document's source.
                  default: classic
                  x-state: Generally available; Added in 9.2.0
                  allOf:
                  - "$ref": "#/components/schemas/ingest._types.FieldAccessPattern"
            examples:
              PutPipelineRequestExample1:
                summary: Create an ingest pipeline.
                value: |-
                  {
                    "description" : "My optional pipeline description",
                    "processors" : [
                      {
                        "set" : {
                          "description" : "My optional processor description",
                          "field": "my-keyword-field",
                          "value": "foo"
                        }
                      }
                    ]
                  }
              PutPipelineRequestExample2:
                summary: Create an ingest pipeline with metadata.
                description: You can use the `_meta` parameter to add arbitrary metadata
                  to a pipeline.
                value: |-
                  {
                    "description" : "My optional pipeline description",
                    "processors" : [
                      {
                        "set" : {
                          "description" : "My optional processor description",
                          "field": "my-keyword-field",
                          "value": "foo"
                        }
                      }
                    ],
                    "_meta": {
                      "reason": "set my-keyword-field to foo",
                      "serialization": {
                        "class": "MyPipeline",
                        "id": 10
                      }
                    }
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
      x-state: Generally available; Added in 5.0.0
      x-codeSamples:
      - lang: Console
        source: |-
          PUT _ingest/pipeline/my-pipeline-id
          {
            "description" : "My optional pipeline description",
            "processors" : [
              {
                "set" : {
                  "description" : "My optional processor description",
                  "field": "my-keyword-field",
                  "value": "foo"
                }
              }
            ]
          }
      - lang: Python
        source: |-
          resp = client.ingest.put_pipeline(
              id="my-pipeline-id",
              description="My optional pipeline description",
              processors=[
                  {
                      "set": {
                          "description": "My optional processor description",
                          "field": "my-keyword-field",
                          "value": "foo"
                      }
                  }
              ],
          )
      - lang: JavaScript
        source: |-
          const response = await client.ingest.putPipeline({
            id: "my-pipeline-id",
            description: "My optional pipeline description",
            processors: [
              {
                set: {
                  description: "My optional processor description",
                  field: "my-keyword-field",
                  value: "foo",
                },
              },
            ],
          });
      - lang: Ruby
        source: |-
          response = client.ingest.put_pipeline(
            id: "my-pipeline-id",
            body: {
              "description": "My optional pipeline description",
              "processors": [
                {
                  "set": {
                    "description": "My optional processor description",
                    "field": "my-keyword-field",
                    "value": "foo"
                  }
                }
              ]
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->ingest()->putPipeline([
              "id" => "my-pipeline-id",
              "body" => [
                  "description" => "My optional pipeline description",
                  "processors" => array(
                      [
                          "set" => [
                              "description" => "My optional processor description",
                              "field" => "my-keyword-field",
                              "value" => "foo",
                          ],
                      ],
                  ),
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"description":"My optional pipeline description","processors":[{"set":{"description":"My
          optional processor description","field":"my-keyword-field","value":"foo"}}]}''
          "$ELASTICSEARCH_URL/_ingest/pipeline/my-pipeline-id"'
      - lang: Java
        source: |
          client.ingest().putPipeline(p -> p
              .description("My optional pipeline description")
              .id("my-pipeline-id")
              .processors(pr -> pr
                  .set(s -> s
                      .field("my-keyword-field")
                      .value(JsonData.fromJson("\"foo\""))
                      .description("My optional processor description")
                  )
              )
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    delete:
      tags:
      - ingest
      summary: Delete pipelines
      description: Delete one or more ingest pipelines.
      externalDocs:
        url: https://www.elastic.co/docs/manage-data/ingest/transform-enrich/ingest-pipelines
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/delete-pipeline-api.html
      operationId: ingest-delete-pipeline
      parameters:
      - in: path
        name: id
        description: |-
          Pipeline ID or wildcard expression of pipeline IDs used to limit the request.
          To delete all ingest pipelines in a cluster, use a value of `*`.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: master_timeout
        description: |-
          Period to wait for a connection to the master node.
          If no response is received before the timeout expires, the request fails and returns an error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: timeout
        description: |-
          Period to wait for a response.
          If no response is received before the timeout expires, the request fails and returns an error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
      x-state: Generally available; Added in 5.0.0
      x-codeSamples:
      - lang: Console
        source: 'DELETE /_ingest/pipeline/my-pipeline-id

          '
      - lang: Python
        source: |-
          resp = client.ingest.delete_pipeline(
              id="my-pipeline-id",
          )
      - lang: JavaScript
        source: |-
          const response = await client.ingest.deletePipeline({
            id: "my-pipeline-id",
          });
      - lang: Ruby
        source: |-
          response = client.ingest.delete_pipeline(
            id: "my-pipeline-id"
          )
      - lang: PHP
        source: |-
          $resp = $client->ingest()->deletePipeline([
              "id" => "my-pipeline-id",
          ]);
      - lang: curl
        source: 'curl -X DELETE -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_ingest/pipeline/my-pipeline-id"'
      - lang: Java
        source: |
          client.ingest().deletePipeline(d -> d
              .id("my-pipeline-id")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_ingest/geoip/stats":
    get:
      tags:
      - ingest
      summary: Get GeoIP statistics
      description: Get download statistics for GeoIP2 databases that are used with
        the GeoIP processor.
      externalDocs:
        url: https://www.elastic.co/docs/reference/enrich-processor/geoip-processor
      operationId: ingest-geo-ip-stats
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  stats:
                    description: Download statistics for all GeoIP2 databases.
                    allOf:
                    - "$ref": "#/components/schemas/ingest.geo_ip_stats.GeoIpDownloadStatistics"
                  nodes:
                    description: Downloaded GeoIP2 databases for each node.
                    type: object
                    additionalProperties:
                      "$ref": "#/components/schemas/ingest.geo_ip_stats.GeoIpNodeDatabases"
                required:
                - stats
                - nodes
      x-state: Generally available; Added in 7.13.0
      x-codeSamples:
      - lang: Console
        source: 'GET _ingest/geoip/stats

          '
      - lang: Python
        source: resp = client.ingest.geo_ip_stats()
      - lang: JavaScript
        source: const response = await client.ingest.geoIpStats();
      - lang: Ruby
        source: response = client.ingest.geo_ip_stats
      - lang: PHP
        source: "$resp = $client->ingest()->geoIpStats();"
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_ingest/geoip/stats"'
      - lang: Java
        source: 'client.ingest().geoIpStats();

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_ingest/processor/grok":
    get:
      tags:
      - ingest
      summary: Run a grok processor
      description: |-
        Extract structured fields out of a single text field within a document.
        You must choose which field to extract matched fields from, as well as the grok pattern you expect will match.
        A grok pattern is like a regular expression that supports aliased expressions that can be reused.
      externalDocs:
        url: https://www.elastic.co/docs/reference/enrich-processor/grok-processor
      operationId: ingest-processor-grok
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  patterns:
                    type: object
                    additionalProperties:
                      type: string
                required:
                - patterns
      x-state: Generally available; Added in 6.1.0
      x-codeSamples:
      - lang: Console
        source: 'GET _ingest/processor/grok

          '
      - lang: Python
        source: resp = client.ingest.processor_grok()
      - lang: JavaScript
        source: const response = await client.ingest.processorGrok();
      - lang: Ruby
        source: response = client.ingest.processor_grok
      - lang: PHP
        source: "$resp = $client->ingest()->processorGrok();"
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_ingest/processor/grok"'
      - lang: Java
        source: 'client.ingest().processorGrok();

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_ingest/pipeline/{id}/_simulate":
    post:
      tags:
      - ingest
      summary: 'Simulate a pipeline

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_ingest/pipeline/_simulate</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_ingest/pipeline/_simulate</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_ingest/pipeline/{id}/_simulate</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_ingest/pipeline/{id}/_simulate</span>\n
        \                     </div>\n                    \n\nRun an ingest pipeline
        against a set of provided documents.\nYou can either specify an existing pipeline
        to use with the provided documents or supply a pipeline definition in the
        body of the request.\n\n## Required authorization\n\n* Cluster privileges:
        `read_pipeline`\n"
      operationId: ingest-simulate
      parameters:
      - "$ref": "#/components/parameters/ingest.simulate-id"
      - "$ref": "#/components/parameters/ingest.simulate-verbose"
      requestBody:
        "$ref": "#/components/requestBodies/ingest.simulate"
      responses:
        '200':
          "$ref": "#/components/responses/ingest.simulate-200"
      x-state: Generally available; Added in 5.0.0
      x-codeSamples:
      - lang: Console
        source: |-
          POST /_ingest/pipeline/_simulate
          {
            "pipeline" :
            {
              "description": "_description",
              "processors": [
                {
                  "set" : {
                    "field" : "field2",
                    "value" : "_value"
                  }
                }
              ]
            },
            "docs": [
              {
                "_index": "index",
                "_id": "id",
                "_source": {
                  "foo": "bar"
                }
              },
              {
                "_index": "index",
                "_id": "id",
                "_source": {
                  "foo": "rab"
                }
              }
            ]
          }
      - lang: Python
        source: |-
          resp = client.ingest.simulate(
              pipeline={
                  "description": "_description",
                  "processors": [
                      {
                          "set": {
                              "field": "field2",
                              "value": "_value"
                          }
                      }
                  ]
              },
              docs=[
                  {
                      "_index": "index",
                      "_id": "id",
                      "_source": {
                          "foo": "bar"
                      }
                  },
                  {
                      "_index": "index",
                      "_id": "id",
                      "_source": {
                          "foo": "rab"
                      }
                  }
              ],
          )
      - lang: JavaScript
        source: |-
          const response = await client.ingest.simulate({
            pipeline: {
              description: "_description",
              processors: [
                {
                  set: {
                    field: "field2",
                    value: "_value",
                  },
                },
              ],
            },
            docs: [
              {
                _index: "index",
                _id: "id",
                _source: {
                  foo: "bar",
                },
              },
              {
                _index: "index",
                _id: "id",
                _source: {
                  foo: "rab",
                },
              },
            ],
          });
      - lang: Ruby
        source: |-
          response = client.ingest.simulate(
            body: {
              "pipeline": {
                "description": "_description",
                "processors": [
                  {
                    "set": {
                      "field": "field2",
                      "value": "_value"
                    }
                  }
                ]
              },
              "docs": [
                {
                  "_index": "index",
                  "_id": "id",
                  "_source": {
                    "foo": "bar"
                  }
                },
                {
                  "_index": "index",
                  "_id": "id",
                  "_source": {
                    "foo": "rab"
                  }
                }
              ]
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->ingest()->simulate([
              "body" => [
                  "pipeline" => [
                      "description" => "_description",
                      "processors" => array(
                          [
                              "set" => [
                                  "field" => "field2",
                                  "value" => "_value",
                              ],
                          ],
                      ),
                  ],
                  "docs" => array(
                      [
                          "_index" => "index",
                          "_id" => "id",
                          "_source" => [
                              "foo" => "bar",
                          ],
                      ],
                      [
                          "_index" => "index",
                          "_id" => "id",
                          "_source" => [
                              "foo" => "rab",
                          ],
                      ],
                  ),
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"pipeline":{"description":"_description","processors":[{"set":{"field":"field2","value":"_value"}}]},"docs":[{"_index":"index","_id":"id","_source":{"foo":"bar"}},{"_index":"index","_id":"id","_source":{"foo":"rab"}}]}''
          "$ELASTICSEARCH_URL/_ingest/pipeline/_simulate"'
      - lang: Java
        source: |
          client.ingest().simulate(s -> s
              .docs(List.of(Document.of(d -> d
                      .id("id")
                      .index("index")
                      .source(JsonData.fromJson("{\"foo\":\"bar\"}"))
                  ),Document.of(d -> d
                      .id("id")
                      .index("index")
                      .source(JsonData.fromJson("{\"foo\":\"rab\"}"))
                  )))
              .pipeline(p -> p
                  .description("_description")
                  .processors(pr -> pr
                      .set(se -> se
                          .field("field2")
                          .value(JsonData.fromJson("\"_value\""))
                      )
                  )
              )
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_license":
    get:
      tags:
      - license
      summary: Get license information
      description: |-
        Get information about your Elastic license including its type, its status, when it was issued, and when it expires.

        >info
        > If the master node is generating a new cluster state, the get license API may return a `404 Not Found` response.
        > If you receive an unexpected 404 response after cluster startup, wait a short period and retry the request.
      operationId: license-get
      parameters:
      - in: query
        name: accept_enterprise
        description: |-
          If `true`, this parameter returns enterprise for Enterprise license types. If `false`, this parameter returns platinum for both platinum and enterprise license types. This behavior is maintained for backwards compatibility.
          This parameter is deprecated and will always be set to true in 8.x.
        deprecated: true
        schema:
          type: boolean
        style: form
      - in: query
        name: local
        description: |-
          Specifies whether to retrieve local information.
          From 9.2 onwards the default value is `true`, which means the information is retrieved from the responding node.
          In earlier versions the default is `false`, which means the information is retrieved from the elected master node.
        deprecated: false
        schema:
          type: boolean
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  license:
                    allOf:
                    - "$ref": "#/components/schemas/license.get.LicenseInformation"
                required:
                - license
              examples:
                GetLicenseResponseExample1:
                  description: A successful response from `GET /_license`.
                  value: |-
                    {
                      "license" : {
                        "status" : "active",
                        "uid" : "cbff45e7-c553-41f7-ae4f-9205eabd80xx",
                        "type" : "trial",
                        "issue_date" : "2018-10-20T22:05:12.332Z",
                        "issue_date_in_millis" : 1540073112332,
                        "expiry_date" : "2018-11-19T22:05:12.332Z",
                        "expiry_date_in_millis" : 1542665112332,
                        "max_nodes" : 1000,
                        "max_resource_units" : null,
                        "issued_to" : "test",
                        "issuer" : "elasticsearch",
                        "start_date_in_millis" : -1
                      }
                    }
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'GET /_license

          '
      - lang: Python
        source: resp = client.license.get()
      - lang: JavaScript
        source: const response = await client.license.get();
      - lang: Ruby
        source: response = client.license.get
      - lang: PHP
        source: "$resp = $client->license()->get();"
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_license"'
      - lang: Java
        source: 'client.license().get(g -> g);

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    post:
      tags:
      - license
      summary: 'Update the license

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb put\">PUT</span>\n                      <span class=\"operation-path\">/_license</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_license</span>\n
        \                     </div>\n                    \n\nYou can update your
        license at runtime without shutting down your nodes.\nLicense updates take
        effect immediately.\nIf the license you are installing does not support all
        of the features that were available with your previous license, however, you
        are notified in the response.\nYou must then re-submit the API request with
        the acknowledge parameter set to true.\n\nNOTE: If Elasticsearch security
        features are enabled and you are installing a gold or higher license, you
        must enable TLS on the transport networking layer before you install the license.\nIf
        the operator privileges feature is enabled, only operator users can use this
        API.\n\n## Required authorization\n\n* Cluster privileges: `manage`\n"
      operationId: license-post
      parameters:
      - "$ref": "#/components/parameters/license.post-acknowledge"
      - "$ref": "#/components/parameters/license.post-master_timeout"
      - "$ref": "#/components/parameters/license.post-timeout"
      requestBody:
        "$ref": "#/components/requestBodies/license.post"
      responses:
        '200':
          "$ref": "#/components/responses/license.post-200"
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: |-
          PUT _license
          {
            "licenses": [
              {
                "uid":"893361dc-9749-4997-93cb-802e3d7fa4xx",
                "type":"basic",
                "issue_date_in_millis":1411948800000,
                "expiry_date_in_millis":1914278399999,
                "max_nodes":1,
                "issued_to":"issuedTo",
                "issuer":"issuer",
                "signature":"xx"
              }
              ]
          }
      - lang: Python
        source: |-
          resp = client.license.post(
              licenses=[
                  {
                      "uid": "893361dc-9749-4997-93cb-802e3d7fa4xx",
                      "type": "basic",
                      "issue_date_in_millis": 1411948800000,
                      "expiry_date_in_millis": 1914278399999,
                      "max_nodes": 1,
                      "issued_to": "issuedTo",
                      "issuer": "issuer",
                      "signature": "xx"
                  }
              ],
          )
      - lang: JavaScript
        source: |-
          const response = await client.license.post({
            licenses: [
              {
                uid: "893361dc-9749-4997-93cb-802e3d7fa4xx",
                type: "basic",
                issue_date_in_millis: 1411948800000,
                expiry_date_in_millis: 1914278399999,
                max_nodes: 1,
                issued_to: "issuedTo",
                issuer: "issuer",
                signature: "xx",
              },
            ],
          });
      - lang: Ruby
        source: |-
          response = client.license.post(
            body: {
              "licenses": [
                {
                  "uid": "893361dc-9749-4997-93cb-802e3d7fa4xx",
                  "type": "basic",
                  "issue_date_in_millis": 1411948800000,
                  "expiry_date_in_millis": 1914278399999,
                  "max_nodes": 1,
                  "issued_to": "issuedTo",
                  "issuer": "issuer",
                  "signature": "xx"
                }
              ]
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->license()->post([
              "body" => [
                  "licenses" => array(
                      [
                          "uid" => "893361dc-9749-4997-93cb-802e3d7fa4xx",
                          "type" => "basic",
                          "issue_date_in_millis" => 1411948800000,
                          "expiry_date_in_millis" => 1914278399999,
                          "max_nodes" => 1,
                          "issued_to" => "issuedTo",
                          "issuer" => "issuer",
                          "signature" => "xx",
                      ],
                  ),
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"licenses":[{"uid":"893361dc-9749-4997-93cb-802e3d7fa4xx","type":"basic","issue_date_in_millis":1411948800000,"expiry_date_in_millis":1914278399999,"max_nodes":1,"issued_to":"issuedTo","issuer":"issuer","signature":"xx"}]}''
          "$ELASTICSEARCH_URL/_license"'
      - lang: Java
        source: |
          client.license().post(p -> p
              .licenses(l -> l
                  .expiryDateInMillis(1914278399999L)
                  .issueDateInMillis(1411948800000L)
                  .issuedTo("issuedTo")
                  .issuer("issuer")
                  .maxNodes(1L)
                  .signature("xx")
                  .type(LicenseType.Basic)
                  .uid("893361dc-9749-4997-93cb-802e3d7fa4xx")
              )
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    delete:
      tags:
      - license
      summary: Delete the license
      description: |
        When the license expires, your subscription level reverts to Basic.

        If the operator privileges feature is enabled, only operator users can use this API.

        ## Required authorization

        * Cluster privileges: `manage`
      externalDocs:
        url: https://www.elastic.co/docs/deploy-manage/license/manage-your-license-in-self-managed-cluster
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/delete-license.html
      operationId: license-delete
      parameters:
      - in: query
        name: master_timeout
        description: The period to wait for a connection to the master node.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: timeout
        description: The period to wait for a response. If no response is received
          before the timeout expires, the request fails and returns an error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'DELETE /_license

          '
      - lang: Python
        source: resp = client.license.delete()
      - lang: JavaScript
        source: const response = await client.license.delete();
      - lang: Ruby
        source: response = client.license.delete
      - lang: PHP
        source: "$resp = $client->license()->delete();"
      - lang: curl
        source: 'curl -X DELETE -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_license"'
      - lang: Java
        source: 'client.license().delete(d -> d);

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_license/basic_status":
    get:
      tags:
      - license
      summary: Get the basic license status
      description: |2


        ## Required authorization

        * Cluster privileges: `monitor`
      operationId: license-get-basic-status
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  eligible_to_start_basic:
                    type: boolean
                required:
                - eligible_to_start_basic
              examples:
                GetBasicLicenseStatusResponseExample1:
                  description: A successful response from `GET /_license/basic_status`.
                  value: |-
                    {
                      "eligible_to_start_basic": true
                    }
      x-state: Generally available; Added in 6.3.0
      x-codeSamples:
      - lang: Console
        source: 'GET /_license/basic_status

          '
      - lang: Python
        source: resp = client.license.get_basic_status()
      - lang: JavaScript
        source: const response = await client.license.getBasicStatus();
      - lang: Ruby
        source: response = client.license.get_basic_status
      - lang: PHP
        source: "$resp = $client->license()->getBasicStatus();"
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_license/basic_status"'
      - lang: Java
        source: 'client.license().getBasicStatus();

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_license/trial_status":
    get:
      tags:
      - license
      summary: Get the trial status
      description: |2


        ## Required authorization

        * Cluster privileges: `monitor`
      operationId: license-get-trial-status
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  eligible_to_start_trial:
                    type: boolean
                required:
                - eligible_to_start_trial
              examples:
                GetTrialLicenseStatusResponseExample1:
                  description: A successful response from `GET /_license/trial_status`.
                  value: |-
                    {
                      "eligible_to_start_trial": true
                    }
      x-state: Generally available; Added in 6.1.0
      x-codeSamples:
      - lang: Console
        source: 'GET /_license/trial_status

          '
      - lang: Python
        source: resp = client.license.get_trial_status()
      - lang: JavaScript
        source: const response = await client.license.getTrialStatus();
      - lang: Ruby
        source: response = client.license.get_trial_status
      - lang: PHP
        source: "$resp = $client->license()->getTrialStatus();"
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_license/trial_status"'
      - lang: Java
        source: 'client.license().getTrialStatus();

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_license/start_basic":
    post:
      tags:
      - license
      summary: Start a basic license
      description: |
        Start an indefinite basic license, which gives access to all the basic features.

        NOTE: In order to start a basic license, you must not currently have a basic license.

        If the basic license does not support all of the features that are available with your current license, however, you are notified in the response.
        You must then re-submit the API request with the `acknowledge` parameter set to `true`.

        To check the status of your basic license, use the get basic license API.

        ## Required authorization

        * Cluster privileges: `manage`
      operationId: license-post-start-basic
      parameters:
      - in: query
        name: acknowledge
        description: Whether the user has acknowledged acknowledge messages
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: master_timeout
        description: Period to wait for a connection to the master node.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: timeout
        description: Period to wait for a response. If no response is received before
          the timeout expires, the request fails and returns an error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  acknowledged:
                    type: boolean
                  basic_was_started:
                    type: boolean
                  error_message:
                    type: string
                  type:
                    allOf:
                    - "$ref": "#/components/schemas/license._types.LicenseType"
                  acknowledge:
                    type: object
                    additionalProperties:
                      oneOf:
                      - type: string
                      - type: array
                        items:
                          type: string
                required:
                - acknowledged
                - basic_was_started
              examples:
                StartBasicLicenseResponseExample1:
                  description: A successful response from `POST /_license/start_basic?acknowledge=true`.
                    If you currently have a license with more features than a basic
                    license and you start a basic license, you must pass the acknowledge
                    parameter.
                  value: |-
                    {
                      "basic_was_started": true,
                      "acknowledged": true
                    }
      x-state: Generally available; Added in 6.3.0
      x-codeSamples:
      - lang: Console
        source: 'POST /_license/start_basic?acknowledge=true

          '
      - lang: Python
        source: |-
          resp = client.license.post_start_basic(
              acknowledge=True,
          )
      - lang: JavaScript
        source: |-
          const response = await client.license.postStartBasic({
            acknowledge: "true",
          });
      - lang: Ruby
        source: |-
          response = client.license.post_start_basic(
            acknowledge: "true"
          )
      - lang: PHP
        source: |-
          $resp = $client->license()->postStartBasic([
              "acknowledge" => "true",
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_license/start_basic?acknowledge=true"'
      - lang: Java
        source: |
          client.license().postStartBasic(p -> p
              .acknowledge(true)
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_license/start_trial":
    post:
      tags:
      - license
      summary: Start a trial
      description: |
        Start a 30-day trial, which gives access to all subscription features.

        NOTE: You are allowed to start a trial only if your cluster has not already activated a trial for the current major product version.
        For example, if you have already activated a trial for v8.0, you cannot start a new trial until v9.0. You can, however, request an extended trial at https://www.elastic.co/trialextension.

        To check the status of your trial, use the get trial status API.

        ## Required authorization

        * Cluster privileges: `manage`
      operationId: license-post-start-trial
      parameters:
      - in: query
        name: acknowledge
        description: Whether the user has acknowledged acknowledge messages
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: type
        description: The type of trial license to generate
        deprecated: false
        schema:
          type: string
        style: form
      - in: query
        name: master_timeout
        description: Period to wait for a connection to the master node.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  acknowledged:
                    type: boolean
                  error_message:
                    type: string
                  trial_was_started:
                    type: boolean
                  type:
                    allOf:
                    - "$ref": "#/components/schemas/license._types.LicenseType"
                required:
                - acknowledged
                - trial_was_started
              examples:
                StartTrialLicenseResponseExample1:
                  description: A successful response from `POST /_license/start_trial?acknowledge=true`.
                  value: |-
                    {
                      "trial_was_started": true,
                      "acknowledged": true
                    }
      x-state: Generally available; Added in 6.1.0
      x-codeSamples:
      - lang: Console
        source: 'POST /_license/start_trial?acknowledge=true

          '
      - lang: Python
        source: |-
          resp = client.license.post_start_trial(
              acknowledge=True,
          )
      - lang: JavaScript
        source: |-
          const response = await client.license.postStartTrial({
            acknowledge: "true",
          });
      - lang: Ruby
        source: |-
          response = client.license.post_start_trial(
            acknowledge: "true"
          )
      - lang: PHP
        source: |-
          $resp = $client->license()->postStartTrial([
              "acknowledge" => "true",
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_license/start_trial?acknowledge=true"'
      - lang: Java
        source: |
          client.license().postStartTrial(p -> p
              .acknowledge(true)
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_logstash/pipeline/{id}":
    get:
      tags:
      - logstash
      summary: 'Get Logstash pipelines

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_logstash/pipeline</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_logstash/pipeline/{id}</span>\n
        \                     </div>\n                    \n\nGet pipelines that are
        used for Logstash Central Management.\n\n## Required authorization\n\n* Cluster
        privileges: `manage_logstash_pipelines`\n"
      externalDocs:
        url: https://www.elastic.co/docs/reference/logstash/logstash-centralized-pipeline-management
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/logstash-api-get-pipeline.html
      operationId: logstash-get-pipeline
      parameters:
      - "$ref": "#/components/parameters/logstash.get_pipeline-id"
      responses:
        '200':
          "$ref": "#/components/responses/logstash.get_pipeline-200"
      x-state: Generally available; Added in 7.12.0
      x-codeSamples:
      - lang: Console
        source: 'GET _logstash/pipeline/my_pipeline

          '
      - lang: Python
        source: |-
          resp = client.logstash.get_pipeline(
              id="my_pipeline",
          )
      - lang: JavaScript
        source: |-
          const response = await client.logstash.getPipeline({
            id: "my_pipeline",
          });
      - lang: Ruby
        source: |-
          response = client.logstash.get_pipeline(
            id: "my_pipeline"
          )
      - lang: PHP
        source: |-
          $resp = $client->logstash()->getPipeline([
              "id" => "my_pipeline",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_logstash/pipeline/my_pipeline"'
      - lang: Java
        source: |
          client.logstash().getPipeline(g -> g
              .id("my_pipeline")
          );
      x-metaTags:
      - content: Elasticsearch, Logstash
        name: product_name
    put:
      tags:
      - logstash
      summary: Create or update a Logstash pipeline
      description: |
        Create a pipeline that is used for Logstash Central Management.
        If the specified pipeline exists, it is replaced.

        ## Required authorization

        * Cluster privileges: `manage_logstash_pipelines`
      externalDocs:
        url: https://www.elastic.co/docs/reference/logstash/logstash-centralized-pipeline-management
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/logstash-api-put-pipeline.html
      operationId: logstash-put-pipeline
      parameters:
      - in: path
        name: id
        description: |-
          An identifier for the pipeline.
          Pipeline IDs must begin with a letter or underscore and contain only letters, underscores, dashes, hyphens and numbers.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/logstash._types.Pipeline"
            examples:
              LogstashPutPipelineRequestExample1:
                summary: Create a pipeline
                description: Run `PUT _logstash/pipeline/my_pipeline` to create a
                  pipeline.
                value: |-
                  {
                    "description": "Sample pipeline for illustration purposes",
                    "last_modified": "2021-01-02T02:50:51.250Z",
                    "pipeline_metadata": {
                      "type": "logstash_pipeline",
                      "version": 1
                    },
                    "username": "elastic",
                    "pipeline": "input {}\\n filter { grok {} }\\n output {}",
                    "pipeline_settings": {
                      "pipeline.workers": 1,
                      "pipeline.batch.size": 125,
                      "pipeline.batch.delay": 50,
                      "queue.type": "memory",
                      "queue.max_bytes": "1gb",
                      "queue.checkpoint.writes": 1024
                    }
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json: {}
      x-state: Generally available; Added in 7.12.0
      x-codeSamples:
      - lang: Console
        source: |-
          PUT _logstash/pipeline/my_pipeline
          {
            "description": "Sample pipeline for illustration purposes",
            "last_modified": "2021-01-02T02:50:51.250Z",
            "pipeline_metadata": {
              "type": "logstash_pipeline",
              "version": 1
            },
            "username": "elastic",
            "pipeline": "input {}\\n filter { grok {} }\\n output {}",
            "pipeline_settings": {
              "pipeline.workers": 1,
              "pipeline.batch.size": 125,
              "pipeline.batch.delay": 50,
              "queue.type": "memory",
              "queue.max_bytes": "1gb",
              "queue.checkpoint.writes": 1024
            }
          }
      - lang: Python
        source: |-
          resp = client.logstash.put_pipeline(
              id="my_pipeline",
              pipeline={
                  "description": "Sample pipeline for illustration purposes",
                  "last_modified": "2021-01-02T02:50:51.250Z",
                  "pipeline_metadata": {
                      "type": "logstash_pipeline",
                      "version": 1
                  },
                  "username": "elastic",
                  "pipeline": "input {}\\n filter { grok {} }\\n output {}",
                  "pipeline_settings": {
                      "pipeline.workers": 1,
                      "pipeline.batch.size": 125,
                      "pipeline.batch.delay": 50,
                      "queue.type": "memory",
                      "queue.max_bytes": "1gb",
                      "queue.checkpoint.writes": 1024
                  }
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.logstash.putPipeline({
            id: "my_pipeline",
            pipeline: {
              description: "Sample pipeline for illustration purposes",
              last_modified: "2021-01-02T02:50:51.250Z",
              pipeline_metadata: {
                type: "logstash_pipeline",
                version: 1,
              },
              username: "elastic",
              pipeline: "input {}\\n filter { grok {} }\\n output {}",
              pipeline_settings: {
                "pipeline.workers": 1,
                "pipeline.batch.size": 125,
                "pipeline.batch.delay": 50,
                "queue.type": "memory",
                "queue.max_bytes": "1gb",
                "queue.checkpoint.writes": 1024,
              },
            },
          });
      - lang: Ruby
        source: |-
          response = client.logstash.put_pipeline(
            id: "my_pipeline",
            body: {
              "description": "Sample pipeline for illustration purposes",
              "last_modified": "2021-01-02T02:50:51.250Z",
              "pipeline_metadata": {
                "type": "logstash_pipeline",
                "version": 1
              },
              "username": "elastic",
              "pipeline": "input {}\\n filter { grok {} }\\n output {}",
              "pipeline_settings": {
                "pipeline.workers": 1,
                "pipeline.batch.size": 125,
                "pipeline.batch.delay": 50,
                "queue.type": "memory",
                "queue.max_bytes": "1gb",
                "queue.checkpoint.writes": 1024
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->logstash()->putPipeline([
              "id" => "my_pipeline",
              "body" => [
                  "description" => "Sample pipeline for illustration purposes",
                  "last_modified" => "2021-01-02T02:50:51.250Z",
                  "pipeline_metadata" => [
                      "type" => "logstash_pipeline",
                      "version" => 1,
                  ],
                  "username" => "elastic",
                  "pipeline" => "input {}\\n filter { grok {} }\\n output {}",
                  "pipeline_settings" => [
                      "pipeline.workers" => 1,
                      "pipeline.batch.size" => 125,
                      "pipeline.batch.delay" => 50,
                      "queue.type" => "memory",
                      "queue.max_bytes" => "1gb",
                      "queue.checkpoint.writes" => 1024,
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"description":"Sample pipeline for illustration
          purposes","last_modified":"2021-01-02T02:50:51.250Z","pipeline_metadata":{"type":"logstash_pipeline","version":1},"username":"elastic","pipeline":"input
          {}\\n filter { grok {} }\\n output {}","pipeline_settings":{"pipeline.workers":1,"pipeline.batch.size":125,"pipeline.batch.delay":50,"queue.type":"memory","queue.max_bytes":"1gb","queue.checkpoint.writes":1024}}''
          "$ELASTICSEARCH_URL/_logstash/pipeline/my_pipeline"'
      - lang: Java
        source: |
          client.logstash().putPipeline(p -> p
              .id("my_pipeline")
              .pipeline(pi -> pi
                  .description("Sample pipeline for illustration purposes")
                  .lastModified(DateTime.of("2021-01-02T02:50:51.250Z"))
                  .pipeline("input {}\n filter { grok {} }\n output {}")
                  .pipelineMetadata(pip -> pip
                      .type("logstash_pipeline")
                      .version("1")
                  )
                  .pipelineSettings(pip -> pip
                      .pipelineWorkers(1)
                      .pipelineBatchSize(125)
                      .pipelineBatchDelay(50)
                      .queueType("memory")
                      .queueMaxBytes("1gb")
                      .queueCheckpointWrites(1024)
                  )
                  .username("elastic")
              )
          );
      x-metaTags:
      - content: Elasticsearch, Logstash
        name: product_name
    delete:
      tags:
      - logstash
      summary: Delete a Logstash pipeline
      description: |
        Delete a pipeline that is used for Logstash Central Management.
        If the request succeeds, you receive an empty response with an appropriate status code.

        ## Required authorization

        * Cluster privileges: `manage_logstash_pipelines`
      externalDocs:
        url: https://www.elastic.co/docs/reference/logstash/logstash-centralized-pipeline-management
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/logstash-api-delete-pipeline.html
      operationId: logstash-delete-pipeline
      parameters:
      - in: path
        name: id
        description: An identifier for the pipeline.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      responses:
        '200':
          description: ''
          content:
            application/json: {}
      x-state: Generally available; Added in 7.12.0
      x-codeSamples:
      - lang: Console
        source: 'DELETE _logstash/pipeline/my_pipeline

          '
      - lang: Python
        source: |-
          resp = client.logstash.delete_pipeline(
              id="my_pipeline",
          )
      - lang: JavaScript
        source: |-
          const response = await client.logstash.deletePipeline({
            id: "my_pipeline",
          });
      - lang: Ruby
        source: |-
          response = client.logstash.delete_pipeline(
            id: "my_pipeline"
          )
      - lang: PHP
        source: |-
          $resp = $client->logstash()->deletePipeline([
              "id" => "my_pipeline",
          ]);
      - lang: curl
        source: 'curl -X DELETE -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_logstash/pipeline/my_pipeline"'
      - lang: Java
        source: |
          client.logstash().deletePipeline(d -> d
              .id("my_pipeline")
          );
      x-metaTags:
      - content: Elasticsearch, Logstash
        name: product_name
  "/{index}/_mget":
    post:
      tags:
      - document
      summary: 'Get multiple documents

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_mget</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_mget</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/{index}/_mget</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/{index}/_mget</span>\n
        \                     </div>\n                    \n\nGet multiple JSON documents
        by ID from one or more indices.\nIf you specify an index in the request URI,
        you only need to specify the document IDs in the request body.\nTo ensure
        fast responses, this multi get (mget) API responds with partial results if
        one or more shards fail.\n\n**Filter source fields**\n\nBy default, the `_source`
        field is returned for every document (if stored).\nUse the `_source` and `_source_include`
        or `source_exclude` attributes to filter what fields are returned for a particular
        document.\nYou can include the `_source`, `_source_includes`, and `_source_excludes`
        query parameters in the request URI to specify the defaults to use when there
        are no per-document instructions.\n\n**Get stored fields**\n\nUse the `stored_fields`
        attribute to specify the set of stored fields you want to retrieve.\nAny requested
        fields that are not stored are ignored.\nYou can include the `stored_fields`
        query parameter in the request URI to specify the defaults to use when there
        are no per-document instructions.\n\n## Required authorization\n\n* Index
        privileges: `read`\n"
      operationId: mget
      parameters:
      - "$ref": "#/components/parameters/mget-index"
      - "$ref": "#/components/parameters/mget-preference"
      - "$ref": "#/components/parameters/mget-realtime"
      - "$ref": "#/components/parameters/mget-refresh"
      - "$ref": "#/components/parameters/mget-routing"
      - "$ref": "#/components/parameters/mget-_source"
      - "$ref": "#/components/parameters/mget-_source_excludes"
      - "$ref": "#/components/parameters/mget-_source_includes"
      - "$ref": "#/components/parameters/mget-stored_fields"
      requestBody:
        "$ref": "#/components/requestBodies/mget"
      responses:
        '200':
          "$ref": "#/components/responses/mget-200"
      x-state: Generally available; Added in 1.3.0
      x-codeSamples:
      - lang: Console
        source: |-
          GET /my-index-000001/_mget
          {
            "docs": [
              {
                "_id": "1"
              },
              {
                "_id": "2"
              }
            ]
          }
      - lang: Python
        source: |-
          resp = client.mget(
              index="my-index-000001",
              docs=[
                  {
                      "_id": "1"
                  },
                  {
                      "_id": "2"
                  }
              ],
          )
      - lang: JavaScript
        source: |-
          const response = await client.mget({
            index: "my-index-000001",
            docs: [
              {
                _id: "1",
              },
              {
                _id: "2",
              },
            ],
          });
      - lang: Ruby
        source: |-
          response = client.mget(
            index: "my-index-000001",
            body: {
              "docs": [
                {
                  "_id": "1"
                },
                {
                  "_id": "2"
                }
              ]
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->mget([
              "index" => "my-index-000001",
              "body" => [
                  "docs" => array(
                      [
                          "_id" => "1",
                      ],
                      [
                          "_id" => "2",
                      ],
                  ),
              ],
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"docs":[{"_id":"1"},{"_id":"2"}]}'' "$ELASTICSEARCH_URL/my-index-000001/_mget"'
      - lang: Java
        source: |
          client.mget(m -> m
              .docs(List.of(MultiGetOperation.of(mu -> mu
                      .id("1")
                  ),MultiGetOperation.of(mu -> mu
                      .id("2")
                  )))
              .index("my-index-000001")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/{index}/_migration/deprecations":
    get:
      tags:
      - migration
      summary: 'Get deprecation information

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_migration/deprecations</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/{index}/_migration/deprecations</span>\n
        \                     </div>\n                    \n\nGet information about
        different cluster, node, and index level settings that use deprecated features
        that will be removed or changed in the next major version.\n\nTIP: This APIs
        is designed for indirect use by the Upgrade Assistant.\nYou are strongly recommended
        to use the Upgrade Assistant.\n\n## Required authorization\n\n* Cluster privileges:
        `manage`\n"
      operationId: migration-deprecations
      parameters:
      - "$ref": "#/components/parameters/migration.deprecations-index"
      responses:
        '200':
          "$ref": "#/components/responses/migration.deprecations-200"
      x-state: Generally available; Added in 6.1.0
      x-codeSamples:
      - lang: Console
        source: 'GET /_migration/deprecations

          '
      - lang: Python
        source: resp = client.migration.deprecations()
      - lang: JavaScript
        source: const response = await client.migration.deprecations();
      - lang: Ruby
        source: response = client.migration.deprecations
      - lang: PHP
        source: "$resp = $client->migration()->deprecations();"
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_migration/deprecations"'
      - lang: Java
        source: 'client.migration().deprecations(d -> d);

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_migration/system_features":
    get:
      tags:
      - migration
      summary: Get feature migration information
      description: |
        Version upgrades sometimes require changes to how features store configuration information and data in system indices.
        Check which features need to be migrated and the status of any migrations that are in progress.

        TIP: This API is designed for indirect use by the Upgrade Assistant.
        You are strongly recommended to use the Upgrade Assistant.

        ## Required authorization

        * Index privileges: `manage`
        * Cluster privileges: `manage`
      operationId: migration-get-feature-upgrade-status
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  features:
                    type: array
                    items:
                      "$ref": "#/components/schemas/migration.get_feature_upgrade_status.MigrationFeature"
                  migration_status:
                    allOf:
                    - "$ref": "#/components/schemas/migration.get_feature_upgrade_status.MigrationStatus"
                required:
                - features
                - migration_status
              examples:
                GetFeatureUpgradeStatusResponseExample1:
                  description: A successful response from `GET /_migration/system_features`.
                  value: |-
                    {
                      "features" : [
                        {
                          "feature_name" : "async_search",
                          "minimum_index_version" : "8100099",
                          "migration_status" : "NO_MIGRATION_NEEDED",
                          "indices" : [ ]
                        },
                        {
                          "feature_name" : "enrich",
                          "minimum_index_version" : "8100099",
                          "migration_status" : "NO_MIGRATION_NEEDED",
                          "indices" : [ ]
                        },
                        {
                          "feature_name" : "ent_search",
                          "minimum_index_version" : "8100099",
                          "migration_status" : "NO_MIGRATION_NEEDED",
                          "indices" : [ ]
                        },
                        {
                          "feature_name" : "fleet",
                          "minimum_index_version" : "8100099",
                          "migration_status" : "NO_MIGRATION_NEEDED",
                          "indices" : [ ]
                        },
                        {
                          "feature_name" : "geoip",
                          "minimum_index_version" : "8100099",
                          "migration_status" : "NO_MIGRATION_NEEDED",
                          "indices" : [ ]
                        },
                        {
                          "feature_name" : "kibana",
                          "minimum_index_version" : "8100099",
                          "migration_status" : "NO_MIGRATION_NEEDED",
                          "indices" : [ ]
                        },
                        {
                          "feature_name" : "logstash_management",
                          "minimum_index_version" : "8100099",
                          "migration_status" : "NO_MIGRATION_NEEDED",
                          "indices" : [ ]
                        },
                        {
                          "feature_name" : "machine_learning",
                          "minimum_index_version" : "8100099",
                          "migration_status" : "NO_MIGRATION_NEEDED",
                          "indices" : [ ]
                        },
                        {
                          "feature_name" : "searchable_snapshots",
                          "minimum_index_version" : "8100099",
                          "migration_status" : "NO_MIGRATION_NEEDED",
                          "indices" : [ ]
                        },
                        {
                          "feature_name" : "security",
                          "minimum_index_version" : "8100099",
                          "migration_status" : "NO_MIGRATION_NEEDED",
                          "indices" : [ ]
                        },
                        {
                          "feature_name" : "synonyms",
                          "minimum_index_version" : "8100099",
                          "migration_status" : "NO_MIGRATION_NEEDED",
                          "indices" : [ ]
                        },
                        {
                          "feature_name" : "tasks",
                          "minimum_index_version" : "8100099",
                          "migration_status" : "NO_MIGRATION_NEEDED",
                          "indices" : [ ]
                        },
                        {
                          "feature_name" : "transform",
                          "minimum_index_version" : "8100099",
                          "migration_status" : "NO_MIGRATION_NEEDED",
                          "indices" : [ ]
                        },
                        {
                          "feature_name" : "watcher",
                          "minimum_index_version" : "8100099",
                          "migration_status" : "NO_MIGRATION_NEEDED",
                          "indices" : [ ]
                        }
                      ],
                      "migration_status" : "NO_MIGRATION_NEEDED"
                    }
      x-state: Generally available; Added in 7.16.0
      x-codeSamples:
      - lang: Console
        source: 'GET /_migration/system_features

          '
      - lang: Python
        source: resp = client.migration.get_feature_upgrade_status()
      - lang: JavaScript
        source: const response = await client.migration.getFeatureUpgradeStatus();
      - lang: Ruby
        source: response = client.migration.get_feature_upgrade_status
      - lang: PHP
        source: "$resp = $client->migration()->getFeatureUpgradeStatus();"
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_migration/system_features"'
      - lang: Java
        source: 'client.migration().getFeatureUpgradeStatus();

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    post:
      tags:
      - migration
      summary: Start the feature migration
      description: |
        Version upgrades sometimes require changes to how features store configuration information and data in system indices.
        This API starts the automatic migration process.

        Some functionality might be temporarily unavailable during the migration process.

        TIP: The API is designed for indirect use by the Upgrade Assistant. We strongly recommend you use the Upgrade Assistant.

        ## Required authorization

        * Index privileges: `manage`
        * Cluster privileges: `manage`
      operationId: migration-post-feature-upgrade
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  accepted:
                    type: boolean
                  features:
                    type: array
                    items:
                      "$ref": "#/components/schemas/migration.post_feature_upgrade.MigrationFeature"
                  reason:
                    type: string
                required:
                - accepted
              examples:
                PostFeatureUpgradeResponseExample1:
                  description: 'When you run `POST /_migration/system_features` to
                    start the migration process, the response lists the features that
                    will be migrated.

                    '
                  value: |-
                    {
                      "accepted" : true,
                      "features" : [
                        {
                          "feature_name" : "security"
                        }
                      ]
                    }
      x-state: Generally available; Added in 7.16.0
      x-codeSamples:
      - lang: Console
        source: 'POST /_migration/system_features

          '
      - lang: Python
        source: resp = client.migration.post_feature_upgrade()
      - lang: JavaScript
        source: const response = await client.migration.postFeatureUpgrade();
      - lang: Ruby
        source: response = client.migration.post_feature_upgrade
      - lang: PHP
        source: "$resp = $client->migration()->postFeatureUpgrade();"
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_migration/system_features"'
      - lang: Java
        source: 'client.migration().postFeatureUpgrade();

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_ml/trained_models/{model_id}/deployment/cache/_clear":
    post:
      tags:
      - ml trained model
      summary: Clear trained model deployment cache
      description: |
        Cache will be cleared on all nodes where the trained model is assigned.
        A trained model deployment may have an inference cache enabled.
        As requests are handled by each allocated node, their responses may be cached on that individual node.
        Calling this API clears the caches without restarting the deployment.

        ## Required authorization

        * Cluster privileges: `manage_ml`
      operationId: ml-clear-trained-model-deployment-cache
      parameters:
      - in: path
        name: model_id
        description: The unique identifier of the trained model.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  cleared:
                    type: boolean
                required:
                - cleared
              examples:
                MlClearTrainedModelDeploymentCacheResponseExample1:
                  description: A successful response when clearing the inference cache.
                  value: |-
                    {
                      "cleared": true
                    }
      x-state: Generally available; Added in 8.5.0
      x-codeSamples:
      - lang: Console
        source: 'POST _ml/trained_models/elastic__distilbert-base-uncased-finetuned-conll03-english/deployment/cache/_clear

          '
      - lang: Python
        source: |-
          resp = client.ml.clear_trained_model_deployment_cache(
              model_id="elastic__distilbert-base-uncased-finetuned-conll03-english",
          )
      - lang: JavaScript
        source: |-
          const response = await client.ml.clearTrainedModelDeploymentCache({
            model_id: "elastic__distilbert-base-uncased-finetuned-conll03-english",
          });
      - lang: Ruby
        source: |-
          response = client.ml.clear_trained_model_deployment_cache(
            model_id: "elastic__distilbert-base-uncased-finetuned-conll03-english"
          )
      - lang: PHP
        source: |-
          $resp = $client->ml()->clearTrainedModelDeploymentCache([
              "model_id" => "elastic__distilbert-base-uncased-finetuned-conll03-english",
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_ml/trained_models/elastic__distilbert-base-uncased-finetuned-conll03-english/deployment/cache/_clear"'
      - lang: Java
        source: |
          client.ml().clearTrainedModelDeploymentCache(c -> c
              .modelId("elastic__distilbert-base-uncased-finetuned-conll03-english")
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_ml/anomaly_detectors/{job_id}/_close":
    post:
      tags:
      - ml anomaly
      summary: Close anomaly detection jobs
      description: |
        A job can be opened and closed multiple times throughout its lifecycle. A closed job cannot receive data or perform analysis operations, but you can still explore and navigate results.
        When you close a job, it runs housekeeping tasks such as pruning the model history, flushing buffers, calculating final results and persisting the model snapshots. Depending upon the size of the job, it could take several minutes to close and the equivalent time to re-open. After it is closed, the job has a minimal overhead on the cluster except for maintaining its meta data. Therefore it is a best practice to close jobs that are no longer required to process data.
        If you close an anomaly detection job whose datafeed is running, the request first tries to stop the datafeed. This behavior is equivalent to calling stop datafeed API with the same timeout and force parameters as the close job request.
        When a datafeed that has a specified end date stops, it automatically closes its associated job.

        ## Required authorization

        * Cluster privileges: `manage_ml`
      operationId: ml-close-job
      parameters:
      - in: path
        name: job_id
        description: Identifier for the anomaly detection job. It can be a job identifier,
          a group name, or a wildcard expression. You can close multiple anomaly detection
          jobs in a single API request by using a group name, a comma-separated list
          of jobs, or a wildcard expression. You can close all jobs by using `_all`
          or by specifying `*` as the job identifier.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: allow_no_match
        description: |-
          Specifies what to do when the request: contains wildcard expressions and there are no jobs that match; contains the  `_all` string or no identifiers and there are no matches; or contains wildcard expressions and there are only partial matches. By default, it returns an empty jobs array when there are no matches and the subset of results when there are partial matches.
          If `false`, the request returns a 404 status code when there are no matches or only partial matches.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: force
        description: |-
          Use to close a failed job, or to forcefully close a job which has not responded to its initial close request; the request returns without performing the associated actions such as flushing buffers and persisting the model snapshots.
          If you want the job to be in a consistent state after the close job API returns, do not set to `true`. This parameter should be used only in situations where the job has already failed or where you are not interested in results the job might have recently produced or might produce in the future.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: timeout
        description: Controls the time to wait until a job has closed.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                allow_no_match:
                  description: Refer to the description for the `allow_no_match` query
                    parameter.
                  default: true
                  type: boolean
                force:
                  description: Refer to the descriptiion for the `force` query parameter.
                  default: false
                  type: boolean
                timeout:
                  description: Refer to the description for the `timeout` query parameter.
                  default: 30m
                  allOf:
                  - "$ref": "#/components/schemas/_types.Duration"
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  closed:
                    type: boolean
                required:
                - closed
              examples:
                MlCloseJobResponseExample1:
                  description: A successful response when closing anomaly detection
                    jobs.
                  value: |-
                    {
                      "closed": true
                    }
      x-state: Generally available; Added in 5.4.0
      x-codeSamples:
      - lang: Console
        source: 'POST _ml/anomaly_detectors/low_request_rate/_close

          '
      - lang: Python
        source: |-
          resp = client.ml.close_job(
              job_id="low_request_rate",
          )
      - lang: JavaScript
        source: |-
          const response = await client.ml.closeJob({
            job_id: "low_request_rate",
          });
      - lang: Ruby
        source: |-
          response = client.ml.close_job(
            job_id: "low_request_rate"
          )
      - lang: PHP
        source: |-
          $resp = $client->ml()->closeJob([
              "job_id" => "low_request_rate",
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_ml/anomaly_detectors/low_request_rate/_close"'
      - lang: Java
        source: |
          client.ml().closeJob(c -> c
              .jobId("low_request_rate")
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_ml/calendars/{calendar_id}":
    put:
      tags:
      - ml anomaly
      summary: Create a calendar
      description: |2


        ## Required authorization

        * Cluster privileges: `manage_ml`
      operationId: ml-put-calendar
      parameters:
      - in: path
        name: calendar_id
        description: A string that uniquely identifies a calendar.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                job_ids:
                  description: An array of anomaly detection job identifiers.
                  type: array
                  items:
                    "$ref": "#/components/schemas/_types.Id"
                description:
                  description: A description of the calendar.
                  type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  calendar_id:
                    description: A string that uniquely identifies a calendar.
                    allOf:
                    - "$ref": "#/components/schemas/_types.Id"
                  description:
                    description: A description of the calendar.
                    type: string
                  job_ids:
                    description: A list of anomaly detection job identifiers or group
                      names.
                    allOf:
                    - "$ref": "#/components/schemas/_types.Ids"
                required:
                - calendar_id
                - job_ids
      x-state: Generally available; Added in 6.2.0
      x-codeSamples:
      - lang: Console
        source: 'PUT _ml/calendars/planned-outages

          '
      - lang: Python
        source: |-
          resp = client.ml.put_calendar(
              calendar_id="planned-outages",
          )
      - lang: JavaScript
        source: |-
          const response = await client.ml.putCalendar({
            calendar_id: "planned-outages",
          });
      - lang: Ruby
        source: |-
          response = client.ml.put_calendar(
            calendar_id: "planned-outages"
          )
      - lang: PHP
        source: |-
          $resp = $client->ml()->putCalendar([
              "calendar_id" => "planned-outages",
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_ml/calendars/planned-outages"'
      - lang: Java
        source: |
          client.ml().putCalendar(p -> p
              .calendarId("planned-outages")
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
    post:
      tags:
      - ml anomaly
      summary: 'Get calendar configuration info

        '
      description: |
        **All methods and paths for this operation:**

        <div>
                              <span class="operation-verb get">GET</span>
                              <span class="operation-path">/_ml/calendars</span>
                              </div>
                            <div>
                              <span class="operation-verb post">POST</span>
                              <span class="operation-path">/_ml/calendars</span>
                              </div>
                            <div>
                              <span class="operation-verb get">GET</span>
                              <span class="operation-path">/_ml/calendars/{calendar_id}</span>
                              </div>
                            <div>
                              <span class="operation-verb post">POST</span>
                              <span class="operation-path">/_ml/calendars/{calendar_id}</span>
                              </div>

        ## Required authorization

        * Cluster privileges: `monitor_ml`
      operationId: ml-get-calendars
      parameters:
      - "$ref": "#/components/parameters/ml.get_calendars-calendar_id"
      - "$ref": "#/components/parameters/ml.get_calendars-from"
      - "$ref": "#/components/parameters/ml.get_calendars-size"
      requestBody:
        "$ref": "#/components/requestBodies/ml.get_calendars"
      responses:
        '200':
          "$ref": "#/components/responses/ml.get_calendars-200"
      x-state: Generally available; Added in 6.2.0
      x-codeSamples:
      - lang: Console
        source: 'GET _ml/calendars/planned-outages

          '
      - lang: Python
        source: |-
          resp = client.ml.get_calendars(
              calendar_id="planned-outages",
          )
      - lang: JavaScript
        source: |-
          const response = await client.ml.getCalendars({
            calendar_id: "planned-outages",
          });
      - lang: Ruby
        source: |-
          response = client.ml.get_calendars(
            calendar_id: "planned-outages"
          )
      - lang: PHP
        source: |-
          $resp = $client->ml()->getCalendars([
              "calendar_id" => "planned-outages",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_ml/calendars/planned-outages"'
      - lang: Java
        source: |
          client.ml().getCalendars(g -> g
              .calendarId("planned-outages")
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
    delete:
      tags:
      - ml anomaly
      summary: Delete a calendar
      description: |
        Remove all scheduled events from a calendar, then delete it.

        ## Required authorization

        * Cluster privileges: `manage_ml`
      operationId: ml-delete-calendar
      parameters:
      - in: path
        name: calendar_id
        description: A string that uniquely identifies a calendar.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
              examples:
                MlDeleteCalendarResponseExample1:
                  description: A successful response when deleting a calendar.
                  value: |-
                    {
                      "acknowledged": true
                    }
      x-state: Generally available; Added in 6.2.0
      x-codeSamples:
      - lang: Console
        source: 'DELETE _ml/calendars/planned-outages

          '
      - lang: Python
        source: |-
          resp = client.ml.delete_calendar(
              calendar_id="planned-outages",
          )
      - lang: JavaScript
        source: |-
          const response = await client.ml.deleteCalendar({
            calendar_id: "planned-outages",
          });
      - lang: Ruby
        source: |-
          response = client.ml.delete_calendar(
            calendar_id: "planned-outages"
          )
      - lang: PHP
        source: |-
          $resp = $client->ml()->deleteCalendar([
              "calendar_id" => "planned-outages",
          ]);
      - lang: curl
        source: 'curl -X DELETE -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_ml/calendars/planned-outages"'
      - lang: Java
        source: |
          client.ml().deleteCalendar(d -> d
              .calendarId("planned-outages")
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_ml/calendars/{calendar_id}/events/{event_id}":
    delete:
      tags:
      - ml anomaly
      summary: Delete events from a calendar
      operationId: ml-delete-calendar-event
      parameters:
      - in: path
        name: calendar_id
        description: A string that uniquely identifies a calendar.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: path
        name: event_id
        description: |-
          Identifier for the scheduled event.
          You can obtain this identifier by using the get calendar events API.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
              examples:
                MlDeleteCalendarEventResponseExample1:
                  description: A successful response when deleting a calendar event.
                  value: |-
                    {
                      "acknowledged": true
                    }
      x-state: Generally available; Added in 6.2.0
      x-codeSamples:
      - lang: Console
        source: 'DELETE _ml/calendars/planned-outages/events/LS8LJGEBMTCMA-qz49st

          '
      - lang: Python
        source: |-
          resp = client.ml.delete_calendar_event(
              calendar_id="planned-outages",
              event_id="LS8LJGEBMTCMA-qz49st",
          )
      - lang: JavaScript
        source: |-
          const response = await client.ml.deleteCalendarEvent({
            calendar_id: "planned-outages",
            event_id: "LS8LJGEBMTCMA-qz49st",
          });
      - lang: Ruby
        source: |-
          response = client.ml.delete_calendar_event(
            calendar_id: "planned-outages",
            event_id: "LS8LJGEBMTCMA-qz49st"
          )
      - lang: PHP
        source: |-
          $resp = $client->ml()->deleteCalendarEvent([
              "calendar_id" => "planned-outages",
              "event_id" => "LS8LJGEBMTCMA-qz49st",
          ]);
      - lang: curl
        source: 'curl -X DELETE -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_ml/calendars/planned-outages/events/LS8LJGEBMTCMA-qz49st"'
      - lang: Java
        source: |
          client.ml().deleteCalendarEvent(d -> d
              .calendarId("planned-outages")
              .eventId("LS8LJGEBMTCMA-qz49st")
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_ml/calendars/{calendar_id}/jobs/{job_id}":
    put:
      tags:
      - ml anomaly
      summary: Add anomaly detection job to calendar
      description: |2


        ## Required authorization

        * Cluster privileges: `manage_ml`
      operationId: ml-put-calendar-job
      parameters:
      - in: path
        name: calendar_id
        description: A string that uniquely identifies a calendar.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: path
        name: job_id
        description: An identifier for the anomaly detection jobs. It can be a job
          identifier, a group name, or a comma-separated list of jobs or groups.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Ids"
        style: simple
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  calendar_id:
                    description: A string that uniquely identifies a calendar.
                    allOf:
                    - "$ref": "#/components/schemas/_types.Id"
                  description:
                    description: A description of the calendar.
                    type: string
                  job_ids:
                    description: A list of anomaly detection job identifiers or group
                      names.
                    allOf:
                    - "$ref": "#/components/schemas/_types.Ids"
                required:
                - calendar_id
                - job_ids
      x-state: Generally available; Added in 6.2.0
      x-codeSamples:
      - lang: Console
        source: 'PUT _ml/calendars/planned-outages/jobs/total-requests

          '
      - lang: Python
        source: |-
          resp = client.ml.put_calendar_job(
              calendar_id="planned-outages",
              job_id="total-requests",
          )
      - lang: JavaScript
        source: |-
          const response = await client.ml.putCalendarJob({
            calendar_id: "planned-outages",
            job_id: "total-requests",
          });
      - lang: Ruby
        source: |-
          response = client.ml.put_calendar_job(
            calendar_id: "planned-outages",
            job_id: "total-requests"
          )
      - lang: PHP
        source: |-
          $resp = $client->ml()->putCalendarJob([
              "calendar_id" => "planned-outages",
              "job_id" => "total-requests",
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_ml/calendars/planned-outages/jobs/total-requests"'
      - lang: Java
        source: |
          client.ml().putCalendarJob(p -> p
              .calendarId("planned-outages")
              .jobId("total-requests")
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
    delete:
      tags:
      - ml anomaly
      summary: Delete anomaly jobs from a calendar
      description: |2


        ## Required authorization

        * Cluster privileges: `manage_ml`
      operationId: ml-delete-calendar-job
      parameters:
      - in: path
        name: calendar_id
        description: A string that uniquely identifies a calendar.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: path
        name: job_id
        description: |-
          An identifier for the anomaly detection jobs. It can be a job identifier, a group name, or a
          comma-separated list of jobs or groups.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Ids"
        style: simple
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  calendar_id:
                    description: A string that uniquely identifies a calendar.
                    allOf:
                    - "$ref": "#/components/schemas/_types.Id"
                  description:
                    description: A description of the calendar.
                    type: string
                  job_ids:
                    description: A list of anomaly detection job identifiers or group
                      names.
                    allOf:
                    - "$ref": "#/components/schemas/_types.Ids"
                required:
                - calendar_id
                - job_ids
              examples:
                MlDeleteCalendarJobResponseExample1:
                  description: A successful response when deleting an anomaly detection
                    job from a calendar.
                  value: |-
                    {
                      "calendar_id": "planned-outages",
                      "job_ids": []
                    }
      x-state: Generally available; Added in 6.2.0
      x-codeSamples:
      - lang: Console
        source: 'DELETE _ml/calendars/planned-outages/jobs/total-requests

          '
      - lang: Python
        source: |-
          resp = client.ml.delete_calendar_job(
              calendar_id="planned-outages",
              job_id="total-requests",
          )
      - lang: JavaScript
        source: |-
          const response = await client.ml.deleteCalendarJob({
            calendar_id: "planned-outages",
            job_id: "total-requests",
          });
      - lang: Ruby
        source: |-
          response = client.ml.delete_calendar_job(
            calendar_id: "planned-outages",
            job_id: "total-requests"
          )
      - lang: PHP
        source: |-
          $resp = $client->ml()->deleteCalendarJob([
              "calendar_id" => "planned-outages",
              "job_id" => "total-requests",
          ]);
      - lang: curl
        source: 'curl -X DELETE -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_ml/calendars/planned-outages/jobs/total-requests"'
      - lang: Java
        source: |
          client.ml().deleteCalendarJob(d -> d
              .calendarId("planned-outages")
              .jobId("total-requests")
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_ml/data_frame/analytics/{id}":
    get:
      tags:
      - ml data frame
      summary: 'Get data frame analytics job configuration info

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_ml/data_frame/analytics</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_ml/data_frame/analytics/{id}</span>\n
        \                     </div>\n                    \n\nYou can get information
        for multiple data frame analytics jobs in a single\nAPI request by using a
        comma-separated list of data frame analytics jobs or a\nwildcard expression.\n\n##
        Required authorization\n\n* Cluster privileges: `monitor_ml`\n"
      operationId: ml-get-data-frame-analytics
      parameters:
      - "$ref": "#/components/parameters/ml.get_data_frame_analytics-id"
      - "$ref": "#/components/parameters/ml.get_data_frame_analytics-allow_no_match"
      - "$ref": "#/components/parameters/ml.get_data_frame_analytics-from"
      - "$ref": "#/components/parameters/ml.get_data_frame_analytics-size"
      - "$ref": "#/components/parameters/ml.get_data_frame_analytics-exclude_generated"
      responses:
        '200':
          "$ref": "#/components/responses/ml.get_data_frame_analytics-200"
      x-state: Generally available; Added in 7.3.0
      x-codeSamples:
      - lang: Console
        source: 'GET _ml/data_frame/analytics/loganalytics

          '
      - lang: Python
        source: |-
          resp = client.ml.get_data_frame_analytics(
              id="loganalytics",
          )
      - lang: JavaScript
        source: |-
          const response = await client.ml.getDataFrameAnalytics({
            id: "loganalytics",
          });
      - lang: Ruby
        source: |-
          response = client.ml.get_data_frame_analytics(
            id: "loganalytics"
          )
      - lang: PHP
        source: |-
          $resp = $client->ml()->getDataFrameAnalytics([
              "id" => "loganalytics",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_ml/data_frame/analytics/loganalytics"'
      - lang: Java
        source: |
          client.ml().getDataFrameAnalytics(g -> g
              .id("loganalytics")
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
    put:
      tags:
      - ml data frame
      summary: Create a data frame analytics job
      description: |
        This API creates a data frame analytics job that performs an analysis on the
        source indices and stores the outcome in a destination index.
        By default, the query used in the source configuration is `{"match_all": {}}`.

        If the destination index does not exist, it is created automatically when you start the job.

        If you supply only a subset of the regression or classification parameters, hyperparameter optimization occurs. It determines a value for each of the undefined parameters.

        ## Required authorization

        * Index privileges: `create_index`,`index`,`manage`,`read`,`view_index_metadata`
        * Cluster privileges: `manage_ml`
      operationId: ml-put-data-frame-analytics
      parameters:
      - in: path
        name: id
        description: |-
          Identifier for the data frame analytics job. This identifier can contain
          lowercase alphanumeric characters (a-z and 0-9), hyphens, and
          underscores. It must start and end with alphanumeric characters.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                allow_lazy_start:
                  description: |-
                    Specifies whether this job can start when there is insufficient machine
                    learning node capacity for it to be immediately assigned to a node. If
                    set to `false` and a machine learning node with capacity to run the job
                    cannot be immediately found, the API returns an error. If set to `true`,
                    the API does not return an error; the job waits in the `starting` state
                    until sufficient machine learning node capacity is available. This
                    behavior is also affected by the cluster-wide
                    `xpack.ml.max_lazy_ml_nodes` setting.
                  default: false
                  type: boolean
                analysis:
                  description: |-
                    The analysis configuration, which contains the information necessary to
                    perform one of the following types of analysis: classification, outlier
                    detection, or regression.
                  allOf:
                  - "$ref": "#/components/schemas/ml._types.DataframeAnalysisContainer"
                analyzed_fields:
                  description: |-
                    Specifies `includes` and/or `excludes` patterns to select which fields
                    will be included in the analysis. The patterns specified in `excludes`
                    are applied last, therefore `excludes` takes precedence. In other words,
                    if the same field is specified in both `includes` and `excludes`, then
                    the field will not be included in the analysis. If `analyzed_fields` is
                    not set, only the relevant fields will be included. For example, all the
                    numeric fields for outlier detection.
                    The supported fields vary for each type of analysis. Outlier detection
                    requires numeric or `boolean` data to analyze. The algorithms don’t
                    support missing values therefore fields that have data types other than
                    numeric or boolean are ignored. Documents where included fields contain
                    missing values, null values, or an array are also ignored. Therefore the
                    `dest` index may contain documents that don’t have an outlier score.
                    Regression supports fields that are numeric, `boolean`, `text`,
                    `keyword`, and `ip` data types. It is also tolerant of missing values.
                    Fields that are supported are included in the analysis, other fields are
                    ignored. Documents where included fields contain an array with two or
                    more values are also ignored. Documents in the `dest` index that don’t
                    contain a results field are not included in the regression analysis.
                    Classification supports fields that are numeric, `boolean`, `text`,
                    `keyword`, and `ip` data types. It is also tolerant of missing values.
                    Fields that are supported are included in the analysis, other fields are
                    ignored. Documents where included fields contain an array with two or
                    more values are also ignored. Documents in the `dest` index that don’t
                    contain a results field are not included in the classification analysis.
                    Classification analysis can be improved by mapping ordinal variable
                    values to a single number. For example, in case of age ranges, you can
                    model the values as `0-14 = 0`, `15-24 = 1`, `25-34 = 2`, and so on.
                  allOf:
                  - "$ref": "#/components/schemas/ml._types.DataframeAnalysisAnalyzedFields"
                description:
                  description: A description of the job.
                  type: string
                dest:
                  description: The destination configuration.
                  allOf:
                  - "$ref": "#/components/schemas/ml._types.DataframeAnalyticsDestination"
                max_num_threads:
                  description: |-
                    The maximum number of threads to be used by the analysis. Using more
                    threads may decrease the time necessary to complete the analysis at the
                    cost of using more CPU. Note that the process may use additional threads
                    for operational functionality other than the analysis itself.
                  default: 1
                  type: number
                _meta:
                  allOf:
                  - "$ref": "#/components/schemas/_types.Metadata"
                model_memory_limit:
                  description: |-
                    The approximate maximum amount of memory resources that are permitted for
                    analytical processing. If your `elasticsearch.yml` file contains an
                    `xpack.ml.max_model_memory_limit` setting, an error occurs when you try
                    to create data frame analytics jobs that have `model_memory_limit` values
                    greater than that setting.
                  default: 1gb
                  type: string
                source:
                  description: The configuration of how to source the analysis data.
                  allOf:
                  - "$ref": "#/components/schemas/ml._types.DataframeAnalyticsSource"
                headers:
                  x-state: Generally available; Added in 8.0.0
                  allOf:
                  - "$ref": "#/components/schemas/_types.HttpHeaders"
                version:
                  x-state: Generally available; Added in 7.16.0
                  allOf:
                  - "$ref": "#/components/schemas/_types.VersionString"
              required:
              - analysis
              - dest
              - source
            examples:
              MlPutDataFrameAnalyticsExample1:
                description: An example body for a `PUT _ml/data_frame/analytics/model-flight-delays-pre`
                  request.
                value: |-
                  {
                    "source": {
                      "index": [
                        "kibana_sample_data_flights"
                      ],
                      "query": {
                        "range": {
                          "DistanceKilometers": {
                            "gt": 0
                          }
                        }
                      },
                      "_source": {
                        "includes": [],
                        "excludes": [
                          "FlightDelay",
                          "FlightDelayType"
                        ]
                      }
                    },
                    "dest": {
                      "index": "df-flight-delays",
                      "results_field": "ml-results"
                    },
                    "analysis": {
                    "regression": {
                      "dependent_variable": "FlightDelayMin",
                      "training_percent": 90
                      }
                    },
                    "analyzed_fields": {
                      "includes": [],
                      "excludes": [
                        "FlightNum"
                      ]
                    },
                    "model_memory_limit": "100mb"
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  authorization:
                    allOf:
                    - "$ref": "#/components/schemas/ml._types.DataframeAnalyticsAuthorization"
                  allow_lazy_start:
                    type: boolean
                  analysis:
                    allOf:
                    - "$ref": "#/components/schemas/ml._types.DataframeAnalysisContainer"
                  analyzed_fields:
                    allOf:
                    - "$ref": "#/components/schemas/ml._types.DataframeAnalysisAnalyzedFields"
                  create_time:
                    allOf:
                    - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
                  description:
                    type: string
                  dest:
                    allOf:
                    - "$ref": "#/components/schemas/ml._types.DataframeAnalyticsDestination"
                  id:
                    allOf:
                    - "$ref": "#/components/schemas/_types.Id"
                  max_num_threads:
                    type: number
                  _meta:
                    allOf:
                    - "$ref": "#/components/schemas/_types.Metadata"
                  model_memory_limit:
                    type: string
                  source:
                    allOf:
                    - "$ref": "#/components/schemas/ml._types.DataframeAnalyticsSource"
                  version:
                    allOf:
                    - "$ref": "#/components/schemas/_types.VersionString"
                required:
                - allow_lazy_start
                - analysis
                - create_time
                - dest
                - id
                - max_num_threads
                - model_memory_limit
                - source
                - version
      x-state: Generally available; Added in 7.3.0
      x-codeSamples:
      - lang: Console
        source: |-
          PUT _ml/data_frame/analytics/model-flight-delays-pre
          {
            "source": {
              "index": [
                "kibana_sample_data_flights"
              ],
              "query": {
                "range": {
                  "DistanceKilometers": {
                    "gt": 0
                  }
                }
              },
              "_source": {
                "includes": [],
                "excludes": [
                  "FlightDelay",
                  "FlightDelayType"
                ]
              }
            },
            "dest": {
              "index": "df-flight-delays",
              "results_field": "ml-results"
            },
            "analysis": {
            "regression": {
              "dependent_variable": "FlightDelayMin",
              "training_percent": 90
              }
            },
            "analyzed_fields": {
              "includes": [],
              "excludes": [
                "FlightNum"
              ]
            },
            "model_memory_limit": "100mb"
          }
      - lang: Python
        source: |-
          resp = client.ml.put_data_frame_analytics(
              id="model-flight-delays-pre",
              source={
                  "index": [
                      "kibana_sample_data_flights"
                  ],
                  "query": {
                      "range": {
                          "DistanceKilometers": {
                              "gt": 0
                          }
                      }
                  },
                  "_source": {
                      "includes": [],
                      "excludes": [
                          "FlightDelay",
                          "FlightDelayType"
                      ]
                  }
              },
              dest={
                  "index": "df-flight-delays",
                  "results_field": "ml-results"
              },
              analysis={
                  "regression": {
                      "dependent_variable": "FlightDelayMin",
                      "training_percent": 90
                  }
              },
              analyzed_fields={
                  "includes": [],
                  "excludes": [
                      "FlightNum"
                  ]
              },
              model_memory_limit="100mb",
          )
      - lang: JavaScript
        source: |-
          const response = await client.ml.putDataFrameAnalytics({
            id: "model-flight-delays-pre",
            source: {
              index: ["kibana_sample_data_flights"],
              query: {
                range: {
                  DistanceKilometers: {
                    gt: 0,
                  },
                },
              },
              _source: {
                includes: [],
                excludes: ["FlightDelay", "FlightDelayType"],
              },
            },
            dest: {
              index: "df-flight-delays",
              results_field: "ml-results",
            },
            analysis: {
              regression: {
                dependent_variable: "FlightDelayMin",
                training_percent: 90,
              },
            },
            analyzed_fields: {
              includes: [],
              excludes: ["FlightNum"],
            },
            model_memory_limit: "100mb",
          });
      - lang: Ruby
        source: |-
          response = client.ml.put_data_frame_analytics(
            id: "model-flight-delays-pre",
            body: {
              "source": {
                "index": [
                  "kibana_sample_data_flights"
                ],
                "query": {
                  "range": {
                    "DistanceKilometers": {
                      "gt": 0
                    }
                  }
                },
                "_source": {
                  "includes": [],
                  "excludes": [
                    "FlightDelay",
                    "FlightDelayType"
                  ]
                }
              },
              "dest": {
                "index": "df-flight-delays",
                "results_field": "ml-results"
              },
              "analysis": {
                "regression": {
                  "dependent_variable": "FlightDelayMin",
                  "training_percent": 90
                }
              },
              "analyzed_fields": {
                "includes": [],
                "excludes": [
                  "FlightNum"
                ]
              },
              "model_memory_limit": "100mb"
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->ml()->putDataFrameAnalytics([
              "id" => "model-flight-delays-pre",
              "body" => [
                  "source" => [
                      "index" => array(
                          "kibana_sample_data_flights",
                      ),
                      "query" => [
                          "range" => [
                              "DistanceKilometers" => [
                                  "gt" => 0,
                              ],
                          ],
                      ],
                      "_source" => [
                          "includes" => array(
                          ),
                          "excludes" => array(
                              "FlightDelay",
                              "FlightDelayType",
                          ),
                      ],
                  ],
                  "dest" => [
                      "index" => "df-flight-delays",
                      "results_field" => "ml-results",
                  ],
                  "analysis" => [
                      "regression" => [
                          "dependent_variable" => "FlightDelayMin",
                          "training_percent" => 90,
                      ],
                  ],
                  "analyzed_fields" => [
                      "includes" => array(
                      ),
                      "excludes" => array(
                          "FlightNum",
                      ),
                  ],
                  "model_memory_limit" => "100mb",
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"source":{"index":["kibana_sample_data_flights"],"query":{"range":{"DistanceKilometers":{"gt":0}}},"_source":{"includes":[],"excludes":["FlightDelay","FlightDelayType"]}},"dest":{"index":"df-flight-delays","results_field":"ml-results"},"analysis":{"regression":{"dependent_variable":"FlightDelayMin","training_percent":90}},"analyzed_fields":{"includes":[],"excludes":["FlightNum"]},"model_memory_limit":"100mb"}''
          "$ELASTICSEARCH_URL/_ml/data_frame/analytics/model-flight-delays-pre"'
      - lang: Java
        source: |
          client.ml().putDataFrameAnalytics(p -> p
              .analysis(a -> a
                  .regression(r -> r
                      .dependentVariable("FlightDelayMin")
                      .trainingPercent("90")
                  )
              )
              .analyzedFields(an -> an
                  .excludes("FlightNum")
              )
              .dest(d -> d
                  .index("df-flight-delays")
                  .resultsField("ml-results")
              )
              .id("model-flight-delays-pre")
              .modelMemoryLimit("100mb")
              .source(s -> s
                  .index("kibana_sample_data_flights")
                  .query(q -> q
                      .range(r -> r
                          .untyped(u -> u
                              .field("DistanceKilometers")
                              .gt(JsonData.fromJson("0"))
                          )
                      )
                  )
                  .source(so -> so
                      .excludes(List.of("FlightDelay","FlightDelayType"))
                  )
              )
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
    delete:
      tags:
      - ml data frame
      summary: Delete a data frame analytics job
      description: |2


        ## Required authorization

        * Cluster privileges: `manage_ml`
      operationId: ml-delete-data-frame-analytics
      parameters:
      - in: path
        name: id
        description: Identifier for the data frame analytics job.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: force
        description: If `true`, it deletes a job that is not stopped; this method
          is quicker than stopping and deleting the job.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: timeout
        description: The time to wait for the job to be deleted.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
              examples:
                MlDeleteDataFrameAnalyticsResponseExample1:
                  description: A successful response when deleting a data frame analytics
                    job.
                  value: |-
                    {
                      "acknowledged": true
                    }
      x-state: Generally available; Added in 7.3.0
      x-codeSamples:
      - lang: Console
        source: 'DELETE _ml/data_frame/analytics/loganalytics

          '
      - lang: Python
        source: |-
          resp = client.ml.delete_data_frame_analytics(
              id="loganalytics",
          )
      - lang: JavaScript
        source: |-
          const response = await client.ml.deleteDataFrameAnalytics({
            id: "loganalytics",
          });
      - lang: Ruby
        source: |-
          response = client.ml.delete_data_frame_analytics(
            id: "loganalytics"
          )
      - lang: PHP
        source: |-
          $resp = $client->ml()->deleteDataFrameAnalytics([
              "id" => "loganalytics",
          ]);
      - lang: curl
        source: 'curl -X DELETE -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_ml/data_frame/analytics/loganalytics"'
      - lang: Java
        source: |
          client.ml().deleteDataFrameAnalytics(d -> d
              .id("loganalytics")
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_ml/datafeeds/{datafeed_id}":
    get:
      tags:
      - ml anomaly
      summary: 'Get datafeeds configuration info

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_ml/datafeeds</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_ml/datafeeds/{datafeed_id}</span>\n
        \                     </div>\n                    \n\nYou can get information
        for multiple datafeeds in a single API request by\nusing a comma-separated
        list of datafeeds or a wildcard expression. You can\nget information for all
        datafeeds by using `_all`, by specifying `*` as the\n`<feed_id>`, or by omitting
        the `<feed_id>`.\nThis API returns a maximum of 10,000 datafeeds.\n\n## Required
        authorization\n\n* Cluster privileges: `monitor_ml`\n"
      operationId: ml-get-datafeeds
      parameters:
      - "$ref": "#/components/parameters/ml.get_datafeeds-datafeed_id"
      - "$ref": "#/components/parameters/ml.get_datafeeds-allow_no_match"
      - "$ref": "#/components/parameters/ml.get_datafeeds-exclude_generated"
      responses:
        '200':
          "$ref": "#/components/responses/ml.get_datafeeds-200"
      x-state: Generally available; Added in 5.5.0
      x-codeSamples:
      - lang: Console
        source: 'GET _ml/datafeeds/datafeed-high_sum_total_sales

          '
      - lang: Python
        source: |-
          resp = client.ml.get_datafeeds(
              datafeed_id="datafeed-high_sum_total_sales",
          )
      - lang: JavaScript
        source: |-
          const response = await client.ml.getDatafeeds({
            datafeed_id: "datafeed-high_sum_total_sales",
          });
      - lang: Ruby
        source: |-
          response = client.ml.get_datafeeds(
            datafeed_id: "datafeed-high_sum_total_sales"
          )
      - lang: PHP
        source: |-
          $resp = $client->ml()->getDatafeeds([
              "datafeed_id" => "datafeed-high_sum_total_sales",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_ml/datafeeds/datafeed-high_sum_total_sales"'
      - lang: Java
        source: |
          client.ml().getDatafeeds(g -> g
              .datafeedId("datafeed-high_sum_total_sales")
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
    put:
      tags:
      - ml anomaly
      summary: Create a datafeed
      description: |
        Datafeeds retrieve data from Elasticsearch for analysis by an anomaly detection job.
        You can associate only one datafeed with each anomaly detection job.
        The datafeed contains a query that runs at a defined interval (`frequency`).
        If you are concerned about delayed data, you can add a delay (`query_delay') at each interval.
        By default, the datafeed uses the following query: `{"match_all": {"boost": 1}}`.

        When Elasticsearch security features are enabled, your datafeed remembers which roles the user who created it had
        at the time of creation and runs the query using those same roles. If you provide secondary authorization headers,
        those credentials are used instead.
        You must use Kibana, this API, or the create anomaly detection jobs API to create a datafeed. Do not add a datafeed
        directly to the `.ml-config` index. Do not give users `write` privileges on the `.ml-config` index.

        ## Required authorization

        * Index privileges: `read`
        * Cluster privileges: `manage_ml`
      operationId: ml-put-datafeed
      parameters:
      - in: path
        name: datafeed_id
        description: |-
          A numerical character string that uniquely identifies the datafeed.
          This identifier can contain lowercase alphanumeric characters (a-z and 0-9), hyphens, and underscores.
          It must start and end with alphanumeric characters.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: allow_no_indices
        description: |-
          If true, wildcard indices expressions that resolve into no concrete indices are ignored. This includes the `_all`
          string or when no indices are specified.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: expand_wildcards
        description: |+
          Type of index that wildcard patterns can match. If the request can target data streams, this argument determines
          whether wildcard expressions match hidden data streams. Supports comma-separated values.

          Supported values include:
            - `all`: Match any data stream or index, including hidden ones.
            - `open`: Match open, non-hidden indices. Also matches any non-hidden data stream.
            - `closed`: Match closed, non-hidden indices. Also matches any non-hidden data stream. Data streams cannot be closed.
            - `hidden`: Match hidden data streams and hidden indices. Must be combined with `open`, `closed`, or `both`.
            - `none`: Wildcard expressions are not accepted.

        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.ExpandWildcards"
        style: form
      - in: query
        name: ignore_throttled
        description: If true, concrete, expanded, or aliased indices are ignored when
          frozen.
        deprecated: true
        schema:
          type: boolean
        style: form
      - in: query
        name: ignore_unavailable
        description: If true, unavailable indices (missing or closed) are ignored.
        deprecated: false
        schema:
          type: boolean
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                aggregations:
                  description: |-
                    If set, the datafeed performs aggregation searches.
                    Support for aggregations is limited and should be used only with low cardinality data.
                  type: object
                  additionalProperties:
                    "$ref": "#/components/schemas/_types.aggregations.AggregationContainer"
                chunking_config:
                  description: |-
                    Datafeeds might be required to search over long time periods, for several months or years.
                    This search is split into time chunks in order to ensure the load on Elasticsearch is managed.
                    Chunking configuration controls how the size of these time chunks are calculated;
                    it is an advanced configuration option.
                  allOf:
                  - "$ref": "#/components/schemas/ml._types.ChunkingConfig"
                delayed_data_check_config:
                  description: |-
                    Specifies whether the datafeed checks for missing data and the size of the window.
                    The datafeed can optionally search over indices that have already been read in an effort to determine whether
                    any data has subsequently been added to the index. If missing data is found, it is a good indication that the
                    `query_delay` is set too low and the data is being indexed after the datafeed has passed that moment in time.
                    This check runs only on real-time datafeeds.
                  allOf:
                  - "$ref": "#/components/schemas/ml._types.DelayedDataCheckConfig"
                frequency:
                  description: |-
                    The interval at which scheduled queries are made while the datafeed runs in real time.
                    The default value is either the bucket span for short bucket spans, or, for longer bucket spans, a sensible
                    fraction of the bucket span. When `frequency` is shorter than the bucket span, interim results for the last
                    (partial) bucket are written then eventually overwritten by the full bucket results. If the datafeed uses
                    aggregations, this value must be divisible by the interval of the date histogram aggregation.
                  allOf:
                  - "$ref": "#/components/schemas/_types.Duration"
                indices:
                  description: |-
                    An array of index names. Wildcards are supported. If any of the indices are in remote clusters, the master
                    nodes and the machine learning nodes must have the `remote_cluster_client` role.
                  allOf:
                  - "$ref": "#/components/schemas/_types.Indices"
                indices_options:
                  description: Specifies index expansion options that are used during
                    search
                  allOf:
                  - "$ref": "#/components/schemas/_types.IndicesOptions"
                job_id:
                  description: Identifier for the anomaly detection job.
                  allOf:
                  - "$ref": "#/components/schemas/_types.Id"
                max_empty_searches:
                  description: |-
                    If a real-time datafeed has never seen any data (including during any initial training period), it automatically
                    stops and closes the associated job after this many real-time searches return no documents. In other words,
                    it stops after `frequency` times `max_empty_searches` of real-time operation. If not set, a datafeed with no
                    end time that sees no data remains started until it is explicitly stopped. By default, it is not set.
                  type: number
                query:
                  description: |-
                    The Elasticsearch query domain-specific language (DSL). This value corresponds to the query object in an
                    Elasticsearch search POST body. All the options that are supported by Elasticsearch can be used, as this
                    object is passed verbatim to Elasticsearch.
                  default: '{"match_all": {"boost": 1}}'
                  allOf:
                  - "$ref": "#/components/schemas/_types.query_dsl.QueryContainer"
                query_delay:
                  description: |-
                    The number of seconds behind real time that data is queried. For example, if data from 10:04 a.m. might
                    not be searchable in Elasticsearch until 10:06 a.m., set this property to 120 seconds. The default
                    value is randomly selected between `60s` and `120s`. This randomness improves the query performance
                    when there are multiple jobs running on the same node.
                  allOf:
                  - "$ref": "#/components/schemas/_types.Duration"
                runtime_mappings:
                  description: Specifies runtime fields for the datafeed search.
                  allOf:
                  - "$ref": "#/components/schemas/_types.mapping.RuntimeFields"
                script_fields:
                  description: |-
                    Specifies scripts that evaluate custom expressions and returns script fields to the datafeed.
                    The detector configuration objects in a job can contain functions that use these script fields.
                  type: object
                  additionalProperties:
                    "$ref": "#/components/schemas/_types.ScriptField"
                scroll_size:
                  description: |-
                    The size parameter that is used in Elasticsearch searches when the datafeed does not use aggregations.
                    The maximum value is the value of `index.max_result_window`, which is 10,000 by default.
                  default: 1000
                  type: number
                headers:
                  x-state: Generally available; Added in 8.0.0
                  allOf:
                  - "$ref": "#/components/schemas/_types.HttpHeaders"
            examples:
              MlPutDatafeedExample1:
                description: An example body for a `PUT _ml/datafeeds/datafeed-test-job?pretty`
                  request.
                value: |-
                  {
                    "indices": [
                      "kibana_sample_data_logs"
                    ],
                    "query": {
                      "bool": {
                        "must": [
                          {
                            "match_all": {}
                          }
                        ]
                      }
                    },
                    "job_id": "test-job"
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  aggregations:
                    type: object
                    additionalProperties:
                      "$ref": "#/components/schemas/_types.aggregations.AggregationContainer"
                  authorization:
                    allOf:
                    - "$ref": "#/components/schemas/ml._types.DatafeedAuthorization"
                  chunking_config:
                    allOf:
                    - "$ref": "#/components/schemas/ml._types.ChunkingConfig"
                  delayed_data_check_config:
                    allOf:
                    - "$ref": "#/components/schemas/ml._types.DelayedDataCheckConfig"
                  datafeed_id:
                    allOf:
                    - "$ref": "#/components/schemas/_types.Id"
                  frequency:
                    allOf:
                    - "$ref": "#/components/schemas/_types.Duration"
                  indices:
                    type: array
                    items:
                      type: string
                  job_id:
                    allOf:
                    - "$ref": "#/components/schemas/_types.Id"
                  indices_options:
                    allOf:
                    - "$ref": "#/components/schemas/_types.IndicesOptions"
                  max_empty_searches:
                    type: number
                  query:
                    allOf:
                    - "$ref": "#/components/schemas/_types.query_dsl.QueryContainer"
                  query_delay:
                    allOf:
                    - "$ref": "#/components/schemas/_types.Duration"
                  runtime_mappings:
                    allOf:
                    - "$ref": "#/components/schemas/_types.mapping.RuntimeFields"
                  script_fields:
                    type: object
                    additionalProperties:
                      "$ref": "#/components/schemas/_types.ScriptField"
                  scroll_size:
                    type: number
                required:
                - chunking_config
                - datafeed_id
                - indices
                - job_id
                - query
                - query_delay
                - scroll_size
      x-state: Generally available; Added in 5.4.0
      x-codeSamples:
      - lang: Console
        source: |-
          PUT _ml/datafeeds/datafeed-test-job?pretty
          {
            "indices": [
              "kibana_sample_data_logs"
            ],
            "query": {
              "bool": {
                "must": [
                  {
                    "match_all": {}
                  }
                ]
              }
            },
            "job_id": "test-job"
          }
      - lang: Python
        source: |-
          resp = client.ml.put_datafeed(
              datafeed_id="datafeed-test-job",
              pretty=True,
              indices=[
                  "kibana_sample_data_logs"
              ],
              query={
                  "bool": {
                      "must": [
                          {
                              "match_all": {}
                          }
                      ]
                  }
              },
              job_id="test-job",
          )
      - lang: JavaScript
        source: |-
          const response = await client.ml.putDatafeed({
            datafeed_id: "datafeed-test-job",
            pretty: "true",
            indices: ["kibana_sample_data_logs"],
            query: {
              bool: {
                must: [
                  {
                    match_all: {},
                  },
                ],
              },
            },
            job_id: "test-job",
          });
      - lang: Ruby
        source: |-
          response = client.ml.put_datafeed(
            datafeed_id: "datafeed-test-job",
            pretty: "true",
            body: {
              "indices": [
                "kibana_sample_data_logs"
              ],
              "query": {
                "bool": {
                  "must": [
                    {
                      "match_all": {}
                    }
                  ]
                }
              },
              "job_id": "test-job"
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->ml()->putDatafeed([
              "datafeed_id" => "datafeed-test-job",
              "pretty" => "true",
              "body" => [
                  "indices" => array(
                      "kibana_sample_data_logs",
                  ),
                  "query" => [
                      "bool" => [
                          "must" => array(
                              [
                                  "match_all" => new ArrayObject([]),
                              ],
                          ),
                      ],
                  ],
                  "job_id" => "test-job",
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"indices":["kibana_sample_data_logs"],"query":{"bool":{"must":[{"match_all":{}}]}},"job_id":"test-job"}''
          "$ELASTICSEARCH_URL/_ml/datafeeds/datafeed-test-job?pretty"'
      - lang: Java
        source: |
          client.ml().putDatafeed(p -> p
              .datafeedId("datafeed-test-job")
              .indices("kibana_sample_data_logs")
              .jobId("test-job")
              .query(q -> q
                  .bool(b -> b
                      .must(m -> m
                          .matchAll(ma -> ma)
                      )
                  )
              )
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
    delete:
      tags:
      - ml anomaly
      summary: Delete a datafeed
      description: |2


        ## Required authorization

        * Cluster privileges: `manage_ml`
      operationId: ml-delete-datafeed
      parameters:
      - in: path
        name: datafeed_id
        description: |-
          A numerical character string that uniquely identifies the datafeed. This
          identifier can contain lowercase alphanumeric characters (a-z and 0-9),
          hyphens, and underscores. It must start and end with alphanumeric
          characters.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: force
        description: |-
          Use to forcefully delete a started datafeed; this method is quicker than
          stopping and deleting the datafeed.
        deprecated: false
        schema:
          type: boolean
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
              examples:
                MlDeleteDatafeedResponseExample1:
                  description: A successful response when deleting a datafeed.
                  value: |-
                    {
                      "acknowledged": true
                    }
      x-state: Generally available; Added in 5.4.0
      x-codeSamples:
      - lang: Console
        source: 'DELETE _ml/datafeeds/datafeed-total-requests

          '
      - lang: Python
        source: |-
          resp = client.ml.delete_datafeed(
              datafeed_id="datafeed-total-requests",
          )
      - lang: JavaScript
        source: |-
          const response = await client.ml.deleteDatafeed({
            datafeed_id: "datafeed-total-requests",
          });
      - lang: Ruby
        source: |-
          response = client.ml.delete_datafeed(
            datafeed_id: "datafeed-total-requests"
          )
      - lang: PHP
        source: |-
          $resp = $client->ml()->deleteDatafeed([
              "datafeed_id" => "datafeed-total-requests",
          ]);
      - lang: curl
        source: 'curl -X DELETE -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_ml/datafeeds/datafeed-total-requests"'
      - lang: Java
        source: |
          client.ml().deleteDatafeed(d -> d
              .datafeedId("datafeed-total-requests")
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_ml/_delete_expired_data/{job_id}":
    delete:
      tags:
      - ml anomaly
      summary: 'Delete expired ML data

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb delete\">DELETE</span>\n                      <span
        class=\"operation-path\">/_ml/_delete_expired_data</span>\n                      </div>\n
        \                   <div>\n                      <span class=\"operation-verb
        delete\">DELETE</span>\n                      <span class=\"operation-path\">/_ml/_delete_expired_data/{job_id}</span>\n
        \                     </div>\n                    \n\nDelete all job results,
        model snapshots and forecast data that have exceeded\ntheir retention days
        period. Machine learning state documents that are not\nassociated with any
        job are also deleted.\nYou can limit the request to a single or set of anomaly
        detection jobs by\nusing a job identifier, a group name, a comma-separated
        list of jobs, or a\nwildcard expression. You can delete expired data for all
        anomaly detection\njobs by using `_all`, by specifying `*` as the `<job_id>`,
        or by omitting the\n`<job_id>`.\n\n## Required authorization\n\n* Cluster
        privileges: `manage_ml`\n"
      operationId: ml-delete-expired-data
      parameters:
      - "$ref": "#/components/parameters/ml.delete_expired_data-job_id"
      - "$ref": "#/components/parameters/ml.delete_expired_data-requests_per_second"
      - "$ref": "#/components/parameters/ml.delete_expired_data-timeout"
      requestBody:
        "$ref": "#/components/requestBodies/ml.delete_expired_data"
      responses:
        '200':
          "$ref": "#/components/responses/ml.delete_expired_data-200"
      x-state: Generally available; Added in 5.4.0
      x-codeSamples:
      - lang: Console
        source: 'DELETE _ml/_delete_expired_data?timeout=1h

          '
      - lang: Python
        source: |-
          resp = client.ml.delete_expired_data(
              timeout="1h",
          )
      - lang: JavaScript
        source: |-
          const response = await client.ml.deleteExpiredData({
            timeout: "1h",
          });
      - lang: Ruby
        source: |-
          response = client.ml.delete_expired_data(
            timeout: "1h"
          )
      - lang: PHP
        source: |-
          $resp = $client->ml()->deleteExpiredData([
              "timeout" => "1h",
          ]);
      - lang: curl
        source: 'curl -X DELETE -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_ml/_delete_expired_data?timeout=1h"'
      - lang: Java
        source: |
          client.ml().deleteExpiredData(d -> d
              .timeout(t -> t
                  .offset(1)
              )
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_ml/filters/{filter_id}":
    get:
      tags:
      - ml anomaly
      summary: 'Get filters

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_ml/filters</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_ml/filters/{filter_id}</span>\n
        \                     </div>\n                    \n\nYou can get a single
        filter or all filters.\n\n## Required authorization\n\n* Cluster privileges:
        `manage_ml`\n"
      operationId: ml-get-filters
      parameters:
      - "$ref": "#/components/parameters/ml.get_filters-filter_id"
      - "$ref": "#/components/parameters/ml.get_filters-from"
      - "$ref": "#/components/parameters/ml.get_filters-size"
      responses:
        '200':
          "$ref": "#/components/responses/ml.get_filters-200"
      x-state: Generally available; Added in 5.5.0
      x-codeSamples:
      - lang: Console
        source: 'GET _ml/filters/safe_domains

          '
      - lang: Python
        source: |-
          resp = client.ml.get_filters(
              filter_id="safe_domains",
          )
      - lang: JavaScript
        source: |-
          const response = await client.ml.getFilters({
            filter_id: "safe_domains",
          });
      - lang: Ruby
        source: |-
          response = client.ml.get_filters(
            filter_id: "safe_domains"
          )
      - lang: PHP
        source: |-
          $resp = $client->ml()->getFilters([
              "filter_id" => "safe_domains",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_ml/filters/safe_domains"'
      - lang: Java
        source: |
          client.ml().getFilters(g -> g
              .filterId("safe_domains")
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
    put:
      tags:
      - ml anomaly
      summary: Create a filter
      description: |
        A filter contains a list of strings. It can be used by one or more anomaly detection jobs.
        Specifically, filters are referenced in the `custom_rules` property of detector configuration objects.

        ## Required authorization

        * Cluster privileges: `manage_ml`
      operationId: ml-put-filter
      parameters:
      - in: path
        name: filter_id
        description: A string that uniquely identifies a filter.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                description:
                  description: A description of the filter.
                  type: string
                items:
                  description: |-
                    The items of the filter. A wildcard `*` can be used at the beginning or the end of an item.
                    Up to 10000 items are allowed in each filter.
                  type: array
                  items:
                    type: string
            examples:
              MlPutFilterExample1:
                description: An example body for a `PUT _ml/filters/safe_domains`
                  request.
                value: |-
                  {
                    "description": "A list of safe domains",
                    "items": ["*.google.com", "wikipedia.org"]
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  description:
                    type: string
                  filter_id:
                    allOf:
                    - "$ref": "#/components/schemas/_types.Id"
                  items:
                    type: array
                    items:
                      type: string
                required:
                - description
                - filter_id
                - items
      x-state: Generally available; Added in 5.4.0
      x-codeSamples:
      - lang: Console
        source: |-
          PUT _ml/filters/safe_domains
          {
            "description": "A list of safe domains",
            "items": ["*.google.com", "wikipedia.org"]
          }
      - lang: Python
        source: |-
          resp = client.ml.put_filter(
              filter_id="safe_domains",
              description="A list of safe domains",
              items=[
                  "*.google.com",
                  "wikipedia.org"
              ],
          )
      - lang: JavaScript
        source: |-
          const response = await client.ml.putFilter({
            filter_id: "safe_domains",
            description: "A list of safe domains",
            items: ["*.google.com", "wikipedia.org"],
          });
      - lang: Ruby
        source: |-
          response = client.ml.put_filter(
            filter_id: "safe_domains",
            body: {
              "description": "A list of safe domains",
              "items": [
                "*.google.com",
                "wikipedia.org"
              ]
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->ml()->putFilter([
              "filter_id" => "safe_domains",
              "body" => [
                  "description" => "A list of safe domains",
                  "items" => array(
                      "*.google.com",
                      "wikipedia.org",
                  ),
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"description":"A list of safe domains","items":["*.google.com","wikipedia.org"]}''
          "$ELASTICSEARCH_URL/_ml/filters/safe_domains"'
      - lang: Java
        source: |
          client.ml().putFilter(p -> p
              .description("A list of safe domains")
              .filterId("safe_domains")
              .items(List.of("*.google.com","wikipedia.org"))
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
    delete:
      tags:
      - ml anomaly
      summary: Delete a filter
      description: |
        If an anomaly detection job references the filter, you cannot delete the
        filter. You must update or delete the job before you can delete the filter.

        ## Required authorization

        * Cluster privileges: `manage_ml`
      operationId: ml-delete-filter
      parameters:
      - in: path
        name: filter_id
        description: A string that uniquely identifies a filter.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
              examples:
                MlDeleteFilterResponseExample1:
                  description: A successful response when deleting a filter.
                  value: |-
                    {
                      "acknowledged": true
                    }
      x-state: Generally available; Added in 5.4.0
      x-codeSamples:
      - lang: Console
        source: 'DELETE _ml/filters/safe_domains

          '
      - lang: Python
        source: |-
          resp = client.ml.delete_filter(
              filter_id="safe_domains",
          )
      - lang: JavaScript
        source: |-
          const response = await client.ml.deleteFilter({
            filter_id: "safe_domains",
          });
      - lang: Ruby
        source: |-
          response = client.ml.delete_filter(
            filter_id: "safe_domains"
          )
      - lang: PHP
        source: |-
          $resp = $client->ml()->deleteFilter([
              "filter_id" => "safe_domains",
          ]);
      - lang: curl
        source: 'curl -X DELETE -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_ml/filters/safe_domains"'
      - lang: Java
        source: |
          client.ml().deleteFilter(d -> d
              .filterId("safe_domains")
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_ml/anomaly_detectors/{job_id}/_forecast/{forecast_id}":
    delete:
      tags:
      - ml anomaly
      summary: 'Delete forecasts from a job

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb delete\">DELETE</span>\n                      <span
        class=\"operation-path\">/_ml/anomaly_detectors/{job_id}/_forecast</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb delete\">DELETE</span>\n                      <span
        class=\"operation-path\">/_ml/anomaly_detectors/{job_id}/_forecast/{forecast_id}</span>\n
        \                     </div>\n                    \n\nBy default, forecasts
        are retained for 14 days. You can specify a\ndifferent retention period with
        the `expires_in` parameter in the forecast\njobs API. The delete forecast
        API enables you to delete one or more\nforecasts before they expire.\n\n##
        Required authorization\n\n* Cluster privileges: `manage_ml`\n"
      operationId: ml-delete-forecast
      parameters:
      - "$ref": "#/components/parameters/ml.delete_forecast-job_id"
      - "$ref": "#/components/parameters/ml.delete_forecast-forecast_id"
      - "$ref": "#/components/parameters/ml.delete_forecast-allow_no_forecasts"
      - "$ref": "#/components/parameters/ml.delete_forecast-timeout"
      responses:
        '200':
          "$ref": "#/components/responses/ml.delete_forecast-200"
      x-state: Generally available; Added in 6.5.0
      x-codeSamples:
      - lang: Console
        source: 'DELETE _ml/anomaly_detectors/total-requests/_forecast/_all

          '
      - lang: Python
        source: |-
          resp = client.ml.delete_forecast(
              job_id="total-requests",
              forecast_id="_all",
          )
      - lang: JavaScript
        source: |-
          const response = await client.ml.deleteForecast({
            job_id: "total-requests",
            forecast_id: "_all",
          });
      - lang: Ruby
        source: |-
          response = client.ml.delete_forecast(
            job_id: "total-requests",
            forecast_id: "_all"
          )
      - lang: PHP
        source: |-
          $resp = $client->ml()->deleteForecast([
              "job_id" => "total-requests",
              "forecast_id" => "_all",
          ]);
      - lang: curl
        source: 'curl -X DELETE -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_ml/anomaly_detectors/total-requests/_forecast/_all"'
      - lang: Java
        source: |
          client.ml().deleteForecast(d -> d
              .forecastId("_all")
              .jobId("total-requests")
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_ml/anomaly_detectors/{job_id}":
    get:
      tags:
      - ml anomaly
      summary: 'Get anomaly detection jobs configuration info

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_ml/anomaly_detectors</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_ml/anomaly_detectors/{job_id}</span>\n
        \                     </div>\n                    \n\nYou can get information
        for multiple anomaly detection jobs in a single API\nrequest by using a group
        name, a comma-separated list of jobs, or a wildcard\nexpression. You can get
        information for all anomaly detection jobs by using\n`_all`, by specifying
        `*` as the `<job_id>`, or by omitting the `<job_id>`.\n\n## Required authorization\n\n*
        Cluster privileges: `monitor_ml`\n"
      operationId: ml-get-jobs
      parameters:
      - "$ref": "#/components/parameters/ml.get_jobs-job_id"
      - "$ref": "#/components/parameters/ml.get_jobs-allow_no_match"
      - "$ref": "#/components/parameters/ml.get_jobs-exclude_generated"
      responses:
        '200':
          "$ref": "#/components/responses/ml.get_jobs-200"
      x-state: Generally available; Added in 5.5.0
      x-codeSamples:
      - lang: Console
        source: 'GET _ml/anomaly_detectors/high_sum_total_sales

          '
      - lang: Python
        source: |-
          resp = client.ml.get_jobs(
              job_id="high_sum_total_sales",
          )
      - lang: JavaScript
        source: |-
          const response = await client.ml.getJobs({
            job_id: "high_sum_total_sales",
          });
      - lang: Ruby
        source: |-
          response = client.ml.get_jobs(
            job_id: "high_sum_total_sales"
          )
      - lang: PHP
        source: |-
          $resp = $client->ml()->getJobs([
              "job_id" => "high_sum_total_sales",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_ml/anomaly_detectors/high_sum_total_sales"'
      - lang: Java
        source: |
          client.ml().getJobs(g -> g
              .jobId("high_sum_total_sales")
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
    put:
      tags:
      - ml anomaly
      summary: Create an anomaly detection job
      description: |
        If you include a `datafeed_config`, you must have read index privileges on the source index.
        If you include a `datafeed_config` but do not provide a query, the datafeed uses `{"match_all": {"boost": 1}}`.

        ## Required authorization

        * Index privileges: `read`
        * Cluster privileges: `manage_ml`
      operationId: ml-put-job
      parameters:
      - in: path
        name: job_id
        description: The identifier for the anomaly detection job. This identifier
          can contain lowercase alphanumeric characters (a-z and 0-9), hyphens, and
          underscores. It must start and end with alphanumeric characters.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: allow_no_indices
        description: |-
          If `true`, wildcard indices expressions that resolve into no concrete indices are ignored. This includes the
          `_all` string or when no indices are specified.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: expand_wildcards
        description: |+
          Type of index that wildcard patterns can match. If the request can target data streams, this argument determines
          whether wildcard expressions match hidden data streams. Supports comma-separated values.

          Supported values include:
            - `all`: Match any data stream or index, including hidden ones.
            - `open`: Match open, non-hidden indices. Also matches any non-hidden data stream.
            - `closed`: Match closed, non-hidden indices. Also matches any non-hidden data stream. Data streams cannot be closed.
            - `hidden`: Match hidden data streams and hidden indices. Must be combined with `open`, `closed`, or `both`.
            - `none`: Wildcard expressions are not accepted.

        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.ExpandWildcards"
        style: form
      - in: query
        name: ignore_throttled
        description: If `true`, concrete, expanded or aliased indices are ignored
          when frozen.
        deprecated: true
        schema:
          type: boolean
        style: form
      - in: query
        name: ignore_unavailable
        description: If `true`, unavailable indices (missing or closed) are ignored.
        deprecated: false
        schema:
          type: boolean
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                allow_lazy_open:
                  description: Advanced configuration option. Specifies whether this
                    job can open when there is insufficient machine learning node
                    capacity for it to be immediately assigned to a node. By default,
                    if a machine learning node with capacity to run the job cannot
                    immediately be found, the open anomaly detection jobs API returns
                    an error. However, this is also subject to the cluster-wide `xpack.ml.max_lazy_ml_nodes`
                    setting. If this option is set to true, the open anomaly detection
                    jobs API does not return an error and the job waits in the opening
                    state until sufficient machine learning node capacity is available.
                  default: false
                  type: boolean
                analysis_config:
                  description: Specifies how to analyze the data. After you create
                    a job, you cannot change the analysis configuration; all the properties
                    are informational.
                  allOf:
                  - "$ref": "#/components/schemas/ml._types.AnalysisConfig"
                analysis_limits:
                  description: Limits can be applied for the resources required to
                    hold the mathematical models in memory. These limits are approximate
                    and can be set per job. They do not control the memory used by
                    other processes, for example the Elasticsearch Java processes.
                  allOf:
                  - "$ref": "#/components/schemas/ml._types.AnalysisLimits"
                background_persist_interval:
                  description: Advanced configuration option. The time between each
                    periodic persistence of the model. The default value is a randomized
                    value between 3 to 4 hours, which avoids all jobs persisting at
                    exactly the same time. The smallest allowed value is 1 hour. For
                    very large models (several GB), persistence could take 10-20 minutes,
                    so do not set the `background_persist_interval` value too low.
                  allOf:
                  - "$ref": "#/components/schemas/_types.Duration"
                custom_settings:
                  description: Advanced configuration option. Contains custom meta
                    data about the job.
                  allOf:
                  - "$ref": "#/components/schemas/ml._types.CustomSettings"
                daily_model_snapshot_retention_after_days:
                  description: Advanced configuration option, which affects the automatic
                    removal of old model snapshots for this job. It specifies a period
                    of time (in days) after which only the first snapshot per day
                    is retained. This period is relative to the timestamp of the most
                    recent snapshot for this job. Valid values range from 0 to `model_snapshot_retention_days`.
                  default: 1
                  type: number
                data_description:
                  description: Defines the format of the input data when you send
                    data to the job by using the post data API. Note that when configure
                    a datafeed, these properties are automatically set. When data
                    is received via the post data API, it is not stored in Elasticsearch.
                    Only the results for anomaly detection are retained.
                  allOf:
                  - "$ref": "#/components/schemas/ml._types.DataDescription"
                datafeed_config:
                  description: Defines a datafeed for the anomaly detection job. If
                    Elasticsearch security features are enabled, your datafeed remembers
                    which roles the user who created it had at the time of creation
                    and runs the query using those same roles. If you provide secondary
                    authorization headers, those credentials are used instead.
                  allOf:
                  - "$ref": "#/components/schemas/ml._types.DatafeedConfig"
                description:
                  description: A description of the job.
                  type: string
                job_id:
                  description: The identifier for the anomaly detection job. This
                    identifier can contain lowercase alphanumeric characters (a-z
                    and 0-9), hyphens, and underscores. It must start and end with
                    alphanumeric characters.
                  allOf:
                  - "$ref": "#/components/schemas/_types.Id"
                groups:
                  description: A list of job groups. A job can belong to no groups
                    or many.
                  type: array
                  items:
                    type: string
                model_plot_config:
                  description: This advanced configuration option stores model information
                    along with the results. It provides a more detailed view into
                    anomaly detection. If you enable model plot it can add considerable
                    overhead to the performance of the system; it is not feasible
                    for jobs with many entities. Model plot provides a simplified
                    and indicative view of the model and its bounds. It does not display
                    complex features such as multivariate correlations or multimodal
                    data. As such, anomalies may occasionally be reported which cannot
                    be seen in the model plot. Model plot config can be configured
                    when the job is created or updated later. It must be disabled
                    if performance issues are experienced.
                  allOf:
                  - "$ref": "#/components/schemas/ml._types.ModelPlotConfig"
                model_snapshot_retention_days:
                  description: Advanced configuration option, which affects the automatic
                    removal of old model snapshots for this job. It specifies the
                    maximum period of time (in days) that snapshots are retained.
                    This period is relative to the timestamp of the most recent snapshot
                    for this job. By default, snapshots ten days older than the newest
                    snapshot are deleted.
                  default: 10
                  type: number
                renormalization_window_days:
                  description: Advanced configuration option. The period over which
                    adjustments to the score are applied, as new data is seen. The
                    default value is the longer of 30 days or 100 bucket spans.
                  type: number
                results_index_name:
                  description: A text string that affects the name of the machine
                    learning results index. By default, the job generates an index
                    named `.ml-anomalies-shared`.
                  default: shared
                  allOf:
                  - "$ref": "#/components/schemas/_types.IndexName"
                results_retention_days:
                  description: Advanced configuration option. The period of time (in
                    days) that results are retained. Age is calculated relative to
                    the timestamp of the latest bucket result. If this property has
                    a non-null value, once per day at 00:30 (server time), results
                    that are the specified number of days older than the latest bucket
                    result are deleted from Elasticsearch. The default value is null,
                    which means all results are retained. Annotations generated by
                    the system also count as results for retention purposes; they
                    are deleted after the same number of days as results. Annotations
                    added by users are retained forever.
                  type: number
              required:
              - analysis_config
              - data_description
            examples:
              MlPutJobRequestExample1:
                description: A request to create an anomaly detection job and datafeed.
                value: |-
                  {
                    "analysis_config": {
                      "bucket_span": "15m",
                      "detectors": [
                        {
                          "detector_description": "Sum of bytes",
                          "function": "sum",
                          "field_name": "bytes"
                        }
                      ]
                    },
                    "data_description": {
                      "time_field": "timestamp",
                      "time_format": "epoch_ms"
                    },
                    "analysis_limits": {
                      "model_memory_limit": "11MB"
                    },
                    "model_plot_config": {
                      "enabled": true,
                      "annotations_enabled": true
                    },
                    "results_index_name": "test-job1",
                    "datafeed_config": {
                      "indices": [
                        "kibana_sample_data_logs"
                      ],
                      "query": {
                        "bool": {
                          "must": [
                            {
                              "match_all": {}
                            }
                          ]
                        }
                      },
                      "runtime_mappings": {
                        "hour_of_day": {
                          "type": "long",
                          "script": {
                            "source": "emit(doc['timestamp'].value.getHour());"
                          }
                        }
                      },
                      "datafeed_id": "datafeed-test-job1"
                    }
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  allow_lazy_open:
                    type: boolean
                  analysis_config:
                    allOf:
                    - "$ref": "#/components/schemas/ml._types.AnalysisConfigRead"
                  analysis_limits:
                    allOf:
                    - "$ref": "#/components/schemas/ml._types.AnalysisLimits"
                  background_persist_interval:
                    allOf:
                    - "$ref": "#/components/schemas/_types.Duration"
                  create_time:
                    allOf:
                    - "$ref": "#/components/schemas/_types.DateTime"
                  custom_settings:
                    allOf:
                    - "$ref": "#/components/schemas/ml._types.CustomSettings"
                  daily_model_snapshot_retention_after_days:
                    type: number
                  data_description:
                    allOf:
                    - "$ref": "#/components/schemas/ml._types.DataDescription"
                  datafeed_config:
                    allOf:
                    - "$ref": "#/components/schemas/ml._types.Datafeed"
                  description:
                    type: string
                  groups:
                    type: array
                    items:
                      type: string
                  job_id:
                    allOf:
                    - "$ref": "#/components/schemas/_types.Id"
                  job_type:
                    type: string
                  job_version:
                    type: string
                  model_plot_config:
                    allOf:
                    - "$ref": "#/components/schemas/ml._types.ModelPlotConfig"
                  model_snapshot_id:
                    allOf:
                    - "$ref": "#/components/schemas/_types.Id"
                  model_snapshot_retention_days:
                    type: number
                  renormalization_window_days:
                    type: number
                  results_index_name:
                    type: string
                  results_retention_days:
                    type: number
                required:
                - allow_lazy_open
                - analysis_config
                - analysis_limits
                - create_time
                - daily_model_snapshot_retention_after_days
                - data_description
                - job_id
                - job_type
                - job_version
                - model_snapshot_retention_days
                - results_index_name
              examples:
                MlPutJobResponseExample1:
                  description: A successful response when creating an anomaly detection
                    job and datafeed.
                  value: |-
                    {
                      "job_id": "test-job1",
                      "job_type": "anomaly_detector",
                      "job_version": "8.4.0",
                      "create_time": 1656087283340,
                      "datafeed_config": {
                        "datafeed_id": "datafeed-test-job1",
                        "job_id": "test-job1",
                        "authorization": {
                          "roles": [
                            "superuser"
                          ]
                        },
                        "query_delay": "61499ms",
                        "chunking_config": {
                          "mode": "auto"
                        },
                        "indices_options": {
                          "expand_wildcards": [
                            "open"
                          ],
                          "ignore_unavailable": false,
                          "allow_no_indices": true,
                          "ignore_throttled": true
                        },
                        "query": {
                          "bool": {
                            "must": [
                              {
                                "match_all": {}
                              }
                            ]
                          }
                        },
                        "indices": [
                          "kibana_sample_data_logs"
                        ],
                        "scroll_size": 1000,
                        "delayed_data_check_config": {
                          "enabled": true
                        },
                        "runtime_mappings": {
                          "hour_of_day": {
                            "type": "long",
                            "script": {
                              "source": "emit(doc['timestamp'].value.getHour());"
                            }
                          }
                        }
                      },
                      "analysis_config": {
                        "bucket_span": "15m",
                        "detectors": [
                          {
                            "detector_description": "Sum of bytes",
                            "function": "sum",
                            "field_name": "bytes",
                            "detector_index": 0
                          }
                        ],
                        "influencers": [],
                        "model_prune_window": "30d"
                      },
                      "analysis_limits": {
                        "model_memory_limit": "11mb",
                        "categorization_examples_limit": 4
                      },
                      "data_description": {
                        "time_field": "timestamp",
                        "time_format": "epoch_ms"
                      },
                      "model_plot_config": {
                        "enabled": true,
                        "annotations_enabled": true
                      },
                      "model_snapshot_retention_days": 10,
                      "daily_model_snapshot_retention_after_days": 1,
                      "results_index_name": "custom-test-job1",
                      "allow_lazy_open": false
                    }
      x-state: Generally available; Added in 5.4.0
      x-codeSamples:
      - lang: Console
        source: |-
          PUT /_ml/anomaly_detectors/job-01
          {
            "analysis_config": {
              "bucket_span": "15m",
              "detectors": [
                {
                  "detector_description": "Sum of bytes",
                  "function": "sum",
                  "field_name": "bytes"
                }
              ]
            },
            "data_description": {
              "time_field": "timestamp",
              "time_format": "epoch_ms"
            },
            "analysis_limits": {
              "model_memory_limit": "11MB"
            },
            "model_plot_config": {
              "enabled": true,
              "annotations_enabled": true
            },
            "results_index_name": "test-job1",
            "datafeed_config": {
              "indices": [
                "kibana_sample_data_logs"
              ],
              "query": {
                "bool": {
                  "must": [
                    {
                      "match_all": {}
                    }
                  ]
                }
              },
              "runtime_mappings": {
                "hour_of_day": {
                  "type": "long",
                  "script": {
                    "source": "emit(doc['timestamp'].value.getHour());"
                  }
                }
              },
              "datafeed_id": "datafeed-test-job1"
            }
          }
      - lang: Python
        source: |-
          resp = client.ml.put_job(
              job_id="job-01",
              analysis_config={
                  "bucket_span": "15m",
                  "detectors": [
                      {
                          "detector_description": "Sum of bytes",
                          "function": "sum",
                          "field_name": "bytes"
                      }
                  ]
              },
              data_description={
                  "time_field": "timestamp",
                  "time_format": "epoch_ms"
              },
              analysis_limits={
                  "model_memory_limit": "11MB"
              },
              model_plot_config={
                  "enabled": True,
                  "annotations_enabled": True
              },
              results_index_name="test-job1",
              datafeed_config={
                  "indices": [
                      "kibana_sample_data_logs"
                  ],
                  "query": {
                      "bool": {
                          "must": [
                              {
                                  "match_all": {}
                              }
                          ]
                      }
                  },
                  "runtime_mappings": {
                      "hour_of_day": {
                          "type": "long",
                          "script": {
                              "source": "emit(doc['timestamp'].value.getHour());"
                          }
                      }
                  },
                  "datafeed_id": "datafeed-test-job1"
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.ml.putJob({
            job_id: "job-01",
            analysis_config: {
              bucket_span: "15m",
              detectors: [
                {
                  detector_description: "Sum of bytes",
                  function: "sum",
                  field_name: "bytes",
                },
              ],
            },
            data_description: {
              time_field: "timestamp",
              time_format: "epoch_ms",
            },
            analysis_limits: {
              model_memory_limit: "11MB",
            },
            model_plot_config: {
              enabled: true,
              annotations_enabled: true,
            },
            results_index_name: "test-job1",
            datafeed_config: {
              indices: ["kibana_sample_data_logs"],
              query: {
                bool: {
                  must: [
                    {
                      match_all: {},
                    },
                  ],
                },
              },
              runtime_mappings: {
                hour_of_day: {
                  type: "long",
                  script: {
                    source: "emit(doc['timestamp'].value.getHour());",
                  },
                },
              },
              datafeed_id: "datafeed-test-job1",
            },
          });
      - lang: Ruby
        source: |-
          response = client.ml.put_job(
            job_id: "job-01",
            body: {
              "analysis_config": {
                "bucket_span": "15m",
                "detectors": [
                  {
                    "detector_description": "Sum of bytes",
                    "function": "sum",
                    "field_name": "bytes"
                  }
                ]
              },
              "data_description": {
                "time_field": "timestamp",
                "time_format": "epoch_ms"
              },
              "analysis_limits": {
                "model_memory_limit": "11MB"
              },
              "model_plot_config": {
                "enabled": true,
                "annotations_enabled": true
              },
              "results_index_name": "test-job1",
              "datafeed_config": {
                "indices": [
                  "kibana_sample_data_logs"
                ],
                "query": {
                  "bool": {
                    "must": [
                      {
                        "match_all": {}
                      }
                    ]
                  }
                },
                "runtime_mappings": {
                  "hour_of_day": {
                    "type": "long",
                    "script": {
                      "source": "emit(doc['timestamp'].value.getHour());"
                    }
                  }
                },
                "datafeed_id": "datafeed-test-job1"
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->ml()->putJob([
              "job_id" => "job-01",
              "body" => [
                  "analysis_config" => [
                      "bucket_span" => "15m",
                      "detectors" => array(
                          [
                              "detector_description" => "Sum of bytes",
                              "function" => "sum",
                              "field_name" => "bytes",
                          ],
                      ),
                  ],
                  "data_description" => [
                      "time_field" => "timestamp",
                      "time_format" => "epoch_ms",
                  ],
                  "analysis_limits" => [
                      "model_memory_limit" => "11MB",
                  ],
                  "model_plot_config" => [
                      "enabled" => true,
                      "annotations_enabled" => true,
                  ],
                  "results_index_name" => "test-job1",
                  "datafeed_config" => [
                      "indices" => array(
                          "kibana_sample_data_logs",
                      ),
                      "query" => [
                          "bool" => [
                              "must" => array(
                                  [
                                      "match_all" => new ArrayObject([]),
                                  ],
                              ),
                          ],
                      ],
                      "runtime_mappings" => [
                          "hour_of_day" => [
                              "type" => "long",
                              "script" => [
                                  "source" => "emit(doc['timestamp'].value.getHour());",
                              ],
                          ],
                      ],
                      "datafeed_id" => "datafeed-test-job1",
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"analysis_config":{"bucket_span":"15m","detectors":[{"detector_description":"Sum
          of bytes","function":"sum","field_name":"bytes"}]},"data_description":{"time_field":"timestamp","time_format":"epoch_ms"},"analysis_limits":{"model_memory_limit":"11MB"},"model_plot_config":{"enabled":true,"annotations_enabled":true},"results_index_name":"test-job1","datafeed_config":{"indices":["kibana_sample_data_logs"],"query":{"bool":{"must":[{"match_all":{}}]}},"runtime_mappings":{"hour_of_day":{"type":"long","script":{"source":"emit(doc[''"''"''timestamp''"''"''].value.getHour());"}}},"datafeed_id":"datafeed-test-job1"}}''
          "$ELASTICSEARCH_URL/_ml/anomaly_detectors/job-01"'
      - lang: Java
        source: |
          client.ml().putJob(p -> p
              .analysisConfig(a -> a
                  .bucketSpan(b -> b
                      .time("15m")
                  )
                  .detectors(d -> d
                      .detectorDescription("Sum of bytes")
                      .fieldName("bytes")
                      .function("sum")
                  )
              )
              .analysisLimits(an -> an
                  .modelMemoryLimit("11MB")
              )
              .dataDescription(d -> d
                  .timeField("timestamp")
                  .timeFormat("epoch_ms")
              )
              .datafeedConfig(d -> d
                  .datafeedId("datafeed-test-job1")
                  .indices("kibana_sample_data_logs")
                  .query(q -> q
                      .bool(b -> b
                          .must(m -> m
                              .matchAll(ma -> ma)
                          )
                      )
                  )
                  .runtimeMappings("hour_of_day", r -> r
                      .script(s -> s
                          .source(so -> so
                              .scriptString("emit(doc['timestamp'].value.getHour());")
                          )
                      )
                      .type(RuntimeFieldType.Long)
                  )
              )
              .jobId("job-01")
              .modelPlotConfig(m -> m
                  .annotationsEnabled(true)
                  .enabled(true)
              )
              .resultsIndexName("test-job1")
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
    delete:
      tags:
      - ml anomaly
      summary: Delete an anomaly detection job
      description: |
        All job configuration, model state and results are deleted.
        It is not currently possible to delete multiple jobs using wildcards or a
        comma separated list. If you delete a job that has a datafeed, the request
        first tries to delete the datafeed. This behavior is equivalent to calling
        the delete datafeed API with the same timeout and force parameters as the
        delete job request.

        ## Required authorization

        * Cluster privileges: `manage_ml`
      operationId: ml-delete-job
      parameters:
      - in: path
        name: job_id
        description: Identifier for the anomaly detection job.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: force
        description: |-
          Use to forcefully delete an opened job; this method is quicker than
          closing and deleting the job.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: delete_user_annotations
        description: |-
          Specifies whether annotations that have been added by the
          user should be deleted along with any auto-generated annotations when the job is
          reset.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: wait_for_completion
        description: |-
          Specifies whether the request should return immediately or wait until the
          job deletion completes.
        deprecated: false
        schema:
          type: boolean
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
              examples:
                MlDeleteJobResponseExample1:
                  summary: Delete job
                  description: A successful response when deleting an anomaly detection
                    job.
                  value: |-
                    {
                      "acknowledged": true
                    }
                MlDeleteJobResponseExample2:
                  summary: Delete job asynchronously
                  description: 'A successful response when deleting an anomaly detection
                    job asynchronously. When the `wait_for_completion` query parameter
                    is set to `false`, the response contains an identifier for the
                    job deletion task.

                    '
                  value: |-
                    {
                      "task": "oTUltX4IQMOUUVeiohTt8A:39"
                    }
      x-state: Generally available; Added in 5.4.0
      x-codeSamples:
      - lang: Console
        source: 'DELETE _ml/anomaly_detectors/total-requests

          '
      - lang: Python
        source: |-
          resp = client.ml.delete_job(
              job_id="total-requests",
          )
      - lang: JavaScript
        source: |-
          const response = await client.ml.deleteJob({
            job_id: "total-requests",
          });
      - lang: Ruby
        source: |-
          response = client.ml.delete_job(
            job_id: "total-requests"
          )
      - lang: PHP
        source: |-
          $resp = $client->ml()->deleteJob([
              "job_id" => "total-requests",
          ]);
      - lang: curl
        source: 'curl -X DELETE -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_ml/anomaly_detectors/total-requests"'
      - lang: Java
        source: |
          client.ml().deleteJob(d -> d
              .jobId("total-requests")
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_ml/anomaly_detectors/{job_id}/model_snapshots/{snapshot_id}":
    post:
      tags:
      - ml anomaly
      summary: 'Get model snapshots info

        '
      description: |
        **All methods and paths for this operation:**

        <div>
                              <span class="operation-verb get">GET</span>
                              <span class="operation-path">/_ml/anomaly_detectors/{job_id}/model_snapshots</span>
                              </div>
                            <div>
                              <span class="operation-verb post">POST</span>
                              <span class="operation-path">/_ml/anomaly_detectors/{job_id}/model_snapshots</span>
                              </div>
                            <div>
                              <span class="operation-verb get">GET</span>
                              <span class="operation-path">/_ml/anomaly_detectors/{job_id}/model_snapshots/{snapshot_id}</span>
                              </div>
                            <div>
                              <span class="operation-verb post">POST</span>
                              <span class="operation-path">/_ml/anomaly_detectors/{job_id}/model_snapshots/{snapshot_id}</span>
                              </div>

        ## Required authorization

        * Cluster privileges: `monitor_ml`
      operationId: ml-get-model-snapshots
      parameters:
      - "$ref": "#/components/parameters/ml.get_model_snapshots-job_id"
      - "$ref": "#/components/parameters/ml.get_model_snapshots-snapshot_id"
      - "$ref": "#/components/parameters/ml.get_model_snapshots-desc"
      - "$ref": "#/components/parameters/ml.get_model_snapshots-end"
      - "$ref": "#/components/parameters/ml.get_model_snapshots-from"
      - "$ref": "#/components/parameters/ml.get_model_snapshots-size"
      - "$ref": "#/components/parameters/ml.get_model_snapshots-sort"
      - "$ref": "#/components/parameters/ml.get_model_snapshots-start"
      requestBody:
        "$ref": "#/components/requestBodies/ml.get_model_snapshots"
      responses:
        '200':
          "$ref": "#/components/responses/ml.get_model_snapshots-200"
      x-state: Generally available; Added in 5.4.0
      x-codeSamples:
      - lang: Console
        source: |-
          GET _ml/anomaly_detectors/high_sum_total_sales/model_snapshots
          {
            "start": "1575402236000"
          }
      - lang: Python
        source: |-
          resp = client.ml.get_model_snapshots(
              job_id="high_sum_total_sales",
              start="1575402236000",
          )
      - lang: JavaScript
        source: |-
          const response = await client.ml.getModelSnapshots({
            job_id: "high_sum_total_sales",
            start: 1575402236000,
          });
      - lang: Ruby
        source: |-
          response = client.ml.get_model_snapshots(
            job_id: "high_sum_total_sales",
            body: {
              "start": "1575402236000"
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->ml()->getModelSnapshots([
              "job_id" => "high_sum_total_sales",
              "body" => [
                  "start" => "1575402236000",
              ],
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"start":"1575402236000"}'' "$ELASTICSEARCH_URL/_ml/anomaly_detectors/high_sum_total_sales/model_snapshots"'
      - lang: Java
        source: |
          client.ml().getModelSnapshots(g -> g
              .jobId("high_sum_total_sales")
              .start(DateTime.of("1575402236000"))
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
    delete:
      tags:
      - ml anomaly
      summary: Delete a model snapshot
      description: |
        You cannot delete the active model snapshot. To delete that snapshot, first
        revert to a different one. To identify the active model snapshot, refer to
        the `model_snapshot_id` in the results from the get jobs API.

        ## Required authorization

        * Cluster privileges: `manage_ml`
      operationId: ml-delete-model-snapshot
      parameters:
      - in: path
        name: job_id
        description: Identifier for the anomaly detection job.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: path
        name: snapshot_id
        description: Identifier for the model snapshot.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
              examples:
                MlDeleteModelSnapshotResponseExample1:
                  description: A successful response when deleting an existing model
                    snapshot.
                  value: |-
                    {
                      "acknowledged": true
                    }
      x-state: Generally available; Added in 5.4.0
      x-codeSamples:
      - lang: Console
        source: 'DELETE _ml/anomaly_detectors/farequote/model_snapshots/1491948163

          '
      - lang: Python
        source: |-
          resp = client.ml.delete_model_snapshot(
              job_id="farequote",
              snapshot_id="1491948163",
          )
      - lang: JavaScript
        source: |-
          const response = await client.ml.deleteModelSnapshot({
            job_id: "farequote",
            snapshot_id: 1491948163,
          });
      - lang: Ruby
        source: |-
          response = client.ml.delete_model_snapshot(
            job_id: "farequote",
            snapshot_id: "1491948163"
          )
      - lang: PHP
        source: |-
          $resp = $client->ml()->deleteModelSnapshot([
              "job_id" => "farequote",
              "snapshot_id" => "1491948163",
          ]);
      - lang: curl
        source: 'curl -X DELETE -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_ml/anomaly_detectors/farequote/model_snapshots/1491948163"'
      - lang: Java
        source: |
          client.ml().deleteModelSnapshot(d -> d
              .jobId("farequote")
              .snapshotId("1491948163")
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_ml/trained_models/{model_id}":
    get:
      tags:
      - ml trained model
      summary: 'Get trained model configuration info

        '
      description: |
        **All methods and paths for this operation:**

        <div>
                              <span class="operation-verb get">GET</span>
                              <span class="operation-path">/_ml/trained_models</span>
                              </div>
                            <div>
                              <span class="operation-verb get">GET</span>
                              <span class="operation-path">/_ml/trained_models/{model_id}</span>
                              </div>

        ## Required authorization

        * Cluster privileges: `monitor_ml`
      operationId: ml-get-trained-models
      parameters:
      - "$ref": "#/components/parameters/ml.get_trained_models-model_id"
      - "$ref": "#/components/parameters/ml.get_trained_models-allow_no_match"
      - "$ref": "#/components/parameters/ml.get_trained_models-decompress_definition"
      - "$ref": "#/components/parameters/ml.get_trained_models-exclude_generated"
      - "$ref": "#/components/parameters/ml.get_trained_models-from"
      - "$ref": "#/components/parameters/ml.get_trained_models-include"
      - "$ref": "#/components/parameters/ml.get_trained_models-size"
      - "$ref": "#/components/parameters/ml.get_trained_models-tags"
      responses:
        '200':
          "$ref": "#/components/responses/ml.get_trained_models-200"
      x-state: Generally available; Added in 7.10.0
      x-codeSamples:
      - lang: Console
        source: 'GET _ml/trained_models/

          '
      - lang: Python
        source: resp = client.ml.get_trained_models()
      - lang: JavaScript
        source: const response = await client.ml.getTrainedModels();
      - lang: Ruby
        source: response = client.ml.get_trained_models
      - lang: PHP
        source: "$resp = $client->ml()->getTrainedModels();"
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_ml/trained_models/"'
      - lang: Java
        source: 'client.ml().getTrainedModels(g -> g);

          '
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
    put:
      tags:
      - ml trained model
      summary: Create a trained model
      description: |
        Enable you to supply a trained model that is not created by data frame analytics.

        ## Required authorization

        * Cluster privileges: `manage_ml`
      operationId: ml-put-trained-model
      parameters:
      - in: path
        name: model_id
        description: The unique identifier of the trained model.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: defer_definition_decompression
        description: |-
          If set to `true` and a `compressed_definition` is provided,
          the request defers definition decompression and skips relevant
          validations.
        deprecated: false
        schema:
          type: boolean
        x-state: Generally available; Added in 8.0.0
        style: form
      - in: query
        name: wait_for_completion
        description: |-
          Whether to wait for all child operations (e.g. model download)
          to complete.
        deprecated: false
        schema:
          type: boolean
        x-state: Generally available; Added in 8.8.0
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                compressed_definition:
                  description: |-
                    The compressed (GZipped and Base64 encoded) inference definition of the
                    model. If compressed_definition is specified, then definition cannot be
                    specified.
                  type: string
                definition:
                  description: |-
                    The inference definition for the model. If definition is specified, then
                    compressed_definition cannot be specified.
                  allOf:
                  - "$ref": "#/components/schemas/ml.put_trained_model.Definition"
                description:
                  description: A human-readable description of the inference trained
                    model.
                  type: string
                inference_config:
                  description: |-
                    The default configuration for inference. This can be either a regression
                    or classification configuration. It must match the underlying
                    definition.trained_model's target_type. For pre-packaged models such as
                    ELSER the config is not required.
                  allOf:
                  - "$ref": "#/components/schemas/ml._types.InferenceConfigCreateContainer"
                input:
                  description: The input field names for the model definition.
                  allOf:
                  - "$ref": "#/components/schemas/ml.put_trained_model.Input"
                metadata:
                  description: An object map that contains metadata about the model.
                  type: object
                model_type:
                  description: |+
                    The model type.

                    Supported values include:
                      - `tree_ensemble`: The model definition is an ensemble model of decision trees.
                      - `lang_ident`: A special type reserved for language identification models.
                      - `pytorch`: The stored definition is a PyTorch (specifically a TorchScript) model.
                    Currently only NLP models are supported.

                  default: tree_ensemble
                  allOf:
                  - "$ref": "#/components/schemas/ml._types.TrainedModelType"
                model_size_bytes:
                  description: |-
                    The estimated memory usage in bytes to keep the trained model in memory.
                    This property is supported only if defer_definition_decompression is true
                    or the model definition is not supplied.
                  type: number
                platform_architecture:
                  description: |-
                    The platform architecture (if applicable) of the trained mode. If the model
                    only works on one platform, because it is heavily optimized for a particular
                    processor architecture and OS combination, then this field specifies which.
                    The format of the string must match the platform identifiers used by Elasticsearch,
                    so one of, `linux-x86_64`, `linux-aarch64`, `darwin-x86_64`, `darwin-aarch64`,
                    or `windows-x86_64`. For portable models (those that work independent of processor
                    architecture or OS features), leave this field unset.
                  type: string
                tags:
                  description: An array of tags to organize the model.
                  type: array
                  items:
                    type: string
                prefix_strings:
                  description: Optional prefix strings applied at inference
                  x-state: Generally available; Added in 8.12.0
                  allOf:
                  - "$ref": "#/components/schemas/ml._types.TrainedModelPrefixStrings"
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/ml._types.TrainedModelConfig"
      x-state: Generally available; Added in 7.10.0
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
    delete:
      tags:
      - ml trained model
      summary: Delete an unreferenced trained model
      description: |
        The request deletes a trained inference model that is not referenced by an ingest pipeline.

        ## Required authorization

        * Cluster privileges: `manage_ml`
      operationId: ml-delete-trained-model
      parameters:
      - in: path
        name: model_id
        description: The unique identifier of the trained model.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: force
        description: Forcefully deletes a trained model that is referenced by ingest
          pipelines or has a started deployment.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: timeout
        description: Period to wait for a response. If no response is received before
          the timeout expires, the request fails and returns an error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
              examples:
                MlDeleteTrainedModelResponseExample1:
                  description: A successful response when deleting an existing trained
                    inference model.
                  value: |-
                    {
                      "acknowledged": true
                    }
      x-state: Generally available; Added in 7.10.0
      x-codeSamples:
      - lang: Console
        source: 'DELETE _ml/trained_models/regression-job-one-1574775307356

          '
      - lang: Python
        source: |-
          resp = client.ml.delete_trained_model(
              model_id="regression-job-one-1574775307356",
          )
      - lang: JavaScript
        source: |-
          const response = await client.ml.deleteTrainedModel({
            model_id: "regression-job-one-1574775307356",
          });
      - lang: Ruby
        source: |-
          response = client.ml.delete_trained_model(
            model_id: "regression-job-one-1574775307356"
          )
      - lang: PHP
        source: |-
          $resp = $client->ml()->deleteTrainedModel([
              "model_id" => "regression-job-one-1574775307356",
          ]);
      - lang: curl
        source: 'curl -X DELETE -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_ml/trained_models/regression-job-one-1574775307356"'
      - lang: Java
        source: |
          client.ml().deleteTrainedModel(d -> d
              .modelId("regression-job-one-1574775307356")
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_ml/trained_models/{model_id}/model_aliases/{model_alias}":
    put:
      tags:
      - ml trained model
      summary: Create or update a trained model alias
      description: |
        A trained model alias is a logical name used to reference a single trained
        model.
        You can use aliases instead of trained model identifiers to make it easier to
        reference your models. For example, you can use aliases in inference
        aggregations and processors.
        An alias must be unique and refer to only a single trained model. However,
        you can have multiple aliases for each trained model.
        If you use this API to update an alias such that it references a different
        trained model ID and the model uses a different type of data frame analytics,
        an error occurs. For example, this situation occurs if you have a trained
        model for regression analysis and a trained model for classification
        analysis; you cannot reassign an alias from one type of trained model to
        another.
        If you use this API to update an alias and there are very few input fields in
        common between the old and new trained models for the model alias, the API
        returns a warning.

        ## Required authorization

        * Cluster privileges: `manage_ml`
      operationId: ml-put-trained-model-alias
      parameters:
      - in: path
        name: model_id
        description: The identifier for the trained model that the alias refers to.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: path
        name: model_alias
        description: The alias to create or update. This value cannot end in numbers.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Name"
        style: simple
      - in: query
        name: reassign
        description: |-
          Specifies whether the alias gets reassigned to the specified trained
          model if it is already assigned to a different model. If the alias is
          already assigned and this parameter is false, the API returns an error.
        deprecated: false
        schema:
          type: boolean
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
      x-state: Generally available; Added in 7.13.0
      x-codeSamples:
      - lang: Console
        source: 'PUT _ml/trained_models/flight-delay-prediction-1574775339910/model_aliases/flight_delay_model

          '
      - lang: Python
        source: |-
          resp = client.ml.put_trained_model_alias(
              model_id="flight-delay-prediction-1574775339910",
              model_alias="flight_delay_model",
          )
      - lang: JavaScript
        source: |-
          const response = await client.ml.putTrainedModelAlias({
            model_id: "flight-delay-prediction-1574775339910",
            model_alias: "flight_delay_model",
          });
      - lang: Ruby
        source: |-
          response = client.ml.put_trained_model_alias(
            model_id: "flight-delay-prediction-1574775339910",
            model_alias: "flight_delay_model"
          )
      - lang: PHP
        source: |-
          $resp = $client->ml()->putTrainedModelAlias([
              "model_id" => "flight-delay-prediction-1574775339910",
              "model_alias" => "flight_delay_model",
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_ml/trained_models/flight-delay-prediction-1574775339910/model_aliases/flight_delay_model"'
      - lang: Java
        source: |
          client.ml().putTrainedModelAlias(p -> p
              .modelAlias("flight_delay_model")
              .modelId("flight-delay-prediction-1574775339910")
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
    delete:
      tags:
      - ml trained model
      summary: Delete a trained model alias
      description: |
        This API deletes an existing model alias that refers to a trained model. If
        the model alias is missing or refers to a model other than the one identified
        by the `model_id`, this API returns an error.

        ## Required authorization

        * Cluster privileges: `manage_ml`
      operationId: ml-delete-trained-model-alias
      parameters:
      - in: path
        name: model_id
        description: The trained model ID to which the model alias refers.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: path
        name: model_alias
        description: The model alias to delete.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Name"
        style: simple
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
              examples:
                MlDeleteTrainedModelAliasResponseExample1:
                  description: A successful response when deleting a trained model
                    alias.
                  value: |-
                    {
                      "acknowledged": true
                    }
      x-state: Generally available; Added in 7.13.0
      x-codeSamples:
      - lang: Console
        source: 'DELETE _ml/trained_models/flight-delay-prediction-1574775339910/model_aliases/flight_delay_model

          '
      - lang: Python
        source: |-
          resp = client.ml.delete_trained_model_alias(
              model_id="flight-delay-prediction-1574775339910",
              model_alias="flight_delay_model",
          )
      - lang: JavaScript
        source: |-
          const response = await client.ml.deleteTrainedModelAlias({
            model_id: "flight-delay-prediction-1574775339910",
            model_alias: "flight_delay_model",
          });
      - lang: Ruby
        source: |-
          response = client.ml.delete_trained_model_alias(
            model_id: "flight-delay-prediction-1574775339910",
            model_alias: "flight_delay_model"
          )
      - lang: PHP
        source: |-
          $resp = $client->ml()->deleteTrainedModelAlias([
              "model_id" => "flight-delay-prediction-1574775339910",
              "model_alias" => "flight_delay_model",
          ]);
      - lang: curl
        source: 'curl -X DELETE -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_ml/trained_models/flight-delay-prediction-1574775339910/model_aliases/flight_delay_model"'
      - lang: Java
        source: |
          client.ml().deleteTrainedModelAlias(d -> d
              .modelAlias("flight_delay_model")
              .modelId("flight-delay-prediction-1574775339910")
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_ml/anomaly_detectors/_estimate_model_memory":
    post:
      tags:
      - ml anomaly
      summary: Estimate job model memory usage
      description: |
        Make an estimation of the memory usage for an anomaly detection job model.
        The estimate is based on analysis configuration details for the job and cardinality
        estimates for the fields it references.

        ## Required authorization

        * Cluster privileges: `manage_ml`
      operationId: ml-estimate-model-memory
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                analysis_config:
                  description: |-
                    For a list of the properties that you can specify in the
                    `analysis_config` component of the body of this API.
                  allOf:
                  - "$ref": "#/components/schemas/ml._types.AnalysisConfig"
                max_bucket_cardinality:
                  description: |-
                    Estimates of the highest cardinality in a single bucket that is observed
                    for influencer fields over the time period that the job analyzes data.
                    To produce a good answer, values must be provided for all influencer
                    fields. Providing values for fields that are not listed as `influencers`
                    has no effect on the estimation.
                  type: object
                  additionalProperties:
                    type: number
                overall_cardinality:
                  description: |-
                    Estimates of the cardinality that is observed for fields over the whole
                    time period that the job analyzes data. To produce a good answer, values
                    must be provided for fields referenced in the `by_field_name`,
                    `over_field_name` and `partition_field_name` of any detectors. Providing
                    values for other fields has no effect on the estimation. It can be
                    omitted from the request if no detectors have a `by_field_name`,
                    `over_field_name` or `partition_field_name`.
                  type: object
                  additionalProperties:
                    type: number
            examples:
              MlEstimateModelMemoryRequestExample1:
                description: Run `POST _ml/anomaly_detectors/_estimate_model_memory`
                  to estimate the model memory limit based on the analysis configuration
                  details provided in the request body.
                value: |-
                  {
                    "analysis_config": {
                      "bucket_span": "5m",
                      "detectors": [
                        {
                          "function": "sum",
                          "field_name": "bytes",
                          "by_field_name": "status",
                          "partition_field_name": "app"
                        }
                      ],
                      "influencers": [
                        "source_ip",
                        "dest_ip"
                      ]
                    },
                    "overall_cardinality": {
                      "status": 10,
                      "app": 50
                    },
                    "max_bucket_cardinality": {
                      "source_ip": 300,
                      "dest_ip": 30
                    }
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  model_memory_estimate:
                    type: string
                required:
                - model_memory_estimate
              examples:
                MlEstimateModelMemoryResponseExample1:
                  description: A successful response from `POST _ml/anomaly_detectors/_estimate_model_memory`.
                  value: |-
                    {
                      "model_memory_estimate": "21mb"
                    }
      x-state: Generally available; Added in 7.7.0
      x-codeSamples:
      - lang: Console
        source: |-
          POST _ml/anomaly_detectors/_estimate_model_memory
          {
            "analysis_config": {
              "bucket_span": "5m",
              "detectors": [
                {
                  "function": "sum",
                  "field_name": "bytes",
                  "by_field_name": "status",
                  "partition_field_name": "app"
                }
              ],
              "influencers": [
                "source_ip",
                "dest_ip"
              ]
            },
            "overall_cardinality": {
              "status": 10,
              "app": 50
            },
            "max_bucket_cardinality": {
              "source_ip": 300,
              "dest_ip": 30
            }
          }
      - lang: Python
        source: |-
          resp = client.ml.estimate_model_memory(
              analysis_config={
                  "bucket_span": "5m",
                  "detectors": [
                      {
                          "function": "sum",
                          "field_name": "bytes",
                          "by_field_name": "status",
                          "partition_field_name": "app"
                      }
                  ],
                  "influencers": [
                      "source_ip",
                      "dest_ip"
                  ]
              },
              overall_cardinality={
                  "status": 10,
                  "app": 50
              },
              max_bucket_cardinality={
                  "source_ip": 300,
                  "dest_ip": 30
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.ml.estimateModelMemory({
            analysis_config: {
              bucket_span: "5m",
              detectors: [
                {
                  function: "sum",
                  field_name: "bytes",
                  by_field_name: "status",
                  partition_field_name: "app",
                },
              ],
              influencers: ["source_ip", "dest_ip"],
            },
            overall_cardinality: {
              status: 10,
              app: 50,
            },
            max_bucket_cardinality: {
              source_ip: 300,
              dest_ip: 30,
            },
          });
      - lang: Ruby
        source: |-
          response = client.ml.estimate_model_memory(
            body: {
              "analysis_config": {
                "bucket_span": "5m",
                "detectors": [
                  {
                    "function": "sum",
                    "field_name": "bytes",
                    "by_field_name": "status",
                    "partition_field_name": "app"
                  }
                ],
                "influencers": [
                  "source_ip",
                  "dest_ip"
                ]
              },
              "overall_cardinality": {
                "status": 10,
                "app": 50
              },
              "max_bucket_cardinality": {
                "source_ip": 300,
                "dest_ip": 30
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->ml()->estimateModelMemory([
              "body" => [
                  "analysis_config" => [
                      "bucket_span" => "5m",
                      "detectors" => array(
                          [
                              "function" => "sum",
                              "field_name" => "bytes",
                              "by_field_name" => "status",
                              "partition_field_name" => "app",
                          ],
                      ),
                      "influencers" => array(
                          "source_ip",
                          "dest_ip",
                      ),
                  ],
                  "overall_cardinality" => [
                      "status" => 10,
                      "app" => 50,
                  ],
                  "max_bucket_cardinality" => [
                      "source_ip" => 300,
                      "dest_ip" => 30,
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"analysis_config":{"bucket_span":"5m","detectors":[{"function":"sum","field_name":"bytes","by_field_name":"status","partition_field_name":"app"}],"influencers":["source_ip","dest_ip"]},"overall_cardinality":{"status":10,"app":50},"max_bucket_cardinality":{"source_ip":300,"dest_ip":30}}''
          "$ELASTICSEARCH_URL/_ml/anomaly_detectors/_estimate_model_memory"'
      - lang: Java
        source: |
          client.ml().estimateModelMemory(e -> e
              .analysisConfig(a -> a
                  .bucketSpan(b -> b
                      .time("5m")
                  )
                  .detectors(d -> d
                      .byFieldName("status")
                      .fieldName("bytes")
                      .function("sum")
                      .partitionFieldName("app")
                  )
                  .influencers(List.of("source_ip","dest_ip"))
              )
              .maxBucketCardinality(Map.of("dest_ip", 30L,"source_ip", 300L))
              .overallCardinality(Map.of("app", 50L,"status", 10L))
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_ml/data_frame/_evaluate":
    post:
      tags:
      - ml data frame
      summary: Evaluate data frame analytics
      description: |
        The API packages together commonly used evaluation metrics for various types
        of machine learning features. This has been designed for use on indexes
        created by data frame analytics. Evaluation requires both a ground truth
        field and an analytics result field to be present.

        ## Required authorization

        * Cluster privileges: `monitor_ml`
      operationId: ml-evaluate-data-frame
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                evaluation:
                  description: Defines the type of evaluation you want to perform.
                  allOf:
                  - "$ref": "#/components/schemas/ml._types.DataframeEvaluationContainer"
                index:
                  description: Defines the `index` in which the evaluation will be
                    performed.
                  allOf:
                  - "$ref": "#/components/schemas/_types.IndexName"
                query:
                  description: A query clause that retrieves a subset of data from
                    the source index.
                  allOf:
                  - "$ref": "#/components/schemas/_types.query_dsl.QueryContainer"
              required:
              - evaluation
              - index
            examples:
              MlEvaluateDataFrameRequestExample1:
                summary: Classification example 1
                description: 'Run `POST _ml/data_frame/_evaluate` to evaluate a a
                  classification job for an annotated index. The `actual_field` contains
                  the ground truth for classification. The `predicted_field` contains
                  the predicted value calculated by the classification analysis.

                  '
                value: |-
                  {
                    "index": "animal_classification",
                    "evaluation": {
                      "classification": {
                        "actual_field": "animal_class",
                        "predicted_field": "ml.animal_class_prediction",
                        "metrics": {
                          "multiclass_confusion_matrix": {}
                        }
                      }
                    }
                  }
              MlEvaluateDataFrameRequestExample2:
                summary: Classification example 2
                description: 'Run `POST _ml/data_frame/_evaluate` to evaluate a classification
                  job with AUC ROC metrics for an annotated index. The `actual_field`
                  contains the ground truth value for the actual animal classification.
                  This is required in order to evaluate results. The `class_name`
                  specifies the class name that is treated as positive during the
                  evaluation, all the other classes are treated as negative.

                  '
                value: |-
                  {
                    "index": "animal_classification",
                    "evaluation": {
                      "classification": {
                        "actual_field": "animal_class",
                        "metrics": {
                          "auc_roc": {
                            "class_name": "dog"
                          }
                        }
                      }
                    }
                  }
              MlEvaluateDataFrameRequestExample3:
                summary: Outlier detection
                description: 'Run `POST _ml/data_frame/_evaluate` to evaluate an outlier
                  detection job for an annotated index.

                  '
                value: |-
                  {
                    "index": "my_analytics_dest_index",
                    "evaluation": {
                      "outlier_detection": {
                        "actual_field": "is_outlier",
                        "predicted_probability_field": "ml.outlier_score"
                      }
                    }
                  }
              MlEvaluateDataFrameRequestExample4:
                summary: Regression example 1
                description: 'Run `POST _ml/data_frame/_evaluate` to evaluate the
                  testing error of a regression job for an annotated index. The term
                  query in the body limits evaluation to be performed on the test
                  split only. The `actual_field` contains the ground truth for house
                  prices. The `predicted_field` contains the house price calculated
                  by the regression analysis.

                  '
                value: |-
                  {
                    "index": "house_price_predictions",
                    "query": {
                      "bool": {
                        "filter": [
                          {
                            "term": {
                              "ml.is_training": false
                            }
                          }
                        ]
                      }
                    },
                    "evaluation": {
                      "regression": {
                        "actual_field": "price",
                        "predicted_field": "ml.price_prediction",
                        "metrics": {
                          "r_squared": {},
                          "mse": {},
                          "msle": {
                            "offset": 10
                          },
                          "huber": {
                            "delta": 1.5
                          }
                        }
                      }
                    }
                  }
              MlEvaluateDataFrameRequestExample5:
                summary: Regression example 2
                description: 'Run `POST _ml/data_frame/_evaluate` to evaluate the
                  training error of a regression job for an annotated index. The term
                  query in the body limits evaluation to be performed on the training
                  split only. The `actual_field` contains the ground truth for house
                  prices. The `predicted_field` contains the house price calculated
                  by the regression analysis.

                  '
                value: |-
                  {
                    "index": "house_price_predictions",
                    "query": {
                      "term": {
                        "ml.is_training": {
                          "value": true
                        }
                      }
                    },
                    "evaluation": {
                      "regression": {
                        "actual_field": "price",
                        "predicted_field": "ml.price_prediction",
                        "metrics": {
                          "r_squared": {},
                          "mse": {},
                          "msle": {},
                          "huber": {}
                        }
                      }
                    }
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  classification:
                    description: |-
                      Evaluation results for a classification analysis.
                      It outputs a prediction that identifies to which of the classes each document belongs.
                    allOf:
                    - "$ref": "#/components/schemas/ml.evaluate_data_frame.DataframeClassificationSummary"
                  outlier_detection:
                    description: |-
                      Evaluation results for an outlier detection analysis.
                      It outputs the probability that each document is an outlier.
                    allOf:
                    - "$ref": "#/components/schemas/ml.evaluate_data_frame.DataframeOutlierDetectionSummary"
                  regression:
                    description: Evaluation results for a regression analysis which
                      outputs a prediction of values.
                    allOf:
                    - "$ref": "#/components/schemas/ml.evaluate_data_frame.DataframeRegressionSummary"
              examples:
                MlEvaluateDataFrameResponseExample1:
                  summary: Classification example 1
                  description: 'A succesful response from `POST _ml/data_frame/_evaluate`
                    to evaluate a classification analysis job for an annotated index.
                    The `actual_class` contains the name of the class the analysis
                    tried to predict. The `actual_class_doc_count` is the number of
                    documents in the index belonging to the `actual_class`. The `predicted_classes`
                    object contains the list of the predicted classes and the number
                    of predictions associated with the class.

                    '
                  value: |-
                    {
                      "classification": {
                        "multiclass_confusion_matrix": {
                          "confusion_matrix": [
                            {
                              "actual_class": "cat",
                              "actual_class_doc_count": 12,
                              "predicted_classes": [
                                {
                                  "predicted_class": "cat",
                                  "count": 12
                                },
                                {
                                  "predicted_class": "dog",
                                  "count": 0
                                }
                              ],
                              "other_predicted_class_doc_count": 0
                            },
                            {
                              "actual_class": "dog",
                              "actual_class_doc_count": 11,
                              "predicted_classes": [
                                {
                                  "predicted_class": "dog",
                                  "count": 7
                                },
                                {
                                  "predicted_class": "cat",
                                  "count": 4
                                }
                              ],
                              "other_predicted_class_doc_count": 0
                            }
                          ],
                          "other_actual_class_count": 0
                        }
                      }
                    }
                MlEvaluateDataFrameResponseExample2:
                  summary: Classification example 2
                  description: 'A succesful response from `POST _ml/data_frame/_evaluate`
                    to evaluate a classification analysis job with the AUC ROC metrics
                    for an annotated index.

                    '
                  value: |-
                    {
                      "classification": {
                        "auc_roc": {
                          "value": 0.8941788639536681
                        }
                      }
                    }
                MlEvaluateDataFrameResponseExample3:
                  summary: Outlier detection
                  description: A successful response from `POST _ml/data_frame/_evaluate`
                    to evaluate an outlier detection job.
                  value: |-
                    {
                      "outlier_detection": {
                        "auc_roc": {
                          "value": 0.9258475774641445
                        },
                        "confusion_matrix": {
                          "0.25": {
                            "tp": 5,
                            "fp": 9,
                            "tn": 204,
                            "fn": 5
                          },
                          "0.5": {
                            "tp": 1,
                            "fp": 5,
                            "tn": 208,
                            "fn": 9
                          },
                          "0.75": {
                            "tp": 0,
                            "fp": 4,
                            "tn": 209,
                            "fn": 10
                          }
                        },
                        "precision": {
                          "0.25": 0.35714285714285715,
                          "0.5": 0.16666666666666666,
                          "0.75": 0
                        },
                        "recall": {
                          "0.25": 0.5,
                          "0.5": 0.1,
                          "0.75": 0
                        }
                      }
                    }
      x-state: Generally available; Added in 7.3.0
      x-codeSamples:
      - lang: Console
        source: |-
          POST _ml/data_frame/_evaluate
          {
            "index": "animal_classification",
            "evaluation": {
              "classification": {
                "actual_field": "animal_class",
                "predicted_field": "ml.animal_class_prediction",
                "metrics": {
                  "multiclass_confusion_matrix": {}
                }
              }
            }
          }
      - lang: Python
        source: |-
          resp = client.ml.evaluate_data_frame(
              index="animal_classification",
              evaluation={
                  "classification": {
                      "actual_field": "animal_class",
                      "predicted_field": "ml.animal_class_prediction",
                      "metrics": {
                          "multiclass_confusion_matrix": {}
                      }
                  }
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.ml.evaluateDataFrame({
            index: "animal_classification",
            evaluation: {
              classification: {
                actual_field: "animal_class",
                predicted_field: "ml.animal_class_prediction",
                metrics: {
                  multiclass_confusion_matrix: {},
                },
              },
            },
          });
      - lang: Ruby
        source: |-
          response = client.ml.evaluate_data_frame(
            body: {
              "index": "animal_classification",
              "evaluation": {
                "classification": {
                  "actual_field": "animal_class",
                  "predicted_field": "ml.animal_class_prediction",
                  "metrics": {
                    "multiclass_confusion_matrix": {}
                  }
                }
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->ml()->evaluateDataFrame([
              "body" => [
                  "index" => "animal_classification",
                  "evaluation" => [
                      "classification" => [
                          "actual_field" => "animal_class",
                          "predicted_field" => "ml.animal_class_prediction",
                          "metrics" => [
                              "multiclass_confusion_matrix" => new ArrayObject([]),
                          ],
                      ],
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"index":"animal_classification","evaluation":{"classification":{"actual_field":"animal_class","predicted_field":"ml.animal_class_prediction","metrics":{"multiclass_confusion_matrix":{}}}}}''
          "$ELASTICSEARCH_URL/_ml/data_frame/_evaluate"'
      - lang: Java
        source: |
          client.ml().evaluateDataFrame(e -> e
              .evaluation(ev -> ev
                  .classification(c -> c
                      .actualField("animal_class")
                      .predictedField("ml.animal_class_prediction")
                      .metrics(m -> m)
                  )
              )
              .index("animal_classification")
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_ml/data_frame/analytics/{id}/_explain":
    post:
      tags:
      - ml data frame
      summary: 'Explain data frame analytics config

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_ml/data_frame/analytics/_explain</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_ml/data_frame/analytics/_explain</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_ml/data_frame/analytics/{id}/_explain</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_ml/data_frame/analytics/{id}/_explain</span>\n
        \                     </div>\n                    \n\nThis API provides explanations
        for a data frame analytics config that either\nexists already or one that
        has not been created yet. The following\nexplanations are provided:\n* which
        fields are included or not in the analysis and why,\n* how much memory is
        estimated to be required. The estimate can be used when deciding the appropriate
        value for model_memory_limit setting later on.\nIf you have object fields
        or fields that are excluded via source filtering, they are not included in
        the explanation.\n\n## Required authorization\n\n* Cluster privileges: `monitor_ml`\n"
      operationId: ml-explain-data-frame-analytics
      parameters:
      - "$ref": "#/components/parameters/ml.explain_data_frame_analytics-id"
      requestBody:
        "$ref": "#/components/requestBodies/ml.explain_data_frame_analytics"
      responses:
        '200':
          "$ref": "#/components/responses/ml.explain_data_frame_analytics-200"
      x-state: Generally available; Added in 7.3.0
      x-codeSamples:
      - lang: Console
        source: |-
          POST _ml/data_frame/analytics/_explain
          {
            "source": {
              "index": "houses_sold_last_10_yrs"
            },
            "analysis": {
              "regression": {
                "dependent_variable": "price"
              }
            }
          }
      - lang: Python
        source: |-
          resp = client.ml.explain_data_frame_analytics(
              source={
                  "index": "houses_sold_last_10_yrs"
              },
              analysis={
                  "regression": {
                      "dependent_variable": "price"
                  }
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.ml.explainDataFrameAnalytics({
            source: {
              index: "houses_sold_last_10_yrs",
            },
            analysis: {
              regression: {
                dependent_variable: "price",
              },
            },
          });
      - lang: Ruby
        source: |-
          response = client.ml.explain_data_frame_analytics(
            body: {
              "source": {
                "index": "houses_sold_last_10_yrs"
              },
              "analysis": {
                "regression": {
                  "dependent_variable": "price"
                }
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->ml()->explainDataFrameAnalytics([
              "body" => [
                  "source" => [
                      "index" => "houses_sold_last_10_yrs",
                  ],
                  "analysis" => [
                      "regression" => [
                          "dependent_variable" => "price",
                      ],
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"source":{"index":"houses_sold_last_10_yrs"},"analysis":{"regression":{"dependent_variable":"price"}}}''
          "$ELASTICSEARCH_URL/_ml/data_frame/analytics/_explain"'
      - lang: Java
        source: |
          client.ml().explainDataFrameAnalytics(e -> e
              .analysis(a -> a
                  .regression(r -> r
                      .dependentVariable("price")
                  )
              )
              .source(s -> s
                  .index("houses_sold_last_10_yrs")
              )
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_ml/anomaly_detectors/{job_id}/_flush":
    post:
      tags:
      - ml anomaly
      summary: Force buffered data to be processed
      description: |
        The flush jobs API is only applicable when sending data for analysis using
        the post data API. Depending on the content of the buffer, then it might
        additionally calculate new results. Both flush and close operations are
        similar, however the flush is more efficient if you are expecting to send
        more data for analysis. When flushing, the job remains open and is available
        to continue analyzing data. A close operation additionally prunes and
        persists the model state to disk and the job must be opened again before
        analyzing further data.

        ## Required authorization

        * Cluster privileges: `manage_ml`
      operationId: ml-flush-job
      parameters:
      - in: path
        name: job_id
        description: Identifier for the anomaly detection job.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: advance_time
        description: |-
          Specifies to advance to a particular time value. Results are generated
          and the model is updated for data from the specified time interval.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.DateTime"
        style: form
      - in: query
        name: calc_interim
        description: |-
          If true, calculates the interim results for the most recent bucket or all
          buckets within the latency period.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: end
        description: |-
          When used in conjunction with `calc_interim` and `start`, specifies the
          range of buckets on which to calculate interim results.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.DateTime"
        style: form
      - in: query
        name: skip_time
        description: |-
          Specifies to skip to a particular time value. Results are not generated
          and the model is not updated for data from the specified time interval.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.DateTime"
        style: form
      - in: query
        name: start
        description: |-
          When used in conjunction with `calc_interim`, specifies the range of
          buckets on which to calculate interim results.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.DateTime"
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                advance_time:
                  description: Refer to the description for the `advance_time` query
                    parameter.
                  allOf:
                  - "$ref": "#/components/schemas/_types.DateTime"
                calc_interim:
                  description: Refer to the description for the `calc_interim` query
                    parameter.
                  type: boolean
                end:
                  description: Refer to the description for the `end` query parameter.
                  allOf:
                  - "$ref": "#/components/schemas/_types.DateTime"
                skip_time:
                  description: Refer to the description for the `skip_time` query
                    parameter.
                  allOf:
                  - "$ref": "#/components/schemas/_types.DateTime"
                start:
                  description: Refer to the description for the `start` query parameter.
                  allOf:
                  - "$ref": "#/components/schemas/_types.DateTime"
            examples:
              MlFlushJobExample1:
                description: An example body for a `POST _ml/anomaly_detectors/low_request_rate/_flush`
                  request.
                value: |-
                  {
                    "calc_interim": true
                  }
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  flushed:
                    type: boolean
                  last_finalized_bucket_end:
                    description: |-
                      Provides the timestamp (in milliseconds since the epoch) of the end of
                      the last bucket that was processed.
                    type: number
                required:
                - flushed
      deprecated: true
      x-state: Generally available; Added in 5.4.0
      x-codeSamples:
      - lang: Console
        source: |-
          POST _ml/anomaly_detectors/low_request_rate/_flush
          {
            "calc_interim": true
          }
      - lang: Python
        source: |-
          resp = client.ml.flush_job(
              job_id="low_request_rate",
              calc_interim=True,
          )
      - lang: JavaScript
        source: |-
          const response = await client.ml.flushJob({
            job_id: "low_request_rate",
            calc_interim: true,
          });
      - lang: Ruby
        source: |-
          response = client.ml.flush_job(
            job_id: "low_request_rate",
            body: {
              "calc_interim": true
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->ml()->flushJob([
              "job_id" => "low_request_rate",
              "body" => [
                  "calc_interim" => true,
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"calc_interim":true}'' "$ELASTICSEARCH_URL/_ml/anomaly_detectors/low_request_rate/_flush"'
      - lang: Java
        source: |
          client.ml().flushJob(f -> f
              .calcInterim(true)
              .jobId("low_request_rate")
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_ml/anomaly_detectors/{job_id}/_forecast":
    post:
      tags:
      - ml anomaly
      summary: Predict future behavior of a time series
      description: |
        Forecasts are not supported for jobs that perform population analysis; an
        error occurs if you try to create a forecast for a job that has an
        `over_field_name` in its configuration. Forcasts predict future behavior
        based on historical data.

        ## Required authorization

        * Cluster privileges: `manage_ml`
      operationId: ml-forecast
      parameters:
      - in: path
        name: job_id
        description: |-
          Identifier for the anomaly detection job. The job must be open when you
          create a forecast; otherwise, an error occurs.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: duration
        description: |-
          A period of time that indicates how far into the future to forecast. For
          example, `30d` corresponds to 30 days. The forecast starts at the last
          record that was processed.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: expires_in
        description: |-
          The period of time that forecast results are retained. After a forecast
          expires, the results are deleted. If set to a value of 0, the forecast is
          never automatically deleted.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: max_model_memory
        description: |-
          The maximum memory the forecast can use. If the forecast needs to use
          more than the provided amount, it will spool to disk. Default is 20mb,
          maximum is 500mb and minimum is 1mb. If set to 40% or more of the job’s
          configured memory limit, it is automatically reduced to below that
          amount.
        deprecated: false
        schema:
          type: string
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                duration:
                  description: Refer to the description for the `duration` query parameter.
                  default: 1d
                  allOf:
                  - "$ref": "#/components/schemas/_types.Duration"
                expires_in:
                  description: Refer to the description for the `expires_in` query
                    parameter.
                  default: 14d
                  allOf:
                  - "$ref": "#/components/schemas/_types.Duration"
                max_model_memory:
                  description: Refer to the description for the `max_model_memory`
                    query parameter.
                  default: 20mb
                  type: string
            examples:
              MlForecastExample1:
                description: An example body for a `POST _ml/anomaly_detectors/low_request_rate/_forecast`
                  request.
                value: |-
                  {
                    "duration": "10d"
                  }
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  acknowledged:
                    type: boolean
                  forecast_id:
                    allOf:
                    - "$ref": "#/components/schemas/_types.Id"
                required:
                - acknowledged
                - forecast_id
      x-state: Generally available; Added in 6.1.0
      x-codeSamples:
      - lang: Console
        source: |-
          POST _ml/anomaly_detectors/low_request_rate/_forecast
          {
            "duration": "10d"
          }
      - lang: Python
        source: |-
          resp = client.ml.forecast(
              job_id="low_request_rate",
              duration="10d",
          )
      - lang: JavaScript
        source: |-
          const response = await client.ml.forecast({
            job_id: "low_request_rate",
            duration: "10d",
          });
      - lang: Ruby
        source: |-
          response = client.ml.forecast(
            job_id: "low_request_rate",
            body: {
              "duration": "10d"
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->ml()->forecast([
              "job_id" => "low_request_rate",
              "body" => [
                  "duration" => "10d",
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"duration":"10d"}'' "$ELASTICSEARCH_URL/_ml/anomaly_detectors/low_request_rate/_forecast"'
      - lang: Java
        source: |
          client.ml().forecast(f -> f
              .duration(d -> d
                  .time("10d")
              )
              .jobId("low_request_rate")
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_ml/anomaly_detectors/{job_id}/results/buckets/{timestamp}":
    post:
      tags:
      - ml anomaly
      summary: 'Get anomaly detection job results for buckets

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_ml/anomaly_detectors/{job_id}/results/buckets</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_ml/anomaly_detectors/{job_id}/results/buckets</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_ml/anomaly_detectors/{job_id}/results/buckets/{timestamp}</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_ml/anomaly_detectors/{job_id}/results/buckets/{timestamp}</span>\n
        \                     </div>\n                    \n\nThe API presents a chronological
        view of the records, grouped by bucket.\n\n## Required authorization\n\n*
        Cluster privileges: `monitor_ml`\n"
      operationId: ml-get-buckets
      parameters:
      - "$ref": "#/components/parameters/ml.get_buckets-job_id"
      - "$ref": "#/components/parameters/ml.get_buckets-timestamp"
      - "$ref": "#/components/parameters/ml.get_buckets-anomaly_score"
      - "$ref": "#/components/parameters/ml.get_buckets-desc"
      - "$ref": "#/components/parameters/ml.get_buckets-end"
      - "$ref": "#/components/parameters/ml.get_buckets-exclude_interim"
      - "$ref": "#/components/parameters/ml.get_buckets-expand"
      - "$ref": "#/components/parameters/ml.get_buckets-from"
      - "$ref": "#/components/parameters/ml.get_buckets-size"
      - "$ref": "#/components/parameters/ml.get_buckets-sort"
      - "$ref": "#/components/parameters/ml.get_buckets-start"
      requestBody:
        "$ref": "#/components/requestBodies/ml.get_buckets"
      responses:
        '200':
          "$ref": "#/components/responses/ml.get_buckets-200"
      x-state: Generally available; Added in 5.4.0
      x-codeSamples:
      - lang: Console
        source: |-
          GET _ml/anomaly_detectors/low_request_rate/results/buckets
          {
            "anomaly_score": 80,
            "start": "1454530200001"
          }
      - lang: Python
        source: |-
          resp = client.ml.get_buckets(
              job_id="low_request_rate",
              anomaly_score=80,
              start="1454530200001",
          )
      - lang: JavaScript
        source: |-
          const response = await client.ml.getBuckets({
            job_id: "low_request_rate",
            anomaly_score: 80,
            start: 1454530200001,
          });
      - lang: Ruby
        source: |-
          response = client.ml.get_buckets(
            job_id: "low_request_rate",
            body: {
              "anomaly_score": 80,
              "start": "1454530200001"
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->ml()->getBuckets([
              "job_id" => "low_request_rate",
              "body" => [
                  "anomaly_score" => 80,
                  "start" => "1454530200001",
              ],
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"anomaly_score":80,"start":"1454530200001"}'' "$ELASTICSEARCH_URL/_ml/anomaly_detectors/low_request_rate/results/buckets"'
      - lang: Java
        source: |
          client.ml().getBuckets(g -> g
              .anomalyScore(80.0D)
              .jobId("low_request_rate")
              .start(DateTime.of("1454530200001"))
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_ml/calendars/{calendar_id}/events":
    get:
      tags:
      - ml anomaly
      summary: Get info about events in calendars
      description: |2


        ## Required authorization

        * Cluster privileges: `monitor_ml`
      operationId: ml-get-calendar-events
      parameters:
      - in: path
        name: calendar_id
        description: A string that uniquely identifies a calendar. You can get information
          for multiple calendars by using a comma-separated list of ids or a wildcard
          expression. You can get information for all calendars by using `_all` or
          `*` or by omitting the calendar identifier.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: end
        description: Specifies to get events with timestamps earlier than this time.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.DateTime"
        style: form
      - in: query
        name: from
        description: Skips the specified number of events.
        deprecated: false
        schema:
          type: number
        style: form
      - in: query
        name: job_id
        description: Specifies to get events for a specific anomaly detection job
          identifier or job group. It must be used with a calendar identifier of `_all`
          or `*`.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: form
      - in: query
        name: size
        description: Specifies the maximum number of events to obtain.
        deprecated: false
        schema:
          type: number
        style: form
      - in: query
        name: start
        description: Specifies to get events with timestamps after this time.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.DateTime"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: number
                  events:
                    type: array
                    items:
                      "$ref": "#/components/schemas/ml._types.CalendarEvent"
                required:
                - count
                - events
      x-state: Generally available; Added in 6.2.0
      x-codeSamples:
      - lang: Console
        source: 'GET _ml/calendars/planned-outages/events

          '
      - lang: Python
        source: |-
          resp = client.ml.get_calendar_events(
              calendar_id="planned-outages",
          )
      - lang: JavaScript
        source: |-
          const response = await client.ml.getCalendarEvents({
            calendar_id: "planned-outages",
          });
      - lang: Ruby
        source: |-
          response = client.ml.get_calendar_events(
            calendar_id: "planned-outages"
          )
      - lang: PHP
        source: |-
          $resp = $client->ml()->getCalendarEvents([
              "calendar_id" => "planned-outages",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_ml/calendars/planned-outages/events"'
      - lang: Java
        source: |
          client.ml().getCalendarEvents(g -> g
              .calendarId("planned-outages")
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
    post:
      tags:
      - ml anomaly
      summary: Add scheduled events to the calendar
      description: |2


        ## Required authorization

        * Cluster privileges: `manage_ml`
      operationId: ml-post-calendar-events
      parameters:
      - in: path
        name: calendar_id
        description: A string that uniquely identifies a calendar.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                events:
                  description: A list of one of more scheduled events. The event’s
                    start and end times can be specified as integer milliseconds since
                    the epoch or as a string in ISO 8601 format.
                  type: array
                  items:
                    "$ref": "#/components/schemas/ml._types.CalendarEvent"
              required:
              - events
            examples:
              MlPostCalendarEventsExample1:
                description: An example body for a `POST _ml/calendars/planned-outages/events`
                  request.
                value: |-
                  {
                    "events" : [
                      {"description": "event 1", "start_time": 1513641600000, "end_time": 1513728000000},
                      {"description": "event 2", "start_time": 1513814400000, "end_time": 1513900800000},
                      {"description": "event 3", "start_time": 1514160000000, "end_time": 1514246400000}
                    ]
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  events:
                    type: array
                    items:
                      "$ref": "#/components/schemas/ml._types.CalendarEvent"
                required:
                - events
      x-state: Generally available; Added in 6.2.0
      x-codeSamples:
      - lang: Console
        source: |-
          POST _ml/calendars/planned-outages/events
          {
            "events" : [
              {"description": "event 1", "start_time": 1513641600000, "end_time": 1513728000000},
              {"description": "event 2", "start_time": 1513814400000, "end_time": 1513900800000},
              {"description": "event 3", "start_time": 1514160000000, "end_time": 1514246400000}
            ]
          }
      - lang: Python
        source: |-
          resp = client.ml.post_calendar_events(
              calendar_id="planned-outages",
              events=[
                  {
                      "description": "event 1",
                      "start_time": 1513641600000,
                      "end_time": 1513728000000
                  },
                  {
                      "description": "event 2",
                      "start_time": 1513814400000,
                      "end_time": 1513900800000
                  },
                  {
                      "description": "event 3",
                      "start_time": 1514160000000,
                      "end_time": 1514246400000
                  }
              ],
          )
      - lang: JavaScript
        source: |-
          const response = await client.ml.postCalendarEvents({
            calendar_id: "planned-outages",
            events: [
              {
                description: "event 1",
                start_time: 1513641600000,
                end_time: 1513728000000,
              },
              {
                description: "event 2",
                start_time: 1513814400000,
                end_time: 1513900800000,
              },
              {
                description: "event 3",
                start_time: 1514160000000,
                end_time: 1514246400000,
              },
            ],
          });
      - lang: Ruby
        source: |-
          response = client.ml.post_calendar_events(
            calendar_id: "planned-outages",
            body: {
              "events": [
                {
                  "description": "event 1",
                  "start_time": 1513641600000,
                  "end_time": 1513728000000
                },
                {
                  "description": "event 2",
                  "start_time": 1513814400000,
                  "end_time": 1513900800000
                },
                {
                  "description": "event 3",
                  "start_time": 1514160000000,
                  "end_time": 1514246400000
                }
              ]
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->ml()->postCalendarEvents([
              "calendar_id" => "planned-outages",
              "body" => [
                  "events" => array(
                      [
                          "description" => "event 1",
                          "start_time" => 1513641600000,
                          "end_time" => 1513728000000,
                      ],
                      [
                          "description" => "event 2",
                          "start_time" => 1513814400000,
                          "end_time" => 1513900800000,
                      ],
                      [
                          "description" => "event 3",
                          "start_time" => 1514160000000,
                          "end_time" => 1514246400000,
                      ],
                  ),
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"events":[{"description":"event 1","start_time":1513641600000,"end_time":1513728000000},{"description":"event
          2","start_time":1513814400000,"end_time":1513900800000},{"description":"event
          3","start_time":1514160000000,"end_time":1514246400000}]}'' "$ELASTICSEARCH_URL/_ml/calendars/planned-outages/events"'
      - lang: Java
        source: |
          client.ml().postCalendarEvents(p -> p
              .calendarId("planned-outages")
              .events(List.of(CalendarEvent.of(c -> c
                      .description("event 1")
                      .endTime(DateTime.ofEpochMilli(1513728000000L))
                      .startTime(DateTime.ofEpochMilli(1513641600000L))
                  ),CalendarEvent.of(c -> c
                      .description("event 2")
                      .endTime(DateTime.ofEpochMilli(1513900800000L))
                      .startTime(DateTime.ofEpochMilli(1513814400000L))
                  ),CalendarEvent.of(c -> c
                      .description("event 3")
                      .endTime(DateTime.ofEpochMilli(1514246400000L))
                      .startTime(DateTime.ofEpochMilli(1514160000000L))
                  )))
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_ml/anomaly_detectors/{job_id}/results/categories/{category_id}":
    post:
      tags:
      - ml anomaly
      summary: 'Get anomaly detection job results for categories

        '
      description: |
        **All methods and paths for this operation:**

        <div>
                              <span class="operation-verb get">GET</span>
                              <span class="operation-path">/_ml/anomaly_detectors/{job_id}/results/categories</span>
                              </div>
                            <div>
                              <span class="operation-verb post">POST</span>
                              <span class="operation-path">/_ml/anomaly_detectors/{job_id}/results/categories</span>
                              </div>
                            <div>
                              <span class="operation-verb get">GET</span>
                              <span class="operation-path">/_ml/anomaly_detectors/{job_id}/results/categories/{category_id}</span>
                              </div>
                            <div>
                              <span class="operation-verb post">POST</span>
                              <span class="operation-path">/_ml/anomaly_detectors/{job_id}/results/categories/{category_id}</span>
                              </div>

        ## Required authorization

        * Cluster privileges: `monitor_ml`
      operationId: ml-get-categories
      parameters:
      - "$ref": "#/components/parameters/ml.get_categories-job_id"
      - "$ref": "#/components/parameters/ml.get_categories-category_id"
      - "$ref": "#/components/parameters/ml.get_categories-from"
      - "$ref": "#/components/parameters/ml.get_categories-partition_field_value"
      - "$ref": "#/components/parameters/ml.get_categories-size"
      requestBody:
        "$ref": "#/components/requestBodies/ml.get_categories"
      responses:
        '200':
          "$ref": "#/components/responses/ml.get_categories-200"
      x-state: Generally available; Added in 5.4.0
      x-codeSamples:
      - lang: Console
        source: |-
          GET _ml/anomaly_detectors/esxi_log/results/categories
          {
            "page":{
              "size": 1
            }
          }
      - lang: Python
        source: |-
          resp = client.ml.get_categories(
              job_id="esxi_log",
              page={
                  "size": 1
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.ml.getCategories({
            job_id: "esxi_log",
            page: {
              size: 1,
            },
          });
      - lang: Ruby
        source: |-
          response = client.ml.get_categories(
            job_id: "esxi_log",
            body: {
              "page": {
                "size": 1
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->ml()->getCategories([
              "job_id" => "esxi_log",
              "body" => [
                  "page" => [
                      "size" => 1,
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"page":{"size":1}}'' "$ELASTICSEARCH_URL/_ml/anomaly_detectors/esxi_log/results/categories"'
      - lang: Java
        source: |
          client.ml().getCategories(g -> g
              .jobId("esxi_log")
              .page(p -> p
                  .size(1)
              )
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_ml/data_frame/analytics/{id}/_stats":
    get:
      tags:
      - ml data frame
      summary: 'Get data frame analytics job stats

        '
      description: |
        **All methods and paths for this operation:**

        <div>
                              <span class="operation-verb get">GET</span>
                              <span class="operation-path">/_ml/data_frame/analytics/_stats</span>
                              </div>
                            <div>
                              <span class="operation-verb get">GET</span>
                              <span class="operation-path">/_ml/data_frame/analytics/{id}/_stats</span>
                              </div>

        ## Required authorization

        * Cluster privileges: `monitor_ml`
      operationId: ml-get-data-frame-analytics-stats
      parameters:
      - "$ref": "#/components/parameters/ml.get_data_frame_analytics_stats-id"
      - "$ref": "#/components/parameters/ml.get_data_frame_analytics_stats-allow_no_match"
      - "$ref": "#/components/parameters/ml.get_data_frame_analytics_stats-from"
      - "$ref": "#/components/parameters/ml.get_data_frame_analytics_stats-size"
      - "$ref": "#/components/parameters/ml.get_data_frame_analytics_stats-verbose"
      responses:
        '200':
          "$ref": "#/components/responses/ml.get_data_frame_analytics_stats-200"
      x-state: Generally available; Added in 7.3.0
      x-codeSamples:
      - lang: Console
        source: 'GET _ml/data_frame/analytics/weblog-outliers/_stats

          '
      - lang: Python
        source: |-
          resp = client.ml.get_data_frame_analytics_stats(
              id="weblog-outliers",
          )
      - lang: JavaScript
        source: |-
          const response = await client.ml.getDataFrameAnalyticsStats({
            id: "weblog-outliers",
          });
      - lang: Ruby
        source: |-
          response = client.ml.get_data_frame_analytics_stats(
            id: "weblog-outliers"
          )
      - lang: PHP
        source: |-
          $resp = $client->ml()->getDataFrameAnalyticsStats([
              "id" => "weblog-outliers",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_ml/data_frame/analytics/weblog-outliers/_stats"'
      - lang: Java
        source: |
          client.ml().getDataFrameAnalyticsStats(g -> g
              .id("weblog-outliers")
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_ml/datafeeds/{datafeed_id}/_stats":
    get:
      tags:
      - ml anomaly
      summary: 'Get datafeed stats

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_ml/datafeeds/_stats</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_ml/datafeeds/{datafeed_id}/_stats</span>\n
        \                     </div>\n                    \n\nYou can get statistics
        for multiple datafeeds in a single API request by\nusing a comma-separated
        list of datafeeds or a wildcard expression. You can\nget statistics for all
        datafeeds by using `_all`, by specifying `*` as the\n`<feed_id>`, or by omitting
        the `<feed_id>`. If the datafeed is stopped, the\nonly information you receive
        is the `datafeed_id` and the `state`.\nThis API returns a maximum of 10,000
        datafeeds.\n\n## Required authorization\n\n* Cluster privileges: `monitor_ml`\n"
      operationId: ml-get-datafeed-stats
      parameters:
      - "$ref": "#/components/parameters/ml.get_datafeed_stats-datafeed_id"
      - "$ref": "#/components/parameters/ml.get_datafeed_stats-allow_no_match"
      responses:
        '200':
          "$ref": "#/components/responses/ml.get_datafeed_stats-200"
      x-state: Generally available; Added in 5.5.0
      x-codeSamples:
      - lang: Console
        source: 'GET _ml/datafeeds/datafeed-high_sum_total_sales/_stats

          '
      - lang: Python
        source: |-
          resp = client.ml.get_datafeed_stats(
              datafeed_id="datafeed-high_sum_total_sales",
          )
      - lang: JavaScript
        source: |-
          const response = await client.ml.getDatafeedStats({
            datafeed_id: "datafeed-high_sum_total_sales",
          });
      - lang: Ruby
        source: |-
          response = client.ml.get_datafeed_stats(
            datafeed_id: "datafeed-high_sum_total_sales"
          )
      - lang: PHP
        source: |-
          $resp = $client->ml()->getDatafeedStats([
              "datafeed_id" => "datafeed-high_sum_total_sales",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_ml/datafeeds/datafeed-high_sum_total_sales/_stats"'
      - lang: Java
        source: |
          client.ml().getDatafeedStats(g -> g
              .datafeedId("datafeed-high_sum_total_sales")
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_ml/anomaly_detectors/{job_id}/results/influencers":
    post:
      tags:
      - ml anomaly
      summary: 'Get anomaly detection job results for influencers

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_ml/anomaly_detectors/{job_id}/results/influencers</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_ml/anomaly_detectors/{job_id}/results/influencers</span>\n
        \                     </div>\n                    \n\nInfluencers are the
        entities that have contributed to, or are to blame for,\nthe anomalies. Influencer
        results are available only if an\n`influencer_field_name` is specified in
        the job configuration.\n\n## Required authorization\n\n* Cluster privileges:
        `monitor_ml`\n"
      operationId: ml-get-influencers
      parameters:
      - "$ref": "#/components/parameters/ml.get_influencers-job_id"
      - "$ref": "#/components/parameters/ml.get_influencers-desc"
      - "$ref": "#/components/parameters/ml.get_influencers-end"
      - "$ref": "#/components/parameters/ml.get_influencers-exclude_interim"
      - "$ref": "#/components/parameters/ml.get_influencers-influencer_score"
      - "$ref": "#/components/parameters/ml.get_influencers-from"
      - "$ref": "#/components/parameters/ml.get_influencers-size"
      - "$ref": "#/components/parameters/ml.get_influencers-sort"
      - "$ref": "#/components/parameters/ml.get_influencers-start"
      requestBody:
        "$ref": "#/components/requestBodies/ml.get_influencers"
      responses:
        '200':
          "$ref": "#/components/responses/ml.get_influencers-200"
      x-state: Generally available; Added in 5.4.0
      x-codeSamples:
      - lang: Console
        source: |-
          GET _ml/anomaly_detectors/high_sum_total_sales/results/influencers
          {
            "sort": "influencer_score",
            "desc": true
          }
      - lang: Python
        source: |-
          resp = client.ml.get_influencers(
              job_id="high_sum_total_sales",
              sort="influencer_score",
              desc=True,
          )
      - lang: JavaScript
        source: |-
          const response = await client.ml.getInfluencers({
            job_id: "high_sum_total_sales",
            sort: "influencer_score",
            desc: true,
          });
      - lang: Ruby
        source: |-
          response = client.ml.get_influencers(
            job_id: "high_sum_total_sales",
            body: {
              "sort": "influencer_score",
              "desc": true
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->ml()->getInfluencers([
              "job_id" => "high_sum_total_sales",
              "body" => [
                  "sort" => "influencer_score",
                  "desc" => true,
              ],
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"sort":"influencer_score","desc":true}'' "$ELASTICSEARCH_URL/_ml/anomaly_detectors/high_sum_total_sales/results/influencers"'
      - lang: Java
        source: |
          client.ml().getInfluencers(g -> g
              .jobId("high_sum_total_sales")
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_ml/anomaly_detectors/{job_id}/_stats":
    get:
      tags:
      - ml anomaly
      summary: 'Get anomaly detection job stats

        '
      description: |
        **All methods and paths for this operation:**

        <div>
                              <span class="operation-verb get">GET</span>
                              <span class="operation-path">/_ml/anomaly_detectors/_stats</span>
                              </div>
                            <div>
                              <span class="operation-verb get">GET</span>
                              <span class="operation-path">/_ml/anomaly_detectors/{job_id}/_stats</span>
                              </div>

        ## Required authorization

        * Cluster privileges: `monitor_ml`
      operationId: ml-get-job-stats
      parameters:
      - "$ref": "#/components/parameters/ml.get_job_stats-job_id"
      - "$ref": "#/components/parameters/ml.get_job_stats-allow_no_match"
      responses:
        '200':
          "$ref": "#/components/responses/ml.get_job_stats-200"
      x-state: Generally available; Added in 5.5.0
      x-codeSamples:
      - lang: Console
        source: 'GET _ml/anomaly_detectors/low_request_rate/_stats

          '
      - lang: Python
        source: |-
          resp = client.ml.get_job_stats(
              job_id="low_request_rate",
          )
      - lang: JavaScript
        source: |-
          const response = await client.ml.getJobStats({
            job_id: "low_request_rate",
          });
      - lang: Ruby
        source: |-
          response = client.ml.get_job_stats(
            job_id: "low_request_rate"
          )
      - lang: PHP
        source: |-
          $resp = $client->ml()->getJobStats([
              "job_id" => "low_request_rate",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_ml/anomaly_detectors/low_request_rate/_stats"'
      - lang: Java
        source: |
          client.ml().getJobStats(g -> g
              .jobId("low_request_rate")
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_ml/memory/{node_id}/_stats":
    get:
      tags:
      - ml
      summary: 'Get machine learning memory usage info

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_ml/memory/_stats</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_ml/memory/{node_id}/_stats</span>\n
        \                     </div>\n                    \n\nGet information about
        how machine learning jobs and trained models are using memory,\non each node,
        both within the JVM heap, and natively, outside of the JVM.\n\n## Required
        authorization\n\n* Cluster privileges: `monitor_ml`\n"
      operationId: ml-get-memory-stats
      parameters:
      - "$ref": "#/components/parameters/ml.get_memory_stats-node_id"
      - "$ref": "#/components/parameters/ml.get_memory_stats-master_timeout"
      - "$ref": "#/components/parameters/ml.get_memory_stats-timeout"
      responses:
        '200':
          "$ref": "#/components/responses/ml.get_memory_stats-200"
      x-state: Generally available; Added in 8.2.0
      x-codeSamples:
      - lang: Console
        source: 'GET _ml/memory/_stats?human

          '
      - lang: Python
        source: |-
          resp = client.ml.get_memory_stats(
              human=True,
          )
      - lang: JavaScript
        source: |-
          const response = await client.ml.getMemoryStats({
            human: "true",
          });
      - lang: Ruby
        source: |-
          response = client.ml.get_memory_stats(
            human: "true"
          )
      - lang: PHP
        source: |-
          $resp = $client->ml()->getMemoryStats([
              "human" => "true",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_ml/memory/_stats?human"'
      - lang: Java
        source: 'client.ml().getMemoryStats(g -> g);

          '
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_ml/anomaly_detectors/{job_id}/model_snapshots/{snapshot_id}/_upgrade/_stats":
    get:
      tags:
      - ml anomaly
      summary: Get anomaly detection job model snapshot upgrade usage info
      description: |2


        ## Required authorization

        * Cluster privileges: `monitor_ml`
      operationId: ml-get-model-snapshot-upgrade-stats
      parameters:
      - in: path
        name: job_id
        description: Identifier for the anomaly detection job.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: path
        name: snapshot_id
        description: |-
          A numerical character string that uniquely identifies the model snapshot. You can get information for multiple
          snapshots by using a comma-separated list or a wildcard expression. You can get all snapshots by using `_all`,
          by specifying `*` as the snapshot ID, or by omitting the snapshot ID.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: allow_no_match
        description: |-
          Specifies what to do when the request:

           -  Contains wildcard expressions and there are no jobs that match.
           -  Contains the _all string or no identifiers and there are no matches.
           -  Contains wildcard expressions and there are only partial matches.

          The default value is true, which returns an empty jobs array when there are no matches and the subset of results
          when there are partial matches. If this parameter is false, the request returns a 404 status code when there are
          no matches or only partial matches.
        deprecated: false
        schema:
          type: boolean
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: number
                  model_snapshot_upgrades:
                    type: array
                    items:
                      "$ref": "#/components/schemas/ml._types.ModelSnapshotUpgrade"
                required:
                - count
                - model_snapshot_upgrades
      x-state: Generally available; Added in 7.16.0
      x-codeSamples:
      - lang: Console
        source: 'GET _ml/anomaly_detectors/low_request_rate/model_snapshots/_all/_upgrade/_stats

          '
      - lang: Python
        source: |-
          resp = client.ml.get_model_snapshot_upgrade_stats(
              job_id="low_request_rate",
              snapshot_id="_all",
          )
      - lang: JavaScript
        source: |-
          const response = await client.ml.getModelSnapshotUpgradeStats({
            job_id: "low_request_rate",
            snapshot_id: "_all",
          });
      - lang: Ruby
        source: |-
          response = client.ml.get_model_snapshot_upgrade_stats(
            job_id: "low_request_rate",
            snapshot_id: "_all"
          )
      - lang: PHP
        source: |-
          $resp = $client->ml()->getModelSnapshotUpgradeStats([
              "job_id" => "low_request_rate",
              "snapshot_id" => "_all",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_ml/anomaly_detectors/low_request_rate/model_snapshots/_all/_upgrade/_stats"'
      - lang: Java
        source: |
          client.ml().getModelSnapshotUpgradeStats(g -> g
              .jobId("low_request_rate")
              .snapshotId("_all")
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_ml/anomaly_detectors/{job_id}/results/overall_buckets":
    post:
      tags:
      - ml anomaly
      summary: 'Get overall bucket results

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_ml/anomaly_detectors/{job_id}/results/overall_buckets</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_ml/anomaly_detectors/{job_id}/results/overall_buckets</span>\n
        \                     </div>\n                    \n\nRetrievs overall bucket
        results that summarize the bucket results of\nmultiple anomaly detection jobs.\n\nThe
        `overall_score` is calculated by combining the scores of all the\nbuckets
        within the overall bucket span. First, the maximum\n`anomaly_score` per anomaly
        detection job in the overall bucket is\ncalculated. Then the `top_n` of those
        scores are averaged to result in\nthe `overall_score`. This means that you
        can fine-tune the\n`overall_score` so that it is more or less sensitive to
        the number of\njobs that detect an anomaly at the same time. For example,
        if you set\n`top_n` to `1`, the `overall_score` is the maximum bucket score
        in the\noverall bucket. Alternatively, if you set `top_n` to the number of
        jobs,\nthe `overall_score` is high only when all jobs detect anomalies in
        that\noverall bucket. If you set the `bucket_span` parameter (to a value\ngreater
        than its default), the `overall_score` is the maximum\n`overall_score` of
        the overall buckets that have a span equal to the\njobs' largest bucket span.\n\n##
        Required authorization\n\n* Cluster privileges: `monitor_ml`\n"
      operationId: ml-get-overall-buckets
      parameters:
      - "$ref": "#/components/parameters/ml.get_overall_buckets-job_id"
      - "$ref": "#/components/parameters/ml.get_overall_buckets-allow_no_match"
      - "$ref": "#/components/parameters/ml.get_overall_buckets-bucket_span"
      - "$ref": "#/components/parameters/ml.get_overall_buckets-end"
      - "$ref": "#/components/parameters/ml.get_overall_buckets-exclude_interim"
      - "$ref": "#/components/parameters/ml.get_overall_buckets-overall_score"
      - "$ref": "#/components/parameters/ml.get_overall_buckets-start"
      - "$ref": "#/components/parameters/ml.get_overall_buckets-top_n"
      requestBody:
        "$ref": "#/components/requestBodies/ml.get_overall_buckets"
      responses:
        '200':
          "$ref": "#/components/responses/ml.get_overall_buckets-200"
      x-state: Generally available; Added in 6.1.0
      x-codeSamples:
      - lang: Console
        source: |-
          GET _ml/anomaly_detectors/job-*/results/overall_buckets
          {
            "overall_score": 80,
            "start": "1403532000000"
          }
      - lang: Python
        source: |-
          resp = client.ml.get_overall_buckets(
              job_id="job-*",
              overall_score=80,
              start="1403532000000",
          )
      - lang: JavaScript
        source: |-
          const response = await client.ml.getOverallBuckets({
            job_id: "job-*",
            overall_score: 80,
            start: 1403532000000,
          });
      - lang: Ruby
        source: |-
          response = client.ml.get_overall_buckets(
            job_id: "job-*",
            body: {
              "overall_score": 80,
              "start": "1403532000000"
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->ml()->getOverallBuckets([
              "job_id" => "job-*",
              "body" => [
                  "overall_score" => 80,
                  "start" => "1403532000000",
              ],
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"overall_score":80,"start":"1403532000000"}'' "$ELASTICSEARCH_URL/_ml/anomaly_detectors/job-*/results/overall_buckets"'
      - lang: Java
        source: |
          client.ml().getOverallBuckets(g -> g
              .jobId("job-*")
              .overallScore(80.0D)
              .start(DateTime.of("1403532000000"))
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_ml/anomaly_detectors/{job_id}/results/records":
    post:
      tags:
      - ml anomaly
      summary: 'Get anomaly records for an anomaly detection job

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_ml/anomaly_detectors/{job_id}/results/records</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_ml/anomaly_detectors/{job_id}/results/records</span>\n
        \                     </div>\n                    \n\nRecords contain the
        detailed analytical results. They describe the anomalous\nactivity that has
        been identified in the input data based on the detector\nconfiguration.\nThere
        can be many anomaly records depending on the characteristics and size\nof
        the input data. In practice, there are often too many to be able to\nmanually
        process them. The machine learning features therefore perform a\nsophisticated
        aggregation of the anomaly records into buckets.\nThe number of record results
        depends on the number of anomalies found in each\nbucket, which relates to
        the number of time series being modeled and the\nnumber of detectors.\n\n##
        Required authorization\n\n* Cluster privileges: `monitor_ml`\n"
      operationId: ml-get-records
      parameters:
      - "$ref": "#/components/parameters/ml.get_records-job_id"
      - "$ref": "#/components/parameters/ml.get_records-desc"
      - "$ref": "#/components/parameters/ml.get_records-end"
      - "$ref": "#/components/parameters/ml.get_records-exclude_interim"
      - "$ref": "#/components/parameters/ml.get_records-from"
      - "$ref": "#/components/parameters/ml.get_records-record_score"
      - "$ref": "#/components/parameters/ml.get_records-size"
      - "$ref": "#/components/parameters/ml.get_records-sort"
      - "$ref": "#/components/parameters/ml.get_records-start"
      requestBody:
        "$ref": "#/components/requestBodies/ml.get_records"
      responses:
        '200':
          "$ref": "#/components/responses/ml.get_records-200"
      x-state: Generally available; Added in 5.4.0
      x-codeSamples:
      - lang: Console
        source: |-
          GET _ml/anomaly_detectors/low_request_rate/results/records
          {
            "sort": "record_score",
            "desc": true,
            "start": "1454944100000"
          }
      - lang: Python
        source: |-
          resp = client.ml.get_records(
              job_id="low_request_rate",
              sort="record_score",
              desc=True,
              start="1454944100000",
          )
      - lang: JavaScript
        source: |-
          const response = await client.ml.getRecords({
            job_id: "low_request_rate",
            sort: "record_score",
            desc: true,
            start: 1454944100000,
          });
      - lang: Ruby
        source: |-
          response = client.ml.get_records(
            job_id: "low_request_rate",
            body: {
              "sort": "record_score",
              "desc": true,
              "start": "1454944100000"
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->ml()->getRecords([
              "job_id" => "low_request_rate",
              "body" => [
                  "sort" => "record_score",
                  "desc" => true,
                  "start" => "1454944100000",
              ],
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"sort":"record_score","desc":true,"start":"1454944100000"}''
          "$ELASTICSEARCH_URL/_ml/anomaly_detectors/low_request_rate/results/records"'
      - lang: Java
        source: |
          client.ml().getRecords(g -> g
              .desc(true)
              .jobId("low_request_rate")
              .sort("record_score")
              .start(DateTime.of("1454944100000"))
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_ml/trained_models/{model_id}/_stats":
    get:
      tags:
      - ml trained model
      summary: 'Get trained models usage info

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_ml/trained_models/_stats</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_ml/trained_models/{model_id}/_stats</span>\n
        \                     </div>\n                    \n\nYou can get usage information
        for multiple trained\nmodels in a single API request by using a comma-separated
        list of model IDs or a wildcard expression.\n\n## Required authorization\n\n*
        Cluster privileges: `monitor_ml`\n"
      operationId: ml-get-trained-models-stats
      parameters:
      - "$ref": "#/components/parameters/ml.get_trained_models_stats-model_id"
      - "$ref": "#/components/parameters/ml.get_trained_models_stats-allow_no_match"
      - "$ref": "#/components/parameters/ml.get_trained_models_stats-from"
      - "$ref": "#/components/parameters/ml.get_trained_models_stats-size"
      responses:
        '200':
          "$ref": "#/components/responses/ml.get_trained_models_stats-200"
      x-state: Generally available; Added in 7.10.0
      x-codeSamples:
      - lang: Console
        source: 'GET _ml/trained_models/_stats

          '
      - lang: Python
        source: resp = client.ml.get_trained_models_stats()
      - lang: JavaScript
        source: const response = await client.ml.getTrainedModelsStats();
      - lang: Ruby
        source: response = client.ml.get_trained_models_stats
      - lang: PHP
        source: "$resp = $client->ml()->getTrainedModelsStats();"
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_ml/trained_models/_stats"'
      - lang: Java
        source: 'client.ml().getTrainedModelsStats(g -> g);

          '
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_ml/trained_models/{model_id}/_infer":
    post:
      tags:
      - ml trained model
      summary: Evaluate a trained model
      operationId: ml-infer-trained-model
      parameters:
      - in: path
        name: model_id
        description: The unique identifier of the trained model.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: timeout
        description: Controls the amount of time to wait for inference results.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                docs:
                  description: |-
                    An array of objects to pass to the model for inference. The objects should contain a fields matching your
                    configured trained model input. Typically, for NLP models, the field name is `text_field`.
                    Currently, for NLP models, only a single value is allowed.
                  type: array
                  items:
                    type: object
                    additionalProperties:
                      type: object
                inference_config:
                  description: The inference configuration updates to apply on the
                    API call
                  allOf:
                  - "$ref": "#/components/schemas/ml._types.InferenceConfigUpdateContainer"
              required:
              - docs
            examples:
              MlInferTrainedModelExample1:
                description: An example body for a `POST _ml/trained_models/lang_ident_model_1/_infer`
                  request.
                value: |-
                  {
                    "docs":[{"text": "The fool doth think he is wise, but the wise man knows himself to be a fool."}]
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  inference_results:
                    type: array
                    items:
                      "$ref": "#/components/schemas/ml._types.InferenceResponseResult"
                required:
                - inference_results
      x-state: Generally available; Added in 8.3.0
      x-codeSamples:
      - lang: Console
        source: |-
          POST _ml/trained_models/lang_ident_model_1/_infer
          {
            "docs":[{"text": "The fool doth think he is wise, but the wise man knows himself to be a fool."}]
          }
      - lang: Python
        source: |-
          resp = client.ml.infer_trained_model(
              model_id="lang_ident_model_1",
              docs=[
                  {
                      "text": "The fool doth think he is wise, but the wise man knows himself to be a fool."
                  }
              ],
          )
      - lang: JavaScript
        source: |-
          const response = await client.ml.inferTrainedModel({
            model_id: "lang_ident_model_1",
            docs: [
              {
                text: "The fool doth think he is wise, but the wise man knows himself to be a fool.",
              },
            ],
          });
      - lang: Ruby
        source: |-
          response = client.ml.infer_trained_model(
            model_id: "lang_ident_model_1",
            body: {
              "docs": [
                {
                  "text": "The fool doth think he is wise, but the wise man knows himself to be a fool."
                }
              ]
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->ml()->inferTrainedModel([
              "model_id" => "lang_ident_model_1",
              "body" => [
                  "docs" => array(
                      [
                          "text" => "The fool doth think he is wise, but the wise man knows himself to be a fool.",
                      ],
                  ),
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"docs":[{"text":"The fool doth think he is wise,
          but the wise man knows himself to be a fool."}]}'' "$ELASTICSEARCH_URL/_ml/trained_models/lang_ident_model_1/_infer"'
      - lang: Java
        source: |
          client.ml().inferTrainedModel(i -> i
              .docs(Map.of("text", JsonData.fromJson("\"The fool doth think he is wise, but the wise man knows himself to be a fool.\"")))
              .modelId("lang_ident_model_1")
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_ml/info":
    get:
      tags:
      - ml
      summary: Get machine learning information
      description: |
        Get defaults and limits used by machine learning.
        This endpoint is designed to be used by a user interface that needs to fully
        understand machine learning configurations where some options are not
        specified, meaning that the defaults should be used. This endpoint may be
        used to find out what those defaults are. It also provides information about
        the maximum size of machine learning jobs that could run in the current
        cluster configuration.

        ## Required authorization

        * Cluster privileges: `monitor_ml`
      operationId: ml-info
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  defaults:
                    allOf:
                    - "$ref": "#/components/schemas/ml.info.Defaults"
                  limits:
                    allOf:
                    - "$ref": "#/components/schemas/ml.info.Limits"
                  upgrade_mode:
                    type: boolean
                  native_code:
                    allOf:
                    - "$ref": "#/components/schemas/ml.info.NativeCode"
                required:
                - defaults
                - limits
                - upgrade_mode
                - native_code
      x-state: Generally available; Added in 6.3.0
      x-codeSamples:
      - lang: Console
        source: 'GET _ml/info

          '
      - lang: Python
        source: resp = client.ml.info()
      - lang: JavaScript
        source: const response = await client.ml.info();
      - lang: Ruby
        source: response = client.ml.info
      - lang: PHP
        source: "$resp = $client->ml()->info();"
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_ml/info"'
      - lang: Java
        source: 'client.ml().info();

          '
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_ml/anomaly_detectors/{job_id}/_open":
    post:
      tags:
      - ml anomaly
      summary: Open anomaly detection jobs
      description: |
        An anomaly detection job must be opened to be ready to receive and analyze
        data. It can be opened and closed multiple times throughout its lifecycle.
        When you open a new job, it starts with an empty model.
        When you open an existing job, the most recent model state is automatically
        loaded. The job is ready to resume its analysis from where it left off, once
        new data is received.

        ## Required authorization

        * Cluster privileges: `manage_ml`
      operationId: ml-open-job
      parameters:
      - in: path
        name: job_id
        description: Identifier for the anomaly detection job.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: timeout
        description: Controls the time to wait until a job has opened.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                timeout:
                  description: Refer to the description for the `timeout` query parameter.
                  default: 30m
                  allOf:
                  - "$ref": "#/components/schemas/_types.Duration"
            examples:
              MlOpenJobRequestExample1:
                description: 'A request to open anomaly detection jobs. The timeout
                  specifies to wait 35 minutes for the job to open.

                  '
                value: |-
                  {
                    "timeout": "35m"
                  }
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  opened:
                    type: boolean
                  node:
                    description: |-
                      The ID of the node that the job was started on. In serverless this will be the "serverless".
                      If the job is allowed to open lazily and has not yet been assigned to a node, this value is an empty string.
                    allOf:
                    - "$ref": "#/components/schemas/_types.NodeId"
                required:
                - opened
                - node
              examples:
                MlOpenJobResponseExample1:
                  description: A successful response when opening an anomaly detection
                    job.
                  value: |-
                    {
                      "opened": true,
                      "node": "node-1"
                    }
      x-state: Generally available; Added in 5.4.0
      x-codeSamples:
      - lang: Console
        source: |-
          POST /_ml/anomaly_detectors/job-01/_open
          {
            "timeout": "35m"
          }
      - lang: Python
        source: |-
          resp = client.ml.open_job(
              job_id="job-01",
              timeout="35m",
          )
      - lang: JavaScript
        source: |-
          const response = await client.ml.openJob({
            job_id: "job-01",
            timeout: "35m",
          });
      - lang: Ruby
        source: |-
          response = client.ml.open_job(
            job_id: "job-01",
            body: {
              "timeout": "35m"
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->ml()->openJob([
              "job_id" => "job-01",
              "body" => [
                  "timeout" => "35m",
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"timeout":"35m"}'' "$ELASTICSEARCH_URL/_ml/anomaly_detectors/job-01/_open"'
      - lang: Java
        source: |
          client.ml().openJob(o -> o
              .jobId("job-01")
              .timeout(t -> t
                  .time("35m")
              )
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_ml/anomaly_detectors/{job_id}/_data":
    post:
      tags:
      - ml anomaly
      summary: Send data to an anomaly detection job for analysis
      description: |
        IMPORTANT: For each job, data can be accepted from only a single connection at a time.
        It is not currently possible to post data to multiple jobs using wildcards or a comma-separated list.

        ## Required authorization

        * Cluster privileges: `manage_ml`
      operationId: ml-post-data
      parameters:
      - in: path
        name: job_id
        description: Identifier for the anomaly detection job. The job must have a
          state of open to receive and process the data.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: reset_end
        description: Specifies the end of the bucket resetting range.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.DateTime"
        style: form
      - in: query
        name: reset_start
        description: Specifies the start of the bucket resetting range.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.DateTime"
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                type: object
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  job_id:
                    allOf:
                    - "$ref": "#/components/schemas/_types.Id"
                  processed_record_count:
                    type: number
                  processed_field_count:
                    type: number
                  input_bytes:
                    type: number
                  input_field_count:
                    type: number
                  invalid_date_count:
                    type: number
                  missing_field_count:
                    type: number
                  out_of_order_timestamp_count:
                    type: number
                  empty_bucket_count:
                    type: number
                  sparse_bucket_count:
                    type: number
                  bucket_count:
                    type: number
                  earliest_record_timestamp:
                    allOf:
                    - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
                  latest_record_timestamp:
                    allOf:
                    - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
                  last_data_time:
                    allOf:
                    - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
                  latest_empty_bucket_timestamp:
                    allOf:
                    - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
                  latest_sparse_bucket_timestamp:
                    allOf:
                    - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
                  input_record_count:
                    type: number
                  log_time:
                    allOf:
                    - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
                required:
                - job_id
                - processed_record_count
                - processed_field_count
                - input_bytes
                - input_field_count
                - invalid_date_count
                - missing_field_count
                - out_of_order_timestamp_count
                - empty_bucket_count
                - sparse_bucket_count
                - bucket_count
                - input_record_count
      deprecated: true
      x-state: Generally available; Added in 5.4.0
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_ml/data_frame/analytics/{id}/_preview":
    post:
      tags:
      - ml data frame
      summary: 'Preview features used by data frame analytics

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_ml/data_frame/analytics/_preview</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_ml/data_frame/analytics/_preview</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_ml/data_frame/analytics/{id}/_preview</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_ml/data_frame/analytics/{id}/_preview</span>\n
        \                     </div>\n                    \n\nPreview the extracted
        features used by a data frame analytics config.\n\n## Required authorization\n\n*
        Cluster privileges: `monitor_ml`\n"
      operationId: ml-preview-data-frame-analytics
      parameters:
      - "$ref": "#/components/parameters/ml.preview_data_frame_analytics-id"
      requestBody:
        "$ref": "#/components/requestBodies/ml.preview_data_frame_analytics"
      responses:
        '200':
          "$ref": "#/components/responses/ml.preview_data_frame_analytics-200"
      x-state: Generally available; Added in 7.13.0
      x-codeSamples:
      - lang: Console
        source: |-
          POST _ml/data_frame/analytics/_preview
          {
            "config": {
              "source": {
                "index": "houses_sold_last_10_yrs"
              },
              "analysis": {
                "regression": {
                  "dependent_variable": "price"
                }
              }
            }
          }
      - lang: Python
        source: |-
          resp = client.ml.preview_data_frame_analytics(
              config={
                  "source": {
                      "index": "houses_sold_last_10_yrs"
                  },
                  "analysis": {
                      "regression": {
                          "dependent_variable": "price"
                      }
                  }
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.ml.previewDataFrameAnalytics({
            config: {
              source: {
                index: "houses_sold_last_10_yrs",
              },
              analysis: {
                regression: {
                  dependent_variable: "price",
                },
              },
            },
          });
      - lang: Ruby
        source: |-
          response = client.ml.preview_data_frame_analytics(
            body: {
              "config": {
                "source": {
                  "index": "houses_sold_last_10_yrs"
                },
                "analysis": {
                  "regression": {
                    "dependent_variable": "price"
                  }
                }
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->ml()->previewDataFrameAnalytics([
              "body" => [
                  "config" => [
                      "source" => [
                          "index" => "houses_sold_last_10_yrs",
                      ],
                      "analysis" => [
                          "regression" => [
                              "dependent_variable" => "price",
                          ],
                      ],
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"config":{"source":{"index":"houses_sold_last_10_yrs"},"analysis":{"regression":{"dependent_variable":"price"}}}}''
          "$ELASTICSEARCH_URL/_ml/data_frame/analytics/_preview"'
      - lang: Java
        source: |
          client.ml().previewDataFrameAnalytics(p -> p
              .config(c -> c
                  .source(s -> s
                      .index("houses_sold_last_10_yrs")
                  )
                  .analysis(a -> a
                      .regression(r -> r
                          .dependentVariable("price")
                      )
                  )
              )
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_ml/datafeeds/{datafeed_id}/_preview":
    post:
      tags:
      - ml anomaly
      summary: 'Preview a datafeed

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_ml/datafeeds/_preview</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_ml/datafeeds/_preview</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_ml/datafeeds/{datafeed_id}/_preview</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_ml/datafeeds/{datafeed_id}/_preview</span>\n
        \                     </div>\n                    \n\nThis API returns the
        first \"page\" of search results from a datafeed.\nYou can preview an existing
        datafeed or provide configuration details for a datafeed\nand anomaly detection
        job in the API. The preview shows the structure of the data\nthat will be
        passed to the anomaly detection engine.\nIMPORTANT: When Elasticsearch security
        features are enabled, the preview uses the credentials of the user that\ncalled
        the API. However, when the datafeed starts it uses the roles of the last user
        that created or updated the\ndatafeed. To get a preview that accurately reflects
        the behavior of the datafeed, use the appropriate credentials.\nYou can also
        use secondary authorization headers to supply the credentials.\n\n## Required
        authorization\n\n* Index privileges: `read`\n* Cluster privileges: `manage_ml`\n"
      operationId: ml-preview-datafeed
      parameters:
      - "$ref": "#/components/parameters/ml.preview_datafeed-datafeed_id"
      - "$ref": "#/components/parameters/ml.preview_datafeed-start"
      - "$ref": "#/components/parameters/ml.preview_datafeed-end"
      requestBody:
        "$ref": "#/components/requestBodies/ml.preview_datafeed"
      responses:
        '200':
          "$ref": "#/components/responses/ml.preview_datafeed-200"
      x-state: Generally available; Added in 5.4.0
      x-codeSamples:
      - lang: Console
        source: 'GET _ml/datafeeds/datafeed-high_sum_total_sales/_preview

          '
      - lang: Python
        source: |-
          resp = client.ml.preview_datafeed(
              datafeed_id="datafeed-high_sum_total_sales",
          )
      - lang: JavaScript
        source: |-
          const response = await client.ml.previewDatafeed({
            datafeed_id: "datafeed-high_sum_total_sales",
          });
      - lang: Ruby
        source: |-
          response = client.ml.preview_datafeed(
            datafeed_id: "datafeed-high_sum_total_sales"
          )
      - lang: PHP
        source: |-
          $resp = $client->ml()->previewDatafeed([
              "datafeed_id" => "datafeed-high_sum_total_sales",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_ml/datafeeds/datafeed-high_sum_total_sales/_preview"'
      - lang: Java
        source: |
          client.ml().previewDatafeed(p -> p
              .datafeedId("datafeed-high_sum_total_sales")
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_ml/trained_models/{model_id}/definition/{part}":
    put:
      tags:
      - ml trained model
      summary: Create part of a trained model definition
      description: |2


        ## Required authorization

        * Cluster privileges: `manage_ml`
      operationId: ml-put-trained-model-definition-part
      parameters:
      - in: path
        name: model_id
        description: The unique identifier of the trained model.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: path
        name: part
        description: |-
          The definition part number. When the definition is loaded for inference the definition parts are streamed in the
          order of their part number. The first part must be `0` and the final part must be `total_parts - 1`.
        required: true
        deprecated: false
        schema:
          type: number
        style: simple
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                definition:
                  description: The definition part for the model. Must be a base64
                    encoded string.
                  type: string
                total_definition_length:
                  description: The total uncompressed definition length in bytes.
                    Not base64 encoded.
                  type: number
                total_parts:
                  description: The total number of parts that will be uploaded. Must
                    be greater than 0.
                  type: number
              required:
              - definition
              - total_definition_length
              - total_parts
            examples:
              MlPutTrainedModelDefinitionPartExample1:
                description: An example body for a `PUT _ml/trained_models/elastic__distilbert-base-uncased-finetuned-conll03-english/definition/0`
                  request.
                value: |-
                  {
                      "definition": "...",
                      "total_definition_length": 265632637,
                      "total_parts": 64
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
      x-state: Generally available; Added in 8.0.0
      x-codeSamples:
      - lang: Console
        source: |-
          PUT _ml/trained_models/elastic__distilbert-base-uncased-finetuned-conll03-english/definition/0
          {
              "definition": "...",
              "total_definition_length": 265632637,
              "total_parts": 64
          }
      - lang: Python
        source: |-
          resp = client.ml.put_trained_model_definition_part(
              model_id="elastic__distilbert-base-uncased-finetuned-conll03-english",
              part="0",
              definition="...",
              total_definition_length=265632637,
              total_parts=64,
          )
      - lang: JavaScript
        source: |-
          const response = await client.ml.putTrainedModelDefinitionPart({
            model_id: "elastic__distilbert-base-uncased-finetuned-conll03-english",
            part: 0,
            definition: "...",
            total_definition_length: 265632637,
            total_parts: 64,
          });
      - lang: Ruby
        source: |-
          response = client.ml.put_trained_model_definition_part(
            model_id: "elastic__distilbert-base-uncased-finetuned-conll03-english",
            part: "0",
            body: {
              "definition": "...",
              "total_definition_length": 265632637,
              "total_parts": 64
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->ml()->putTrainedModelDefinitionPart([
              "model_id" => "elastic__distilbert-base-uncased-finetuned-conll03-english",
              "part" => "0",
              "body" => [
                  "definition" => "...",
                  "total_definition_length" => 265632637,
                  "total_parts" => 64,
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"definition":"...","total_definition_length":265632637,"total_parts":64}''
          "$ELASTICSEARCH_URL/_ml/trained_models/elastic__distilbert-base-uncased-finetuned-conll03-english/definition/0"'
      - lang: Java
        source: |
          client.ml().putTrainedModelDefinitionPart(p -> p
              .definition("...")
              .modelId("elastic__distilbert-base-uncased-finetuned-conll03-english")
              .part(0)
              .totalDefinitionLength(265632637L)
              .totalParts(64)
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_ml/trained_models/{model_id}/vocabulary":
    put:
      tags:
      - ml trained model
      summary: Create a trained model vocabulary
      description: |
        This API is supported only for natural language processing (NLP) models.
        The vocabulary is stored in the index as described in `inference_config.*.vocabulary` of the trained model definition.

        ## Required authorization

        * Cluster privileges: `manage_ml`
      operationId: ml-put-trained-model-vocabulary
      parameters:
      - in: path
        name: model_id
        description: The unique identifier of the trained model.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                vocabulary:
                  description: The model vocabulary, which must not be empty.
                  type: array
                  items:
                    type: string
                merges:
                  description: The optional model merges if required by the tokenizer.
                  x-state: Generally available; Added in 8.2.0
                  type: array
                  items:
                    type: string
                scores:
                  description: The optional vocabulary value scores if required by
                    the tokenizer.
                  x-state: Generally available; Added in 8.9.0
                  type: array
                  items:
                    type: number
              required:
              - vocabulary
            examples:
              MlPutTrainedModelVocabularyExample1:
                description: An example body for a `PUT _ml/trained_models/elastic__distilbert-base-uncased-finetuned-conll03-english/vocabulary`
                  request.
                value: |-
                  {
                    "vocabulary": [
                      "[PAD]",
                      "[unused0]",
                    ]
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
      x-state: Generally available; Added in 8.0.0
      x-codeSamples:
      - lang: Console
        source: |-
          PUT _ml/trained_models/elastic__distilbert-base-uncased-finetuned-conll03-english/vocabulary
          {
            "vocabulary": [
              "[PAD]",
              "[unused0]",
            ]
          }
      - lang: Python
        source: |-
          resp = client.ml.put_trained_model_vocabulary(
              model_id="elastic__distilbert-base-uncased-finetuned-conll03-english",
              vocabulary=[
                  "[PAD]",
                  "[unused0]"
              ],
          )
      - lang: JavaScript
        source: |-
          const response = await client.ml.putTrainedModelVocabulary({
            model_id: "elastic__distilbert-base-uncased-finetuned-conll03-english",
            vocabulary: ["[PAD]", "[unused0]"],
          });
      - lang: Ruby
        source: |-
          response = client.ml.put_trained_model_vocabulary(
            model_id: "elastic__distilbert-base-uncased-finetuned-conll03-english",
            body: {
              "vocabulary": [
                "[PAD]",
                "[unused0]"
              ]
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->ml()->putTrainedModelVocabulary([
              "model_id" => "elastic__distilbert-base-uncased-finetuned-conll03-english",
              "body" => [
                  "vocabulary" => array(
                      "[PAD]",
                      "[unused0]",
                  ),
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"vocabulary":["[PAD]","[unused0]"]}'' "$ELASTICSEARCH_URL/_ml/trained_models/elastic__distilbert-base-uncased-finetuned-conll03-english/vocabulary"'
      - lang: Java
        source: |
          client.ml().putTrainedModelVocabulary(p -> p
              .modelId("elastic__distilbert-base-uncased-finetuned-conll03-english")
              .vocabulary(List.of("[PAD]","[unused0]"))
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_ml/anomaly_detectors/{job_id}/_reset":
    post:
      tags:
      - ml anomaly
      summary: Reset an anomaly detection job
      description: |
        All model state and results are deleted. The job is ready to start over as if
        it had just been created.
        It is not currently possible to reset multiple jobs using wildcards or a
        comma separated list.

        ## Required authorization

        * Cluster privileges: `manage_ml`
      operationId: ml-reset-job
      parameters:
      - in: path
        name: job_id
        description: The ID of the job to reset.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: wait_for_completion
        description: |-
          Should this request wait until the operation has completed before
          returning.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: delete_user_annotations
        description: |-
          Specifies whether annotations that have been added by the
          user should be deleted along with any auto-generated annotations when the job is
          reset.
        deprecated: false
        schema:
          type: boolean
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
      x-state: Generally available; Added in 7.14.0
      x-codeSamples:
      - lang: Console
        source: 'POST _ml/anomaly_detectors/total-requests/_reset

          '
      - lang: Python
        source: |-
          resp = client.ml.reset_job(
              job_id="total-requests",
          )
      - lang: JavaScript
        source: |-
          const response = await client.ml.resetJob({
            job_id: "total-requests",
          });
      - lang: Ruby
        source: |-
          response = client.ml.reset_job(
            job_id: "total-requests"
          )
      - lang: PHP
        source: |-
          $resp = $client->ml()->resetJob([
              "job_id" => "total-requests",
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_ml/anomaly_detectors/total-requests/_reset"'
      - lang: Java
        source: |
          client.ml().resetJob(r -> r
              .jobId("total-requests")
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_ml/anomaly_detectors/{job_id}/model_snapshots/{snapshot_id}/_revert":
    post:
      tags:
      - ml anomaly
      summary: Revert to a snapshot
      description: |
        The machine learning features react quickly to anomalous input, learning new
        behaviors in data. Highly anomalous input increases the variance in the
        models whilst the system learns whether this is a new step-change in behavior
        or a one-off event. In the case where this anomalous input is known to be a
        one-off, then it might be appropriate to reset the model state to a time
        before this event. For example, you might consider reverting to a saved
        snapshot after Black Friday or a critical system failure.

        ## Required authorization

        * Cluster privileges: `manage_ml`
      operationId: ml-revert-model-snapshot
      parameters:
      - in: path
        name: job_id
        description: Identifier for the anomaly detection job.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: path
        name: snapshot_id
        description: |-
          You can specify `empty` as the <snapshot_id>. Reverting to the empty
          snapshot means the anomaly detection job starts learning a new model from
          scratch when it is started.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: delete_intervening_results
        description: |-
          If true, deletes the results in the time period between the latest
          results and the time of the reverted snapshot. It also resets the model
          to accept records for this time period. If you choose not to delete
          intervening results when reverting a snapshot, the job will not accept
          input data that is older than the current time. If you want to resend
          data, then delete the intervening results.
        deprecated: false
        schema:
          type: boolean
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                delete_intervening_results:
                  description: Refer to the description for the `delete_intervening_results`
                    query parameter.
                  default: false
                  type: boolean
            examples:
              MlRevertModelSnapshotExample1:
                description: An example body for a `POST _ml/anomaly_detectors/low_request_rate/model_snapshots/1637092688/_revert`
                  request.
                value: |-
                  {
                    "delete_intervening_results": true
                  }
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  model:
                    allOf:
                    - "$ref": "#/components/schemas/ml._types.ModelSnapshot"
                required:
                - model
      x-state: Generally available; Added in 5.4.0
      x-codeSamples:
      - lang: Console
        source: |-
          POST _ml/anomaly_detectors/low_request_rate/model_snapshots/1637092688/_revert
          {
            "delete_intervening_results": true
          }
      - lang: Python
        source: |-
          resp = client.ml.revert_model_snapshot(
              job_id="low_request_rate",
              snapshot_id="1637092688",
              delete_intervening_results=True,
          )
      - lang: JavaScript
        source: |-
          const response = await client.ml.revertModelSnapshot({
            job_id: "low_request_rate",
            snapshot_id: 1637092688,
            delete_intervening_results: true,
          });
      - lang: Ruby
        source: |-
          response = client.ml.revert_model_snapshot(
            job_id: "low_request_rate",
            snapshot_id: "1637092688",
            body: {
              "delete_intervening_results": true
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->ml()->revertModelSnapshot([
              "job_id" => "low_request_rate",
              "snapshot_id" => "1637092688",
              "body" => [
                  "delete_intervening_results" => true,
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"delete_intervening_results":true}'' "$ELASTICSEARCH_URL/_ml/anomaly_detectors/low_request_rate/model_snapshots/1637092688/_revert"'
      - lang: Java
        source: |
          client.ml().revertModelSnapshot(r -> r
              .deleteInterveningResults(true)
              .jobId("low_request_rate")
              .snapshotId("1637092688")
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_ml/set_upgrade_mode":
    post:
      tags:
      - ml
      summary: Set upgrade_mode for ML indices
      description: |
        Sets a cluster wide upgrade_mode setting that prepares machine learning
        indices for an upgrade.
        When upgrading your cluster, in some circumstances you must restart your
        nodes and reindex your machine learning indices. In those circumstances,
        there must be no machine learning jobs running. You can close the machine
        learning jobs, do the upgrade, then open all the jobs again. Alternatively,
        you can use this API to temporarily halt tasks associated with the jobs and
        datafeeds and prevent new jobs from opening. You can also use this API
        during upgrades that do not require you to reindex your machine learning
        indices, though stopping jobs is not a requirement in that case.
        You can see the current value for the upgrade_mode setting by using the get
        machine learning info API.

        ## Required authorization

        * Cluster privileges: `manage_ml`
      operationId: ml-set-upgrade-mode
      parameters:
      - in: query
        name: enabled
        description: |-
          When `true`, it enables `upgrade_mode` which temporarily halts all job
          and datafeed tasks and prohibits new job and datafeed tasks from
          starting.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: timeout
        description: The time to wait for the request to be completed.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
      x-state: Generally available; Added in 6.7.0
      x-codeSamples:
      - lang: Console
        source: 'POST _ml/set_upgrade_mode?enabled=true

          '
      - lang: Python
        source: |-
          resp = client.ml.set_upgrade_mode(
              enabled=True,
          )
      - lang: JavaScript
        source: |-
          const response = await client.ml.setUpgradeMode({
            enabled: "true",
          });
      - lang: Ruby
        source: |-
          response = client.ml.set_upgrade_mode(
            enabled: "true"
          )
      - lang: PHP
        source: |-
          $resp = $client->ml()->setUpgradeMode([
              "enabled" => "true",
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_ml/set_upgrade_mode?enabled=true"'
      - lang: Java
        source: |
          client.ml().setUpgradeMode(s -> s
              .enabled(true)
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_ml/data_frame/analytics/{id}/_start":
    post:
      tags:
      - ml data frame
      summary: Start a data frame analytics job
      description: |
        A data frame analytics job can be started and stopped multiple times
        throughout its lifecycle.
        If the destination index does not exist, it is created automatically the
        first time you start the data frame analytics job. The
        `index.number_of_shards` and `index.number_of_replicas` settings for the
        destination index are copied from the source index. If there are multiple
        source indices, the destination index copies the highest setting values. The
        mappings for the destination index are also copied from the source indices.
        If there are any mapping conflicts, the job fails to start.
        If the destination index exists, it is used as is. You can therefore set up
        the destination index in advance with custom settings and mappings.

        ## Required authorization

        * Index privileges: `create_index`,`index`,`manage`,`read`,`view_index_metadata`
        * Cluster privileges: `manage_ml`
      operationId: ml-start-data-frame-analytics
      parameters:
      - in: path
        name: id
        description: |-
          Identifier for the data frame analytics job. This identifier can contain
          lowercase alphanumeric characters (a-z and 0-9), hyphens, and
          underscores. It must start and end with alphanumeric characters.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: timeout
        description: |-
          Controls the amount of time to wait until the data frame analytics job
          starts.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  description: If provided, must be the same identifier as in the
                    path.
                  allOf:
                  - "$ref": "#/components/schemas/_types.Id"
                timeout:
                  description: |-
                    Controls the amount of time to wait until the data frame analytics job
                    starts.
                  default: 20s
                  allOf:
                  - "$ref": "#/components/schemas/_types.Duration"
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  acknowledged:
                    type: boolean
                  node:
                    description: |-
                      The ID of the node that the job was started on. If the job is allowed to open lazily and has not yet been assigned to a node, this value is an empty string.
                      The node ID of the node the job has been assigned to, or
                      an empty string if it hasn't been assigned to a node. In
                      serverless if the job has been assigned to run then the
                      node ID will be "serverless".
                    allOf:
                    - "$ref": "#/components/schemas/_types.NodeId"
                required:
                - acknowledged
                - node
      x-state: Generally available; Added in 7.3.0
      x-codeSamples:
      - lang: Console
        source: 'POST _ml/data_frame/analytics/loganalytics/_start

          '
      - lang: Python
        source: |-
          resp = client.ml.start_data_frame_analytics(
              id="loganalytics",
          )
      - lang: JavaScript
        source: |-
          const response = await client.ml.startDataFrameAnalytics({
            id: "loganalytics",
          });
      - lang: Ruby
        source: |-
          response = client.ml.start_data_frame_analytics(
            id: "loganalytics"
          )
      - lang: PHP
        source: |-
          $resp = $client->ml()->startDataFrameAnalytics([
              "id" => "loganalytics",
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_ml/data_frame/analytics/loganalytics/_start"'
      - lang: Java
        source: |
          client.ml().startDataFrameAnalytics(s -> s
              .id("loganalytics")
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_ml/datafeeds/{datafeed_id}/_start":
    post:
      tags:
      - ml anomaly
      summary: Start datafeeds
      description: |
        A datafeed must be started in order to retrieve data from Elasticsearch. A datafeed can be started and stopped
        multiple times throughout its lifecycle.

        Before you can start a datafeed, the anomaly detection job must be open. Otherwise, an error occurs.

        If you restart a stopped datafeed, it continues processing input data from the next millisecond after it was stopped.
        If new data was indexed for that exact millisecond between stopping and starting, it will be ignored.

        When Elasticsearch security features are enabled, your datafeed remembers which roles the last user to create or
        update it had at the time of creation or update and runs the query using those same roles. If you provided secondary
        authorization headers when you created or updated the datafeed, those credentials are used instead.

        ## Required authorization

        * Cluster privileges: `manage_ml`
      operationId: ml-start-datafeed
      parameters:
      - in: path
        name: datafeed_id
        description: |-
          A numerical character string that uniquely identifies the datafeed. This identifier can contain lowercase
          alphanumeric characters (a-z and 0-9), hyphens, and underscores. It must start and end with alphanumeric
          characters.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: end
        description: |-
          The time that the datafeed should end, which can be specified by using one of the following formats:

          * ISO 8601 format with milliseconds, for example `2017-01-22T06:00:00.000Z`
          * ISO 8601 format without milliseconds, for example `2017-01-22T06:00:00+00:00`
          * Milliseconds since the epoch, for example `1485061200000`

          Date-time arguments using either of the ISO 8601 formats must have a time zone designator, where `Z` is accepted
          as an abbreviation for UTC time. When a URL is expected (for example, in browsers), the `+` used in time zone
          designators must be encoded as `%2B`.
          The end time value is exclusive. If you do not specify an end time, the datafeed
          runs continuously.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.DateTime"
        style: form
      - in: query
        name: start
        description: |-
          The time that the datafeed should begin, which can be specified by using the same formats as the `end` parameter.
          This value is inclusive.
          If you do not specify a start time and the datafeed is associated with a new anomaly detection job, the analysis
          starts from the earliest time for which data is available.
          If you restart a stopped datafeed and specify a start value that is earlier than the timestamp of the latest
          processed record, the datafeed continues from 1 millisecond after the timestamp of the latest processed record.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.DateTime"
        style: form
      - in: query
        name: timeout
        description: Specifies the amount of time to wait until a datafeed starts.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                end:
                  description: Refer to the description for the `end` query parameter.
                  allOf:
                  - "$ref": "#/components/schemas/_types.DateTime"
                start:
                  description: Refer to the description for the `start` query parameter.
                  allOf:
                  - "$ref": "#/components/schemas/_types.DateTime"
                timeout:
                  description: Refer to the description for the `timeout` query parameter.
                  default: 20s
                  allOf:
                  - "$ref": "#/components/schemas/_types.Duration"
            examples:
              MlStartDatafeedExample1:
                description: An example body for a `POST _ml/datafeeds/datafeed-low_request_rate/_start`
                  request.
                value: |-
                  {
                    "start": "2019-04-07T18:22:16Z"
                  }
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  node:
                    description: |-
                      The ID of the node that the job was started on. In serverless this will be the "serverless".
                      If the job is allowed to open lazily and has not yet been assigned to a node, this value is an empty string.
                    allOf:
                    - "$ref": "#/components/schemas/_types.NodeIds"
                  started:
                    description: For a successful response, this value is always `true`.
                      On failure, an exception is returned instead.
                    type: boolean
                required:
                - node
                - started
      x-state: Generally available; Added in 5.5.0
      x-codeSamples:
      - lang: Console
        source: |-
          POST _ml/datafeeds/datafeed-low_request_rate/_start
          {
            "start": "2019-04-07T18:22:16Z"
          }
      - lang: Python
        source: |-
          resp = client.ml.start_datafeed(
              datafeed_id="datafeed-low_request_rate",
              start="2019-04-07T18:22:16Z",
          )
      - lang: JavaScript
        source: |-
          const response = await client.ml.startDatafeed({
            datafeed_id: "datafeed-low_request_rate",
            start: "2019-04-07T18:22:16Z",
          });
      - lang: Ruby
        source: |-
          response = client.ml.start_datafeed(
            datafeed_id: "datafeed-low_request_rate",
            body: {
              "start": "2019-04-07T18:22:16Z"
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->ml()->startDatafeed([
              "datafeed_id" => "datafeed-low_request_rate",
              "body" => [
                  "start" => "2019-04-07T18:22:16Z",
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"start":"2019-04-07T18:22:16Z"}'' "$ELASTICSEARCH_URL/_ml/datafeeds/datafeed-low_request_rate/_start"'
      - lang: Java
        source: |
          client.ml().startDatafeed(s -> s
              .datafeedId("datafeed-low_request_rate")
              .start(DateTime.of("2019-04-07T18:22:16Z"))
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_ml/trained_models/{model_id}/deployment/_start":
    post:
      tags:
      - ml trained model
      summary: Start a trained model deployment
      description: |
        It allocates the model to every machine learning node.

        ## Required authorization

        * Cluster privileges: `manage_ml`
      operationId: ml-start-trained-model-deployment
      parameters:
      - in: path
        name: model_id
        description: The unique identifier of the trained model. Currently, only PyTorch
          models are supported.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: cache_size
        description: |-
          The inference cache size (in memory outside the JVM heap) per node for the model.
          The default value is the same size as the `model_size_bytes`. To disable the cache,
          `0b` can be provided.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.ByteSize"
        style: form
      - in: query
        name: deployment_id
        description: A unique identifier for the deployment of the model.
        deprecated: false
        schema:
          type: string
        x-state: Generally available; Added in 8.8.0
        style: form
      - in: query
        name: number_of_allocations
        description: |-
          The number of model allocations on each node where the model is deployed.
          All allocations on a node share the same copy of the model in memory but use
          a separate set of threads to evaluate the model.
          Increasing this value generally increases the throughput.
          If this setting is greater than the number of hardware threads
          it will automatically be changed to a value less than the number of hardware threads.
          If adaptive_allocations is enabled, do not set this value, because it’s automatically set.
        deprecated: false
        schema:
          type: number
        style: form
      - in: query
        name: priority
        description: The deployment priority
        deprecated: false
        schema:
          "$ref": "#/components/schemas/ml._types.TrainingPriority"
        style: form
      - in: query
        name: queue_capacity
        description: |-
          Specifies the number of inference requests that are allowed in the queue. After the number of requests exceeds
          this value, new requests are rejected with a 429 error.
        deprecated: false
        schema:
          type: number
        style: form
      - in: query
        name: threads_per_allocation
        description: |-
          Sets the number of threads used by each model allocation during inference. This generally increases
          the inference speed. The inference process is a compute-bound process; any number
          greater than the number of available hardware threads on the machine does not increase the
          inference speed. If this setting is greater than the number of hardware threads
          it will automatically be changed to a value less than the number of hardware threads.
        deprecated: false
        schema:
          type: number
        style: form
      - in: query
        name: timeout
        description: Specifies the amount of time to wait for the model to deploy.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: wait_for
        description: |+
          Specifies the allocation status to wait for before returning.

          Supported values include:
            - `started`: The trained model is started on at least one node.
            - `starting`: Trained model deployment is starting but it is not yet deployed on any nodes.
            - `fully_allocated`: Trained model deployment has started on all valid nodes.

        deprecated: false
        schema:
          "$ref": "#/components/schemas/ml._types.DeploymentAllocationState"
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                adaptive_allocations:
                  description: |-
                    Adaptive allocations configuration. When enabled, the number of allocations
                    is set based on the current load.
                    If adaptive_allocations is enabled, do not set the number of allocations manually.
                  allOf:
                  - "$ref": "#/components/schemas/ml._types.AdaptiveAllocationsSettings"
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  assignment:
                    allOf:
                    - "$ref": "#/components/schemas/ml._types.TrainedModelAssignment"
                required:
                - assignment
      x-state: Generally available; Added in 8.0.0
      x-codeSamples:
      - lang: Console
        source: 'POST _ml/trained_models/elastic__distilbert-base-uncased-finetuned-conll03-english/deployment/_start?wait_for=started&timeout=1m

          '
      - lang: Python
        source: |-
          resp = client.ml.start_trained_model_deployment(
              model_id="elastic__distilbert-base-uncased-finetuned-conll03-english",
              wait_for="started",
              timeout="1m",
          )
      - lang: JavaScript
        source: |-
          const response = await client.ml.startTrainedModelDeployment({
            model_id: "elastic__distilbert-base-uncased-finetuned-conll03-english",
            wait_for: "started",
            timeout: "1m",
          });
      - lang: Ruby
        source: |-
          response = client.ml.start_trained_model_deployment(
            model_id: "elastic__distilbert-base-uncased-finetuned-conll03-english",
            wait_for: "started",
            timeout: "1m"
          )
      - lang: PHP
        source: |-
          $resp = $client->ml()->startTrainedModelDeployment([
              "model_id" => "elastic__distilbert-base-uncased-finetuned-conll03-english",
              "wait_for" => "started",
              "timeout" => "1m",
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_ml/trained_models/elastic__distilbert-base-uncased-finetuned-conll03-english/deployment/_start?wait_for=started&timeout=1m"'
      - lang: Java
        source: |
          client.ml().startTrainedModelDeployment(s -> s
              .modelId("elastic__distilbert-base-uncased-finetuned-conll03-english")
              .timeout(t -> t
                  .offset(1)
              )
              .waitFor(DeploymentAllocationState.Started)
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_ml/data_frame/analytics/{id}/_stop":
    post:
      tags:
      - ml data frame
      summary: Stop data frame analytics jobs
      description: |
        A data frame analytics job can be started and stopped multiple times
        throughout its lifecycle.

        ## Required authorization

        * Cluster privileges: `manage_ml`
      operationId: ml-stop-data-frame-analytics
      parameters:
      - in: path
        name: id
        description: |-
          Identifier for the data frame analytics job. This identifier can contain
          lowercase alphanumeric characters (a-z and 0-9), hyphens, and
          underscores. It must start and end with alphanumeric characters.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: allow_no_match
        description: |-
          Specifies what to do when the request:

          1. Contains wildcard expressions and there are no data frame analytics
          jobs that match.
          2. Contains the _all string or no identifiers and there are no matches.
          3. Contains wildcard expressions and there are only partial matches.

          The default value is true, which returns an empty data_frame_analytics
          array when there are no matches and the subset of results when there are
          partial matches. If this parameter is false, the request returns a 404
          status code when there are no matches or only partial matches.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: force
        description: If true, the data frame analytics job is stopped forcefully.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: timeout
        description: |-
          Controls the amount of time to wait until the data frame analytics job
          stops. Defaults to 20 seconds.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  description: If provided, must be the same identifier as in the
                    path.
                  allOf:
                  - "$ref": "#/components/schemas/_types.Id"
                allow_no_match:
                  description: |-
                    Specifies what to do when the request:

                    1. Contains wildcard expressions and there are no data frame analytics
                    jobs that match.
                    2. Contains the _all string or no identifiers and there are no matches.
                    3. Contains wildcard expressions and there are only partial matches.

                    The default value is true, which returns an empty data_frame_analytics
                    array when there are no matches and the subset of results when there are
                    partial matches. If this parameter is false, the request returns a 404
                    status code when there are no matches or only partial matches.
                  default: true
                  type: boolean
                force:
                  description: If true, the data frame analytics job is stopped forcefully.
                  default: false
                  type: boolean
                timeout:
                  description: |-
                    Controls the amount of time to wait until the data frame analytics job
                    stops. Defaults to 20 seconds.
                  default: 20s
                  allOf:
                  - "$ref": "#/components/schemas/_types.Duration"
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  stopped:
                    type: boolean
                required:
                - stopped
      x-state: Generally available; Added in 7.3.0
      x-codeSamples:
      - lang: Console
        source: 'POST _ml/data_frame/analytics/loganalytics/_stop

          '
      - lang: Python
        source: |-
          resp = client.ml.stop_data_frame_analytics(
              id="loganalytics",
          )
      - lang: JavaScript
        source: |-
          const response = await client.ml.stopDataFrameAnalytics({
            id: "loganalytics",
          });
      - lang: Ruby
        source: |-
          response = client.ml.stop_data_frame_analytics(
            id: "loganalytics"
          )
      - lang: PHP
        source: |-
          $resp = $client->ml()->stopDataFrameAnalytics([
              "id" => "loganalytics",
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_ml/data_frame/analytics/loganalytics/_stop"'
      - lang: Java
        source: |
          client.ml().stopDataFrameAnalytics(s -> s
              .id("loganalytics")
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_ml/datafeeds/{datafeed_id}/_stop":
    post:
      tags:
      - ml anomaly
      summary: Stop datafeeds
      description: |
        A datafeed that is stopped ceases to retrieve data from Elasticsearch. A datafeed can be started and stopped
        multiple times throughout its lifecycle.

        ## Required authorization

        * Cluster privileges: `manage_ml`
      operationId: ml-stop-datafeed
      parameters:
      - in: path
        name: datafeed_id
        description: |-
          Identifier for the datafeed. You can stop multiple datafeeds in a single API request by using a comma-separated
          list of datafeeds or a wildcard expression. You can close all datafeeds by using `_all` or by specifying `*` as
          the identifier.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: allow_no_match
        description: |-
          Specifies what to do when the request:

          * Contains wildcard expressions and there are no datafeeds that match.
          * Contains the `_all` string or no identifiers and there are no matches.
          * Contains wildcard expressions and there are only partial matches.

          If `true`, the API returns an empty datafeeds array when there are no matches and the subset of results when
          there are partial matches. If `false`, the API returns a 404 status code when there are no matches or only
          partial matches.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: force
        description: If `true`, the datafeed is stopped forcefully.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: timeout
        description: Specifies the amount of time to wait until a datafeed stops.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: close_job
        description: If `true` the job associated with the datafeed is closed.
        deprecated: false
        schema:
          type: boolean
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                allow_no_match:
                  description: Refer to the description for the `allow_no_match` query
                    parameter.
                  default: true
                  type: boolean
                force:
                  description: Refer to the description for the `force` query parameter.
                  default: false
                  type: boolean
                timeout:
                  description: Refer to the description for the `timeout` query parameter.
                  default: 20s
                  allOf:
                  - "$ref": "#/components/schemas/_types.Duration"
                close_job:
                  description: Refer to the description for the `close_job` query
                    parameter.
                  default: false
                  type: boolean
            examples:
              MlStopDatafeedExample1:
                description: An example body for a `POST _ml/datafeeds/datafeed-low_request_rate/_stop`
                  request.
                value: |-
                  {
                    "timeout": "30s"
                  }
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  stopped:
                    type: boolean
                required:
                - stopped
      x-state: Generally available; Added in 5.4.0
      x-codeSamples:
      - lang: Console
        source: |-
          POST _ml/datafeeds/datafeed-low_request_rate/_stop
          {
            "timeout": "30s"
          }
      - lang: Python
        source: |-
          resp = client.ml.stop_datafeed(
              datafeed_id="datafeed-low_request_rate",
              timeout="30s",
          )
      - lang: JavaScript
        source: |-
          const response = await client.ml.stopDatafeed({
            datafeed_id: "datafeed-low_request_rate",
            timeout: "30s",
          });
      - lang: Ruby
        source: |-
          response = client.ml.stop_datafeed(
            datafeed_id: "datafeed-low_request_rate",
            body: {
              "timeout": "30s"
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->ml()->stopDatafeed([
              "datafeed_id" => "datafeed-low_request_rate",
              "body" => [
                  "timeout" => "30s",
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"timeout":"30s"}'' "$ELASTICSEARCH_URL/_ml/datafeeds/datafeed-low_request_rate/_stop"'
      - lang: Java
        source: |
          client.ml().stopDatafeed(s -> s
              .datafeedId("datafeed-low_request_rate")
              .timeout(t -> t
                  .time("30s")
              )
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_ml/trained_models/{model_id}/deployment/_stop":
    post:
      tags:
      - ml trained model
      summary: Stop a trained model deployment
      description: |2


        ## Required authorization

        * Cluster privileges: `manage_ml`
      operationId: ml-stop-trained-model-deployment
      parameters:
      - in: path
        name: model_id
        description: The unique identifier of the trained model.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: allow_no_match
        description: |-
          Specifies what to do when the request: contains wildcard expressions and there are no deployments that match;
          contains the  `_all` string or no identifiers and there are no matches; or contains wildcard expressions and
          there are only partial matches. By default, it returns an empty array when there are no matches and the subset of results when there are partial matches.
          If `false`, the request returns a 404 status code when there are no matches or only partial matches.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: force
        description: |-
          Forcefully stops the deployment, even if it is used by ingest pipelines. You can't use these pipelines until you
          restart the model deployment.
        deprecated: false
        schema:
          type: boolean
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  description: If provided, must be the same identifier as in the
                    path.
                  allOf:
                  - "$ref": "#/components/schemas/_types.Id"
                allow_no_match:
                  description: |-
                    Specifies what to do when the request: contains wildcard expressions and there are no deployments that match;
                    contains the  `_all` string or no identifiers and there are no matches; or contains wildcard expressions and
                    there are only partial matches. By default, it returns an empty array when there are no matches and the subset of results when there are partial matches.
                    If `false`, the request returns a 404 status code when there are no matches or only partial matches.
                  default: true
                  type: boolean
                force:
                  description: |-
                    Forcefully stops the deployment, even if it is used by ingest pipelines. You can't use these pipelines until you
                    restart the model deployment.
                  default: false
                  type: boolean
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  stopped:
                    type: boolean
                required:
                - stopped
      x-state: Generally available; Added in 8.0.0
      x-codeSamples:
      - lang: Console
        source: 'POST _ml/trained_models/my_model_for_search/deployment/_stop

          '
      - lang: Python
        source: |-
          resp = client.ml.stop_trained_model_deployment(
              model_id="my_model_for_search",
          )
      - lang: JavaScript
        source: |-
          const response = await client.ml.stopTrainedModelDeployment({
            model_id: "my_model_for_search",
          });
      - lang: Ruby
        source: |-
          response = client.ml.stop_trained_model_deployment(
            model_id: "my_model_for_search"
          )
      - lang: PHP
        source: |-
          $resp = $client->ml()->stopTrainedModelDeployment([
              "model_id" => "my_model_for_search",
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_ml/trained_models/my_model_for_search/deployment/_stop"'
      - lang: Java
        source: |
          client.ml().stopTrainedModelDeployment(s -> s
              .modelId("my_model_for_search")
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_ml/data_frame/analytics/{id}/_update":
    post:
      tags:
      - ml data frame
      summary: Update a data frame analytics job
      description: |2


        ## Required authorization

        * Index privileges: `read`,`create_index`,`manage`,`index`,`view_index_metadata`
        * Cluster privileges: `manage_ml`
      operationId: ml-update-data-frame-analytics
      parameters:
      - in: path
        name: id
        description: |-
          Identifier for the data frame analytics job. This identifier can contain
          lowercase alphanumeric characters (a-z and 0-9), hyphens, and
          underscores. It must start and end with alphanumeric characters.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                description:
                  description: A description of the job.
                  type: string
                model_memory_limit:
                  description: |-
                    The approximate maximum amount of memory resources that are permitted for
                    analytical processing. If your `elasticsearch.yml` file contains an
                    `xpack.ml.max_model_memory_limit` setting, an error occurs when you try
                    to create data frame analytics jobs that have `model_memory_limit` values
                    greater than that setting.
                  default: 1gb
                  type: string
                max_num_threads:
                  description: |-
                    The maximum number of threads to be used by the analysis. Using more
                    threads may decrease the time necessary to complete the analysis at the
                    cost of using more CPU. Note that the process may use additional threads
                    for operational functionality other than the analysis itself.
                  default: 1
                  type: number
                allow_lazy_start:
                  description: |-
                    Specifies whether this job can start when there is insufficient machine
                    learning node capacity for it to be immediately assigned to a node.
                  default: false
                  type: boolean
            examples:
              MlUpdateDataFrameAnalyticsExample1:
                description: An example body for a `POST _ml/data_frame/analytics/loganalytics/_update`
                  request.
                value: |-
                  {
                    "model_memory_limit": "200mb"
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  authorization:
                    allOf:
                    - "$ref": "#/components/schemas/ml._types.DataframeAnalyticsAuthorization"
                  allow_lazy_start:
                    type: boolean
                  analysis:
                    allOf:
                    - "$ref": "#/components/schemas/ml._types.DataframeAnalysisContainer"
                  analyzed_fields:
                    allOf:
                    - "$ref": "#/components/schemas/ml._types.DataframeAnalysisAnalyzedFields"
                  create_time:
                    type: number
                  description:
                    type: string
                  dest:
                    allOf:
                    - "$ref": "#/components/schemas/ml._types.DataframeAnalyticsDestination"
                  id:
                    allOf:
                    - "$ref": "#/components/schemas/_types.Id"
                  max_num_threads:
                    type: number
                  model_memory_limit:
                    type: string
                  source:
                    allOf:
                    - "$ref": "#/components/schemas/ml._types.DataframeAnalyticsSource"
                  version:
                    allOf:
                    - "$ref": "#/components/schemas/_types.VersionString"
                required:
                - allow_lazy_start
                - analysis
                - create_time
                - dest
                - id
                - max_num_threads
                - model_memory_limit
                - source
                - version
      x-state: Generally available; Added in 7.3.0
      x-codeSamples:
      - lang: Console
        source: |-
          POST _ml/data_frame/analytics/loganalytics/_update
          {
            "model_memory_limit": "200mb"
          }
      - lang: Python
        source: |-
          resp = client.ml.update_data_frame_analytics(
              id="loganalytics",
              model_memory_limit="200mb",
          )
      - lang: JavaScript
        source: |-
          const response = await client.ml.updateDataFrameAnalytics({
            id: "loganalytics",
            model_memory_limit: "200mb",
          });
      - lang: Ruby
        source: |-
          response = client.ml.update_data_frame_analytics(
            id: "loganalytics",
            body: {
              "model_memory_limit": "200mb"
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->ml()->updateDataFrameAnalytics([
              "id" => "loganalytics",
              "body" => [
                  "model_memory_limit" => "200mb",
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"model_memory_limit":"200mb"}'' "$ELASTICSEARCH_URL/_ml/data_frame/analytics/loganalytics/_update"'
      - lang: Java
        source: |
          client.ml().updateDataFrameAnalytics(u -> u
              .id("loganalytics")
              .modelMemoryLimit("200mb")
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_ml/datafeeds/{datafeed_id}/_update":
    post:
      tags:
      - ml anomaly
      summary: Update a datafeed
      description: |
        You must stop and start the datafeed for the changes to be applied.
        When Elasticsearch security features are enabled, your datafeed remembers which roles the user who updated it had at
        the time of the update and runs the query using those same roles. If you provide secondary authorization headers,
        those credentials are used instead.

        ## Required authorization

        * Cluster privileges: `manage_ml`
      operationId: ml-update-datafeed
      parameters:
      - in: path
        name: datafeed_id
        description: |-
          A numerical character string that uniquely identifies the datafeed.
          This identifier can contain lowercase alphanumeric characters (a-z and 0-9), hyphens, and underscores.
          It must start and end with alphanumeric characters.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: allow_no_indices
        description: |-
          If `true`, wildcard indices expressions that resolve into no concrete indices are ignored. This includes the
          `_all` string or when no indices are specified.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: expand_wildcards
        description: |+
          Type of index that wildcard patterns can match. If the request can target data streams, this argument determines
          whether wildcard expressions match hidden data streams. Supports comma-separated values.

          Supported values include:
            - `all`: Match any data stream or index, including hidden ones.
            - `open`: Match open, non-hidden indices. Also matches any non-hidden data stream.
            - `closed`: Match closed, non-hidden indices. Also matches any non-hidden data stream. Data streams cannot be closed.
            - `hidden`: Match hidden data streams and hidden indices. Must be combined with `open`, `closed`, or `both`.
            - `none`: Wildcard expressions are not accepted.

        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.ExpandWildcards"
        style: form
      - in: query
        name: ignore_throttled
        description: If `true`, concrete, expanded or aliased indices are ignored
          when frozen.
        deprecated: true
        schema:
          type: boolean
        style: form
      - in: query
        name: ignore_unavailable
        description: If `true`, unavailable indices (missing or closed) are ignored.
        deprecated: false
        schema:
          type: boolean
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                aggregations:
                  description: |-
                    If set, the datafeed performs aggregation searches. Support for aggregations is limited and should be used only
                    with low cardinality data.
                  type: object
                  additionalProperties:
                    "$ref": "#/components/schemas/_types.aggregations.AggregationContainer"
                chunking_config:
                  description: |-
                    Datafeeds might search over long time periods, for several months or years. This search is split into time
                    chunks in order to ensure the load on Elasticsearch is managed. Chunking configuration controls how the size of
                    these time chunks are calculated; it is an advanced configuration option.
                  allOf:
                  - "$ref": "#/components/schemas/ml._types.ChunkingConfig"
                delayed_data_check_config:
                  description: |-
                    Specifies whether the datafeed checks for missing data and the size of the window. The datafeed can optionally
                    search over indices that have already been read in an effort to determine whether any data has subsequently been
                    added to the index. If missing data is found, it is a good indication that the `query_delay` is set too low and
                    the data is being indexed after the datafeed has passed that moment in time. This check runs only on real-time
                    datafeeds.
                  allOf:
                  - "$ref": "#/components/schemas/ml._types.DelayedDataCheckConfig"
                frequency:
                  description: |-
                    The interval at which scheduled queries are made while the datafeed runs in real time. The default value is
                    either the bucket span for short bucket spans, or, for longer bucket spans, a sensible fraction of the bucket
                    span. When `frequency` is shorter than the bucket span, interim results for the last (partial) bucket are
                    written then eventually overwritten by the full bucket results. If the datafeed uses aggregations, this value
                    must be divisible by the interval of the date histogram aggregation.
                  allOf:
                  - "$ref": "#/components/schemas/_types.Duration"
                indices:
                  description: |-
                    An array of index names. Wildcards are supported. If any of the indices are in remote clusters, the machine
                    learning nodes must have the `remote_cluster_client` role.
                  type: array
                  items:
                    type: string
                indices_options:
                  description: Specifies index expansion options that are used during
                    search.
                  allOf:
                  - "$ref": "#/components/schemas/_types.IndicesOptions"
                job_id:
                  allOf:
                  - "$ref": "#/components/schemas/_types.Id"
                max_empty_searches:
                  description: |-
                    If a real-time datafeed has never seen any data (including during any initial training period), it automatically
                    stops and closes the associated job after this many real-time searches return no documents. In other words,
                    it stops after `frequency` times `max_empty_searches` of real-time operation. If not set, a datafeed with no
                    end time that sees no data remains started until it is explicitly stopped. By default, it is not set.
                  type: number
                query:
                  description: |-
                    The Elasticsearch query domain-specific language (DSL). This value corresponds to the query object in an
                    Elasticsearch search POST body. All the options that are supported by Elasticsearch can be used, as this
                    object is passed verbatim to Elasticsearch. Note that if you change the query, the analyzed data is also
                    changed. Therefore, the time required to learn might be long and the understandability of the results is
                    unpredictable. If you want to make significant changes to the source data, it is recommended that you
                    clone the job and datafeed and make the amendments in the clone. Let both run in parallel and close one
                    when you are satisfied with the results of the job.
                  default: '{"match_all": {"boost": 1}}'
                  allOf:
                  - "$ref": "#/components/schemas/_types.query_dsl.QueryContainer"
                query_delay:
                  description: |-
                    The number of seconds behind real time that data is queried. For example, if data from 10:04 a.m. might
                    not be searchable in Elasticsearch until 10:06 a.m., set this property to 120 seconds. The default
                    value is randomly selected between `60s` and `120s`. This randomness improves the query performance
                    when there are multiple jobs running on the same node.
                  allOf:
                  - "$ref": "#/components/schemas/_types.Duration"
                runtime_mappings:
                  description: Specifies runtime fields for the datafeed search.
                  allOf:
                  - "$ref": "#/components/schemas/_types.mapping.RuntimeFields"
                script_fields:
                  description: |-
                    Specifies scripts that evaluate custom expressions and returns script fields to the datafeed.
                    The detector configuration objects in a job can contain functions that use these script fields.
                  type: object
                  additionalProperties:
                    "$ref": "#/components/schemas/_types.ScriptField"
                scroll_size:
                  description: |-
                    The size parameter that is used in Elasticsearch searches when the datafeed does not use aggregations.
                    The maximum value is the value of `index.max_result_window`.
                  default: 1000
                  type: number
            examples:
              MlUpdateDatafeedExample1:
                description: An example body for a `POST _ml/datafeeds/datafeed-test-job/_update`
                  request.
                value: |-
                  {
                    "query": {
                      "term": {
                        "geo.src": "US"
                      }
                    }
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  authorization:
                    allOf:
                    - "$ref": "#/components/schemas/ml._types.DatafeedAuthorization"
                  aggregations:
                    type: object
                    additionalProperties:
                      "$ref": "#/components/schemas/_types.aggregations.AggregationContainer"
                  chunking_config:
                    allOf:
                    - "$ref": "#/components/schemas/ml._types.ChunkingConfig"
                  delayed_data_check_config:
                    allOf:
                    - "$ref": "#/components/schemas/ml._types.DelayedDataCheckConfig"
                  datafeed_id:
                    allOf:
                    - "$ref": "#/components/schemas/_types.Id"
                  frequency:
                    description: 'The interval at which scheduled queries are made
                      while the datafeed runs in real time. The default value is either
                      the bucket span for short bucket spans, or, for longer bucket
                      spans, a sensible fraction of the bucket span. For example:
                      `150s`. When `frequency` is shorter than the bucket span, interim
                      results for the last (partial) bucket are written then eventually
                      overwritten by the full bucket results. If the datafeed uses
                      aggregations, this value must be divisible by the interval of
                      the date histogram aggregation.'
                    allOf:
                    - "$ref": "#/components/schemas/_types.Duration"
                  indices:
                    type: array
                    items:
                      type: string
                  indices_options:
                    allOf:
                    - "$ref": "#/components/schemas/_types.IndicesOptions"
                  job_id:
                    allOf:
                    - "$ref": "#/components/schemas/_types.Id"
                  max_empty_searches:
                    type: number
                  query:
                    allOf:
                    - "$ref": "#/components/schemas/_types.query_dsl.QueryContainer"
                  query_delay:
                    allOf:
                    - "$ref": "#/components/schemas/_types.Duration"
                  runtime_mappings:
                    allOf:
                    - "$ref": "#/components/schemas/_types.mapping.RuntimeFields"
                  script_fields:
                    type: object
                    additionalProperties:
                      "$ref": "#/components/schemas/_types.ScriptField"
                  scroll_size:
                    type: number
                required:
                - chunking_config
                - datafeed_id
                - indices
                - job_id
                - query
                - query_delay
                - scroll_size
      x-state: Generally available; Added in 6.4.0
      x-codeSamples:
      - lang: Console
        source: |-
          POST _ml/datafeeds/datafeed-test-job/_update
          {
            "query": {
              "term": {
                "geo.src": "US"
              }
            }
          }
      - lang: Python
        source: |-
          resp = client.ml.update_datafeed(
              datafeed_id="datafeed-test-job",
              query={
                  "term": {
                      "geo.src": "US"
                  }
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.ml.updateDatafeed({
            datafeed_id: "datafeed-test-job",
            query: {
              term: {
                "geo.src": "US",
              },
            },
          });
      - lang: Ruby
        source: |-
          response = client.ml.update_datafeed(
            datafeed_id: "datafeed-test-job",
            body: {
              "query": {
                "term": {
                  "geo.src": "US"
                }
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->ml()->updateDatafeed([
              "datafeed_id" => "datafeed-test-job",
              "body" => [
                  "query" => [
                      "term" => [
                          "geo.src" => "US",
                      ],
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"query":{"term":{"geo.src":"US"}}}'' "$ELASTICSEARCH_URL/_ml/datafeeds/datafeed-test-job/_update"'
      - lang: Java
        source: |
          client.ml().updateDatafeed(u -> u
              .datafeedId("datafeed-test-job")
              .query(q -> q
                  .term(t -> t
                      .field("geo.src")
                      .value(FieldValue.of("US"))
                  )
              )
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_ml/filters/{filter_id}/_update":
    post:
      tags:
      - ml anomaly
      summary: Update a filter
      description: |
        Updates the description of a filter, adds items, or removes items from the list.

        ## Required authorization

        * Cluster privileges: `manage_ml`
      operationId: ml-update-filter
      parameters:
      - in: path
        name: filter_id
        description: A string that uniquely identifies a filter.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                add_items:
                  description: The items to add to the filter.
                  type: array
                  items:
                    type: string
                description:
                  description: A description for the filter.
                  type: string
                remove_items:
                  description: The items to remove from the filter.
                  type: array
                  items:
                    type: string
            examples:
              MlUpdateFilterExample1:
                description: An example body for a `POST _ml/filters/safe_domains/_update`
                  request.
                value: |-
                  {
                    "description": "Updated list of domains",
                    "add_items": ["*.myorg.com"],
                    "remove_items": ["wikipedia.org"]
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  description:
                    type: string
                  filter_id:
                    allOf:
                    - "$ref": "#/components/schemas/_types.Id"
                  items:
                    type: array
                    items:
                      type: string
                required:
                - description
                - filter_id
                - items
      x-state: Generally available; Added in 6.4.0
      x-codeSamples:
      - lang: Console
        source: |-
          POST _ml/filters/safe_domains/_update
          {
            "description": "Updated list of domains",
            "add_items": ["*.myorg.com"],
            "remove_items": ["wikipedia.org"]
          }
      - lang: Python
        source: |-
          resp = client.ml.update_filter(
              filter_id="safe_domains",
              description="Updated list of domains",
              add_items=[
                  "*.myorg.com"
              ],
              remove_items=[
                  "wikipedia.org"
              ],
          )
      - lang: JavaScript
        source: |-
          const response = await client.ml.updateFilter({
            filter_id: "safe_domains",
            description: "Updated list of domains",
            add_items: ["*.myorg.com"],
            remove_items: ["wikipedia.org"],
          });
      - lang: Ruby
        source: |-
          response = client.ml.update_filter(
            filter_id: "safe_domains",
            body: {
              "description": "Updated list of domains",
              "add_items": [
                "*.myorg.com"
              ],
              "remove_items": [
                "wikipedia.org"
              ]
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->ml()->updateFilter([
              "filter_id" => "safe_domains",
              "body" => [
                  "description" => "Updated list of domains",
                  "add_items" => array(
                      "*.myorg.com",
                  ),
                  "remove_items" => array(
                      "wikipedia.org",
                  ),
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"description":"Updated list of domains","add_items":["*.myorg.com"],"remove_items":["wikipedia.org"]}''
          "$ELASTICSEARCH_URL/_ml/filters/safe_domains/_update"'
      - lang: Java
        source: |
          client.ml().updateFilter(u -> u
              .addItems("*.myorg.com")
              .description("Updated list of domains")
              .filterId("safe_domains")
              .removeItems("wikipedia.org")
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_ml/anomaly_detectors/{job_id}/_update":
    post:
      tags:
      - ml anomaly
      summary: Update an anomaly detection job
      description: |
        Updates certain properties of an anomaly detection job.

        ## Required authorization

        * Cluster privileges: `manage_ml`
      operationId: ml-update-job
      parameters:
      - in: path
        name: job_id
        description: Identifier for the job.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                allow_lazy_open:
                  description: |-
                    Advanced configuration option. Specifies whether this job can open when
                    there is insufficient machine learning node capacity for it to be
                    immediately assigned to a node. If `false` and a machine learning node
                    with capacity to run the job cannot immediately be found, the open
                    anomaly detection jobs API returns an error. However, this is also
                    subject to the cluster-wide `xpack.ml.max_lazy_ml_nodes` setting. If this
                    option is set to `true`, the open anomaly detection jobs API does not
                    return an error and the job waits in the opening state until sufficient
                    machine learning node capacity is available.
                  default: false
                  type: boolean
                analysis_limits:
                  allOf:
                  - "$ref": "#/components/schemas/ml._types.AnalysisMemoryLimit"
                background_persist_interval:
                  description: |-
                    Advanced configuration option. The time between each periodic persistence
                    of the model.
                    The default value is a randomized value between 3 to 4 hours, which
                    avoids all jobs persisting at exactly the same time. The smallest allowed
                    value is 1 hour.
                    For very large models (several GB), persistence could take 10-20 minutes,
                    so do not set the value too low.
                    If the job is open when you make the update, you must stop the datafeed,
                    close the job, then reopen the job and restart the datafeed for the
                    changes to take effect.
                  allOf:
                  - "$ref": "#/components/schemas/_types.Duration"
                custom_settings:
                  description: |-
                    Advanced configuration option. Contains custom meta data about the job.
                    For example, it can contain custom URL information as shown in Adding
                    custom URLs to machine learning results.
                  type: object
                  additionalProperties:
                    type: object
                categorization_filters:
                  type: array
                  items:
                    type: string
                description:
                  description: A description of the job.
                  type: string
                model_plot_config:
                  allOf:
                  - "$ref": "#/components/schemas/ml._types.ModelPlotConfig"
                model_prune_window:
                  allOf:
                  - "$ref": "#/components/schemas/_types.Duration"
                daily_model_snapshot_retention_after_days:
                  description: |-
                    Advanced configuration option, which affects the automatic removal of old
                    model snapshots for this job. It specifies a period of time (in days)
                    after which only the first snapshot per day is retained. This period is
                    relative to the timestamp of the most recent snapshot for this job. Valid
                    values range from 0 to `model_snapshot_retention_days`. For jobs created
                    before version 7.8.0, the default value matches
                    `model_snapshot_retention_days`.
                  default: 1
                  type: number
                model_snapshot_retention_days:
                  description: |-
                    Advanced configuration option, which affects the automatic removal of old
                    model snapshots for this job. It specifies the maximum period of time (in
                    days) that snapshots are retained. This period is relative to the
                    timestamp of the most recent snapshot for this job.
                  default: 10
                  type: number
                renormalization_window_days:
                  description: |-
                    Advanced configuration option. The period over which adjustments to the
                    score are applied, as new data is seen.
                  type: number
                results_retention_days:
                  description: |-
                    Advanced configuration option. The period of time (in days) that results
                    are retained. Age is calculated relative to the timestamp of the latest
                    bucket result. If this property has a non-null value, once per day at
                    00:30 (server time), results that are the specified number of days older
                    than the latest bucket result are deleted from Elasticsearch. The default
                    value is null, which means all results are retained.
                  type: number
                groups:
                  description: A list of job groups. A job can belong to no groups
                    or many.
                  type: array
                  items:
                    type: string
                detectors:
                  description: An array of detector update objects.
                  type: array
                  items:
                    "$ref": "#/components/schemas/ml._types.DetectorUpdate"
                per_partition_categorization:
                  description: Settings related to how categorization interacts with
                    partition fields.
                  allOf:
                  - "$ref": "#/components/schemas/ml._types.PerPartitionCategorization"
            examples:
              MlUpdateJobExample1:
                description: An example body for a `POST _ml/anomaly_detectors/low_request_rate/_update`
                  request.
                value: |-
                  {
                    "description":"An updated job",
                    "detectors": {
                      "detector_index": 0,
                      "description": "An updated detector description"
                    },
                    "groups": ["kibana_sample_data","kibana_sample_web_logs"],
                    "model_plot_config": {
                      "enabled": true
                    },
                    "renormalization_window_days": 30,
                    "background_persist_interval": "2h",
                    "model_snapshot_retention_days": 7,
                    "results_retention_days": 60
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  allow_lazy_open:
                    type: boolean
                  analysis_config:
                    allOf:
                    - "$ref": "#/components/schemas/ml._types.AnalysisConfigRead"
                  analysis_limits:
                    allOf:
                    - "$ref": "#/components/schemas/ml._types.AnalysisLimits"
                  background_persist_interval:
                    allOf:
                    - "$ref": "#/components/schemas/_types.Duration"
                  create_time:
                    allOf:
                    - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
                  finished_time:
                    allOf:
                    - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
                  custom_settings:
                    type: object
                    additionalProperties:
                      type: string
                  daily_model_snapshot_retention_after_days:
                    type: number
                  data_description:
                    allOf:
                    - "$ref": "#/components/schemas/ml._types.DataDescription"
                  datafeed_config:
                    allOf:
                    - "$ref": "#/components/schemas/ml._types.Datafeed"
                  description:
                    type: string
                  groups:
                    type: array
                    items:
                      type: string
                  job_id:
                    allOf:
                    - "$ref": "#/components/schemas/_types.Id"
                  job_type:
                    type: string
                  job_version:
                    allOf:
                    - "$ref": "#/components/schemas/_types.VersionString"
                  model_plot_config:
                    allOf:
                    - "$ref": "#/components/schemas/ml._types.ModelPlotConfig"
                  model_snapshot_id:
                    allOf:
                    - "$ref": "#/components/schemas/_types.Id"
                  model_snapshot_retention_days:
                    type: number
                  renormalization_window_days:
                    type: number
                  results_index_name:
                    allOf:
                    - "$ref": "#/components/schemas/_types.IndexName"
                  results_retention_days:
                    type: number
                required:
                - allow_lazy_open
                - analysis_config
                - analysis_limits
                - create_time
                - daily_model_snapshot_retention_after_days
                - data_description
                - job_id
                - job_type
                - job_version
                - model_snapshot_retention_days
                - results_index_name
      x-state: Generally available; Added in 5.5.0
      x-codeSamples:
      - lang: Console
        source: |-
          POST _ml/anomaly_detectors/low_request_rate/_update
          {
            "description":"An updated job",
            "detectors": {
              "detector_index": 0,
              "description": "An updated detector description"
            },
            "groups": ["kibana_sample_data","kibana_sample_web_logs"],
            "model_plot_config": {
              "enabled": true
            },
            "renormalization_window_days": 30,
            "background_persist_interval": "2h",
            "model_snapshot_retention_days": 7,
            "results_retention_days": 60
          }
      - lang: Python
        source: |-
          resp = client.ml.update_job(
              job_id="low_request_rate",
              description="An updated job",
              detectors={
                  "detector_index": 0,
                  "description": "An updated detector description"
              },
              groups=[
                  "kibana_sample_data",
                  "kibana_sample_web_logs"
              ],
              model_plot_config={
                  "enabled": True
              },
              renormalization_window_days=30,
              background_persist_interval="2h",
              model_snapshot_retention_days=7,
              results_retention_days=60,
          )
      - lang: JavaScript
        source: |-
          const response = await client.ml.updateJob({
            job_id: "low_request_rate",
            description: "An updated job",
            detectors: {
              detector_index: 0,
              description: "An updated detector description",
            },
            groups: ["kibana_sample_data", "kibana_sample_web_logs"],
            model_plot_config: {
              enabled: true,
            },
            renormalization_window_days: 30,
            background_persist_interval: "2h",
            model_snapshot_retention_days: 7,
            results_retention_days: 60,
          });
      - lang: Ruby
        source: |-
          response = client.ml.update_job(
            job_id: "low_request_rate",
            body: {
              "description": "An updated job",
              "detectors": {
                "detector_index": 0,
                "description": "An updated detector description"
              },
              "groups": [
                "kibana_sample_data",
                "kibana_sample_web_logs"
              ],
              "model_plot_config": {
                "enabled": true
              },
              "renormalization_window_days": 30,
              "background_persist_interval": "2h",
              "model_snapshot_retention_days": 7,
              "results_retention_days": 60
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->ml()->updateJob([
              "job_id" => "low_request_rate",
              "body" => [
                  "description" => "An updated job",
                  "detectors" => [
                      "detector_index" => 0,
                      "description" => "An updated detector description",
                  ],
                  "groups" => array(
                      "kibana_sample_data",
                      "kibana_sample_web_logs",
                  ),
                  "model_plot_config" => [
                      "enabled" => true,
                  ],
                  "renormalization_window_days" => 30,
                  "background_persist_interval" => "2h",
                  "model_snapshot_retention_days" => 7,
                  "results_retention_days" => 60,
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"description":"An updated job","detectors":{"detector_index":0,"description":"An
          updated detector description"},"groups":["kibana_sample_data","kibana_sample_web_logs"],"model_plot_config":{"enabled":true},"renormalization_window_days":30,"background_persist_interval":"2h","model_snapshot_retention_days":7,"results_retention_days":60}''
          "$ELASTICSEARCH_URL/_ml/anomaly_detectors/low_request_rate/_update"'
      - lang: Java
        source: |
          client.ml().updateJob(u -> u
              .backgroundPersistInterval(b -> b
                  .time("2h")
              )
              .description("An updated job")
              .detectors(d -> d
                  .detectorIndex(0)
                  .description("An updated detector description")
              )
              .groups(List.of("kibana_sample_data","kibana_sample_web_logs"))
              .jobId("low_request_rate")
              .modelPlotConfig(m -> m
                  .enabled(true)
              )
              .modelSnapshotRetentionDays(7L)
              .renormalizationWindowDays(30L)
              .resultsRetentionDays(60L)
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_ml/anomaly_detectors/{job_id}/model_snapshots/{snapshot_id}/_update":
    post:
      tags:
      - ml anomaly
      summary: Update a snapshot
      description: |
        Updates certain properties of a snapshot.

        ## Required authorization

        * Cluster privileges: `manage_ml`
      operationId: ml-update-model-snapshot
      parameters:
      - in: path
        name: job_id
        description: Identifier for the anomaly detection job.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: path
        name: snapshot_id
        description: Identifier for the model snapshot.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                description:
                  description: A description of the model snapshot.
                  type: string
                retain:
                  description: |-
                    If `true`, this snapshot will not be deleted during automatic cleanup of
                    snapshots older than `model_snapshot_retention_days`. However, this
                    snapshot will be deleted when the job is deleted.
                  default: false
                  type: boolean
            examples:
              MlUpdateModelSnapshotExample1:
                description: An example body for a `POST` request.
                value: |-
                  _ml/anomaly_detectors/it_ops_new_logs/model_snapshots/1491852978/_update
                  {
                    "description": "Snapshot 1",
                    "retain": true
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  acknowledged:
                    type: boolean
                  model:
                    allOf:
                    - "$ref": "#/components/schemas/ml._types.ModelSnapshot"
                required:
                - acknowledged
                - model
      x-state: Generally available; Added in 5.4.0
      x-codeSamples:
      - lang: Console
        source: |-
          POST
          _ml/anomaly_detectors/it_ops_new_logs/model_snapshots/1491852978/_update
          {
            "description": "Snapshot 1",
            "retain": true
          }
      - lang: Python
        source: |-
          resp = client.ml.update_model_snapshot(
              job_id="it_ops_new_logs",
              snapshot_id="1491852978",
              description="Snapshot 1",
              retain=True,
          )
      - lang: JavaScript
        source: |-
          const response = await client.ml.updateModelSnapshot({
            job_id: "it_ops_new_logs",
            snapshot_id: 1491852978,
            description: "Snapshot 1",
            retain: true,
          });
      - lang: Ruby
        source: |-
          response = client.ml.update_model_snapshot(
            job_id: "it_ops_new_logs",
            snapshot_id: "1491852978",
            body: {
              "description": "Snapshot 1",
              "retain": true
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->ml()->updateModelSnapshot([
              "job_id" => "it_ops_new_logs",
              "snapshot_id" => "1491852978",
              "body" => [
                  "description" => "Snapshot 1",
                  "retain" => true,
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"description":"Snapshot 1","retain":true}'' "$ELASTICSEARCH_URL/_ml/anomaly_detectors/it_ops_new_logs/model_snapshots/1491852978/_update"'
      - lang: Java
        source: |
          client.ml().updateModelSnapshot(u -> u
              .description("Snapshot 1")
              .jobId("it_ops_new_logs")
              .retain(true)
              .snapshotId("1491852978")
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_ml/trained_models/{model_id}/deployment/_update":
    post:
      tags:
      - ml trained model
      summary: Update a trained model deployment
      description: |2


        ## Required authorization

        * Cluster privileges: `manage_ml`
      operationId: ml-update-trained-model-deployment
      parameters:
      - in: path
        name: model_id
        description: The unique identifier of the trained model. Currently, only PyTorch
          models are supported.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: number_of_allocations
        description: |-
          The number of model allocations on each node where the model is deployed.
          All allocations on a node share the same copy of the model in memory but use
          a separate set of threads to evaluate the model.
          Increasing this value generally increases the throughput.
          If this setting is greater than the number of hardware threads
          it will automatically be changed to a value less than the number of hardware threads.
        deprecated: false
        schema:
          type: number
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                number_of_allocations:
                  description: |-
                    The number of model allocations on each node where the model is deployed.
                    All allocations on a node share the same copy of the model in memory but use
                    a separate set of threads to evaluate the model.
                    Increasing this value generally increases the throughput.
                    If this setting is greater than the number of hardware threads
                    it will automatically be changed to a value less than the number of hardware threads.
                    If adaptive_allocations is enabled, do not set this value, because it’s automatically set.
                  default: 1
                  type: number
                adaptive_allocations:
                  description: |-
                    Adaptive allocations configuration. When enabled, the number of allocations
                    is set based on the current load.
                    If adaptive_allocations is enabled, do not set the number of allocations manually.
                  allOf:
                  - "$ref": "#/components/schemas/ml._types.AdaptiveAllocationsSettings"
            examples:
              MlUpdateTrainedModelDeploymentExample1:
                description: An example body for a `POST _ml/trained_models/elastic__distilbert-base-uncased-finetuned-conll03-english/deployment/_update`
                  request.
                value: |-
                  {
                    "number_of_allocations": 4
                  }
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  assignment:
                    allOf:
                    - "$ref": "#/components/schemas/ml._types.TrainedModelAssignment"
                required:
                - assignment
      x-state: Generally available; Added in 8.6.0
      x-codeSamples:
      - lang: Console
        source: |-
          POST _ml/trained_models/elastic__distilbert-base-uncased-finetuned-conll03-english/deployment/_update
          {
            "number_of_allocations": 4
          }
      - lang: Python
        source: |-
          resp = client.ml.update_trained_model_deployment(
              model_id="elastic__distilbert-base-uncased-finetuned-conll03-english",
              number_of_allocations=4,
          )
      - lang: JavaScript
        source: |-
          const response = await client.ml.updateTrainedModelDeployment({
            model_id: "elastic__distilbert-base-uncased-finetuned-conll03-english",
            number_of_allocations: 4,
          });
      - lang: Ruby
        source: |-
          response = client.ml.update_trained_model_deployment(
            model_id: "elastic__distilbert-base-uncased-finetuned-conll03-english",
            body: {
              "number_of_allocations": 4
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->ml()->updateTrainedModelDeployment([
              "model_id" => "elastic__distilbert-base-uncased-finetuned-conll03-english",
              "body" => [
                  "number_of_allocations" => 4,
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"number_of_allocations":4}'' "$ELASTICSEARCH_URL/_ml/trained_models/elastic__distilbert-base-uncased-finetuned-conll03-english/deployment/_update"'
      - lang: Java
        source: |
          client.ml().updateTrainedModelDeployment(u -> u
              .modelId("elastic__distilbert-base-uncased-finetuned-conll03-english")
              .numberOfAllocations(4)
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/_ml/anomaly_detectors/{job_id}/model_snapshots/{snapshot_id}/_upgrade":
    post:
      tags:
      - ml anomaly
      summary: Upgrade a snapshot
      description: |
        Upgrade an anomaly detection model snapshot to the latest major version.
        Over time, older snapshot formats are deprecated and removed. Anomaly
        detection jobs support only snapshots that are from the current or previous
        major version.
        This API provides a means to upgrade a snapshot to the current major version.
        This aids in preparing the cluster for an upgrade to the next major version.
        Only one snapshot per anomaly detection job can be upgraded at a time and the
        upgraded snapshot cannot be the current snapshot of the anomaly detection
        job.

        ## Required authorization

        * Cluster privileges: `manage_ml`
      operationId: ml-upgrade-job-snapshot
      parameters:
      - in: path
        name: job_id
        description: Identifier for the anomaly detection job.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: path
        name: snapshot_id
        description: A numerical character string that uniquely identifies the model
          snapshot.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: wait_for_completion
        description: |-
          When true, the API won’t respond until the upgrade is complete.
          Otherwise, it responds as soon as the upgrade task is assigned to a node.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: timeout
        description: Controls the time to wait for the request to complete.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  node:
                    description: The ID of the node that the upgrade task was started
                      on if it is still running. In serverless this will be the "serverless".
                    allOf:
                    - "$ref": "#/components/schemas/_types.NodeId"
                  completed:
                    description: When true, this means the task is complete. When
                      false, it is still running.
                    type: boolean
                required:
                - node
                - completed
      x-state: Generally available; Added in 5.4.0
      x-codeSamples:
      - lang: Console
        source: 'POST _ml/anomaly_detectors/low_request_rate/model_snapshots/1828371/_upgrade?timeout=45m&wait_for_completion=true

          '
      - lang: Python
        source: |-
          resp = client.ml.upgrade_job_snapshot(
              job_id="low_request_rate",
              snapshot_id="1828371",
              timeout="45m",
              wait_for_completion=True,
          )
      - lang: JavaScript
        source: |-
          const response = await client.ml.upgradeJobSnapshot({
            job_id: "low_request_rate",
            snapshot_id: 1828371,
            timeout: "45m",
            wait_for_completion: "true",
          });
      - lang: Ruby
        source: |-
          response = client.ml.upgrade_job_snapshot(
            job_id: "low_request_rate",
            snapshot_id: "1828371",
            timeout: "45m",
            wait_for_completion: "true"
          )
      - lang: PHP
        source: |-
          $resp = $client->ml()->upgradeJobSnapshot([
              "job_id" => "low_request_rate",
              "snapshot_id" => "1828371",
              "timeout" => "45m",
              "wait_for_completion" => "true",
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_ml/anomaly_detectors/low_request_rate/model_snapshots/1828371/_upgrade?timeout=45m&wait_for_completion=true"'
      - lang: Java
        source: |
          client.ml().upgradeJobSnapshot(u -> u
              .jobId("low_request_rate")
              .snapshotId("1828371")
              .timeout(t -> t
                  .offset(45)
              )
              .waitForCompletion(true)
          );
      x-metaTags:
      - content: Elasticsearch, Machine Learning
        name: product_name
  "/{index}/_msearch":
    post:
      tags:
      - search
      summary: 'Run multiple searches

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_msearch</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_msearch</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/{index}/_msearch</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/{index}/_msearch</span>\n
        \                     </div>\n                    \n\nThe format of the request
        is similar to the bulk API format and makes use of the newline delimited JSON
        (NDJSON) format.\nThe structure is as follows:\n\n```\nheader\\n\nbody\\n\nheader\\n\nbody\\n\n```\n\nThis
        structure is specifically optimized to reduce parsing if a specific search
        ends up redirected to another node.\n\nIMPORTANT: The final line of data must
        end with a newline character `\\n`.\nEach newline character may be preceded
        by a carriage return `\\r`.\nWhen sending requests to this endpoint the `Content-Type`
        header should be set to `application/x-ndjson`.\n\n## Required authorization\n\n*
        Index privileges: `read`\n"
      operationId: msearch
      parameters:
      - "$ref": "#/components/parameters/msearch-index"
      - "$ref": "#/components/parameters/msearch-allow_no_indices"
      - "$ref": "#/components/parameters/msearch-ccs_minimize_roundtrips"
      - "$ref": "#/components/parameters/msearch-expand_wildcards"
      - "$ref": "#/components/parameters/msearch-ignore_throttled"
      - "$ref": "#/components/parameters/msearch-ignore_unavailable"
      - "$ref": "#/components/parameters/msearch-include_named_queries_score"
      - "$ref": "#/components/parameters/msearch-index_"
      - "$ref": "#/components/parameters/msearch-max_concurrent_searches"
      - "$ref": "#/components/parameters/msearch-max_concurrent_shard_requests"
      - "$ref": "#/components/parameters/msearch-pre_filter_shard_size"
      - "$ref": "#/components/parameters/msearch-rest_total_hits_as_int"
      - "$ref": "#/components/parameters/msearch-routing"
      - "$ref": "#/components/parameters/msearch-search_type"
      - "$ref": "#/components/parameters/msearch-typed_keys"
      requestBody:
        "$ref": "#/components/requestBodies/msearch"
      responses:
        '200':
          "$ref": "#/components/responses/msearch-200"
      x-state: Generally available; Added in 1.3.0
      x-codeSamples:
      - lang: Console
        source: |-
          GET my-index-000001/_msearch
          { }
          {"query" : {"match" : { "message": "this is a test"}}}
          {"index": "my-index-000002"}
          {"query" : {"match_all" : {}}}
      - lang: Python
        source: |-
          resp = client.msearch(
              index="my-index-000001",
              searches=[
                  {},
                  {
                      "query": {
                          "match": {
                              "message": "this is a test"
                          }
                      }
                  },
                  {
                      "index": "my-index-000002"
                  },
                  {
                      "query": {
                          "match_all": {}
                      }
                  }
              ],
          )
      - lang: JavaScript
        source: |-
          const response = await client.msearch({
            index: "my-index-000001",
            searches: [
              {},
              {
                query: {
                  match: {
                    message: "this is a test",
                  },
                },
              },
              {
                index: "my-index-000002",
              },
              {
                query: {
                  match_all: {},
                },
              },
            ],
          });
      - lang: Ruby
        source: |-
          response = client.msearch(
            index: "my-index-000001",
            body: [
              {},
              {
                "query": {
                  "match": {
                    "message": "this is a test"
                  }
                }
              },
              {
                "index": "my-index-000002"
              },
              {
                "query": {
                  "match_all": {}
                }
              }
            ]
          )
      - lang: PHP
        source: |-
          $resp = $client->msearch([
              "index" => "my-index-000001",
              "body" => array(
                  new ArrayObject([]),
                  [
                      "query" => [
                          "match" => [
                              "message" => "this is a test",
                          ],
                      ],
                  ],
                  [
                      "index" => "my-index-000002",
                  ],
                  [
                      "query" => [
                          "match_all" => new ArrayObject([]),
                      ],
                  ],
              ),
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/x-ndjson" -d $''{}\n{"query":{"match":{"message":"this is a
          test"}}}\n{"index":"my-index-000002"}\n{"query":{"match_all":{}}}\n'' "$ELASTICSEARCH_URL/my-index-000001/_msearch"'
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/{index}/_msearch/template":
    post:
      tags:
      - search
      summary: 'Run multiple templated searches

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_msearch/template</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_msearch/template</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/{index}/_msearch/template</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/{index}/_msearch/template</span>\n
        \                     </div>\n                    \n\nRun multiple templated
        searches with a single request.\nIf you are providing a text file or text
        input to `curl`, use the `--data-binary` flag instead of `-d` to preserve
        newlines.\nFor example:\n\n```\n$ cat requests\n{ \"index\": \"my-index\"
        }\n{ \"id\": \"my-search-template\", \"params\": { \"query_string\": \"hello
        world\", \"from\": 0, \"size\": 10 }}\n{ \"index\": \"my-other-index\" }\n{
        \"id\": \"my-other-search-template\", \"params\": { \"query_type\": \"match_all\"
        }}\n\n$ curl -H \"Content-Type: application/x-ndjson\" -XGET localhost:9200/_msearch/template
        --data-binary \"@requests\"; echo\n```\n\n## Required authorization\n\n* Index
        privileges: `read`\n"
      externalDocs:
        url: https://www.elastic.co/docs/solutions/search/search-templates
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/multi-search-template.html
      operationId: msearch-template
      parameters:
      - "$ref": "#/components/parameters/msearch_template-index"
      - "$ref": "#/components/parameters/msearch_template-ccs_minimize_roundtrips"
      - "$ref": "#/components/parameters/msearch_template-max_concurrent_searches"
      - "$ref": "#/components/parameters/msearch_template-search_type"
      - "$ref": "#/components/parameters/msearch_template-rest_total_hits_as_int"
      - "$ref": "#/components/parameters/msearch_template-typed_keys"
      requestBody:
        "$ref": "#/components/requestBodies/msearch_template"
      responses:
        '200':
          "$ref": "#/components/responses/msearch_template-200"
      x-state: Generally available; Added in 5.0.0
      x-codeSamples:
      - lang: Console
        source: |-
          GET my-index/_msearch/template
          { }
          { "id": "my-search-template", "params": { "query_string": "hello world", "from": 0, "size": 10 }}
          { }
          { "id": "my-other-search-template", "params": { "query_type": "match_all" }}
      - lang: Python
        source: |-
          resp = client.msearch_template(
              index="my-index",
              search_templates=[
                  {},
                  {
                      "id": "my-search-template",
                      "params": {
                          "query_string": "hello world",
                          "from": 0,
                          "size": 10
                      }
                  },
                  {},
                  {
                      "id": "my-other-search-template",
                      "params": {
                          "query_type": "match_all"
                      }
                  }
              ],
          )
      - lang: JavaScript
        source: |-
          const response = await client.msearchTemplate({
            index: "my-index",
            search_templates: [
              {},
              {
                id: "my-search-template",
                params: {
                  query_string: "hello world",
                  from: 0,
                  size: 10,
                },
              },
              {},
              {
                id: "my-other-search-template",
                params: {
                  query_type: "match_all",
                },
              },
            ],
          });
      - lang: Ruby
        source: |-
          response = client.msearch_template(
            index: "my-index",
            body: [
              {},
              {
                "id": "my-search-template",
                "params": {
                  "query_string": "hello world",
                  "from": 0,
                  "size": 10
                }
              },
              {},
              {
                "id": "my-other-search-template",
                "params": {
                  "query_type": "match_all"
                }
              }
            ]
          )
      - lang: PHP
        source: |-
          $resp = $client->msearchTemplate([
              "index" => "my-index",
              "body" => array(
                  new ArrayObject([]),
                  [
                      "id" => "my-search-template",
                      "params" => [
                          "query_string" => "hello world",
                          "from" => 0,
                          "size" => 10,
                      ],
                  ],
                  new ArrayObject([]),
                  [
                      "id" => "my-other-search-template",
                      "params" => [
                          "query_type" => "match_all",
                      ],
                  ],
              ),
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/x-ndjson" -d $''{}\n{"id":"my-search-template","params":{"query_string":"hello
          world","from":0,"size":10}}\n{}\n{"id":"my-other-search-template","params":{"query_type":"match_all"}}\n''
          "$ELASTICSEARCH_URL/my-index/_msearch/template"'
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/{index}/_mtermvectors":
    post:
      tags:
      - document
      summary: 'Get multiple term vectors

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_mtermvectors</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_mtermvectors</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/{index}/_mtermvectors</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/{index}/_mtermvectors</span>\n
        \                     </div>\n                    \n\nGet multiple term vectors
        with a single request.\nYou can specify existing documents by index and ID
        or provide artificial documents in the body of the request.\nYou can specify
        the index in the request body or request URI.\nThe response contains a `docs`
        array with all the fetched termvectors.\nEach element has the structure provided
        by the termvectors API.\n\n**Artificial documents**\n\nYou can also use `mtermvectors`
        to generate term vectors for artificial documents provided in the body of
        the request.\nThe mapping used is determined by the specified `_index`.\n\n##
        Required authorization\n\n* Index privileges: `read`\n"
      operationId: mtermvectors
      parameters:
      - "$ref": "#/components/parameters/mtermvectors-index"
      - "$ref": "#/components/parameters/mtermvectors-ids"
      - "$ref": "#/components/parameters/mtermvectors-fields"
      - "$ref": "#/components/parameters/mtermvectors-field_statistics"
      - "$ref": "#/components/parameters/mtermvectors-offsets"
      - "$ref": "#/components/parameters/mtermvectors-payloads"
      - "$ref": "#/components/parameters/mtermvectors-positions"
      - "$ref": "#/components/parameters/mtermvectors-preference"
      - "$ref": "#/components/parameters/mtermvectors-realtime"
      - "$ref": "#/components/parameters/mtermvectors-routing"
      - "$ref": "#/components/parameters/mtermvectors-term_statistics"
      - "$ref": "#/components/parameters/mtermvectors-version"
      - "$ref": "#/components/parameters/mtermvectors-version_type"
      requestBody:
        "$ref": "#/components/requestBodies/mtermvectors"
      responses:
        '200':
          "$ref": "#/components/responses/mtermvectors-200"
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: |-
          POST /my-index-000001/_mtermvectors
          {
            "docs": [
                {
                  "_id": "2",
                  "fields": [
                      "message"
                  ],
                  "term_statistics": true
                },
                {
                  "_id": "1"
                }
            ]
          }
      - lang: Python
        source: |-
          resp = client.mtermvectors(
              index="my-index-000001",
              docs=[
                  {
                      "_id": "2",
                      "fields": [
                          "message"
                      ],
                      "term_statistics": True
                  },
                  {
                      "_id": "1"
                  }
              ],
          )
      - lang: JavaScript
        source: |-
          const response = await client.mtermvectors({
            index: "my-index-000001",
            docs: [
              {
                _id: "2",
                fields: ["message"],
                term_statistics: true,
              },
              {
                _id: "1",
              },
            ],
          });
      - lang: Ruby
        source: |-
          response = client.mtermvectors(
            index: "my-index-000001",
            body: {
              "docs": [
                {
                  "_id": "2",
                  "fields": [
                    "message"
                  ],
                  "term_statistics": true
                },
                {
                  "_id": "1"
                }
              ]
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->mtermvectors([
              "index" => "my-index-000001",
              "body" => [
                  "docs" => array(
                      [
                          "_id" => "2",
                          "fields" => array(
                              "message",
                          ),
                          "term_statistics" => true,
                      ],
                      [
                          "_id" => "1",
                      ],
                  ),
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"docs":[{"_id":"2","fields":["message"],"term_statistics":true},{"_id":"1"}]}''
          "$ELASTICSEARCH_URL/my-index-000001/_mtermvectors"'
      - lang: Java
        source: |
          client.mtermvectors(m -> m
              .docs(List.of(MultiTermVectorsOperation.of(mu -> mu
                      .id("2")
                      .fields("message")
                      .termStatistics(true)
                  ),MultiTermVectorsOperation.of(mu -> mu
                      .id("1")
                  )))
              .index("my-index-000001")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_nodes/{node_id}/_repositories_metering/{max_archive_version}":
    delete:
      tags:
      - cluster
      summary: Clear the archived repositories metering
      description: |
        Clear the archived repositories metering information in the cluster.

        ## Required authorization

        * Cluster privileges: `monitor`,`manage`
      operationId: nodes-clear-repositories-metering-archive
      parameters:
      - in: path
        name: node_id
        description: Comma-separated list of node IDs or names used to limit returned
          information.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.NodeIds"
        style: simple
      - in: path
        name: max_archive_version
        description: Specifies the maximum `archive_version` to be cleared from the
          archive.
        required: true
        deprecated: false
        schema:
          type: number
        style: simple
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/nodes.clear_repositories_metering_archive.ResponseBase"
      x-state: Technical preview; Added in 7.16.0
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_nodes/{node_id}/_repositories_metering":
    get:
      tags:
      - cluster
      summary: Get cluster repositories metering
      description: |
        Get repositories metering information for a cluster.
        This API exposes monotonically non-decreasing counters and it is expected that clients would durably store the information needed to compute aggregations over a period of time.
        Additionally, the information exposed by this API is volatile, meaning that it will not be present after node restarts.

        ## Required authorization

        * Cluster privileges: `monitor`,`manage`
      operationId: nodes-get-repositories-metering-info
      parameters:
      - in: path
        name: node_id
        description: Comma-separated list of node IDs or names used to limit returned
          information.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.NodeIds"
        style: simple
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/nodes.get_repositories_metering_info.ResponseBase"
      x-state: Technical preview; Added in 7.16.0
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_nodes/{node_id}/hot_threads":
    get:
      tags:
      - cluster
      summary: 'Get the hot threads for nodes

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_nodes/hot_threads</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_nodes/{node_id}/hot_threads</span>\n
        \                     </div>\n                    \n\nGet a breakdown of the
        hot threads on each selected node in the cluster.\nThe output is plain text
        with a breakdown of the top hot threads for each node.\n\n## Required authorization\n\n*
        Cluster privileges: `monitor`,`manage`\n"
      operationId: nodes-hot-threads
      parameters:
      - "$ref": "#/components/parameters/nodes.hot_threads-node_id"
      - "$ref": "#/components/parameters/nodes.hot_threads-ignore_idle_threads"
      - "$ref": "#/components/parameters/nodes.hot_threads-interval"
      - "$ref": "#/components/parameters/nodes.hot_threads-snapshots"
      - "$ref": "#/components/parameters/nodes.hot_threads-threads"
      - "$ref": "#/components/parameters/nodes.hot_threads-timeout"
      - "$ref": "#/components/parameters/nodes.hot_threads-type"
      - "$ref": "#/components/parameters/nodes.hot_threads-sort"
      responses:
        '200':
          "$ref": "#/components/responses/nodes.hot_threads-200"
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'GET /_nodes/hot_threads

          '
      - lang: Python
        source: resp = client.nodes.hot_threads()
      - lang: JavaScript
        source: const response = await client.nodes.hotThreads();
      - lang: Ruby
        source: response = client.nodes.hot_threads
      - lang: PHP
        source: "$resp = $client->nodes()->hotThreads();"
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_nodes/hot_threads"'
      - lang: Java
        source: 'client.nodes().hotThreads(h -> h);

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_nodes/{node_id}/{metric}":
    get:
      tags:
      - cluster
      summary: 'Get node information

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_nodes</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_nodes/{metric}</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_nodes/{node_id}</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_nodes/{node_id}/{metric}</span>\n
        \                     </div>\n                    \n\nBy default, the API
        returns all attributes and core settings for cluster nodes."
      operationId: nodes-info
      parameters:
      - "$ref": "#/components/parameters/nodes.info-node_id"
      - "$ref": "#/components/parameters/nodes.info-metric"
      - "$ref": "#/components/parameters/nodes.info-flat_settings"
      - "$ref": "#/components/parameters/nodes.info-timeout"
      responses:
        '200':
          "$ref": "#/components/responses/nodes.info-200"
      x-state: Generally available; Added in 1.3.0
      x-codeSamples:
      - lang: Console
        source: 'GET _nodes/_all/jvm

          '
      - lang: Python
        source: |-
          resp = client.nodes.info(
              node_id="_all",
              metric="jvm",
          )
      - lang: JavaScript
        source: |-
          const response = await client.nodes.info({
            node_id: "_all",
            metric: "jvm",
          });
      - lang: Ruby
        source: |-
          response = client.nodes.info(
            node_id: "_all",
            metric: "jvm"
          )
      - lang: PHP
        source: |-
          $resp = $client->nodes()->info([
              "node_id" => "_all",
              "metric" => "jvm",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_nodes/_all/jvm"'
      - lang: Java
        source: |
          client.nodes().info(i -> i
              .metric("jvm")
              .nodeId("_all")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_nodes/{node_id}/reload_secure_settings":
    post:
      tags:
      - cluster
      summary: 'Reload the keystore on nodes in the cluster

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_nodes/reload_secure_settings</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_nodes/{node_id}/reload_secure_settings</span>\n
        \                     </div>\n                    \n\nSecure settings are
        stored in an on-disk keystore. Certain of these settings are reloadable.\nThat
        is, you can change them on disk and reload them without restarting any nodes
        in the cluster.\nWhen you have updated reloadable secure settings in your
        keystore, you can use this API to reload those settings on each node.\n\nWhen
        the Elasticsearch keystore is password protected and not simply obfuscated,
        you must provide the password for the keystore when you reload the secure
        settings.\nReloading the settings for the whole cluster assumes that the keystores
        for all nodes are protected with the same password; this method is allowed
        only when inter-node communications are encrypted.\nAlternatively, you can
        reload the secure settings on each node by locally accessing the API and passing
        the node-specific Elasticsearch keystore password."
      operationId: nodes-reload-secure-settings
      parameters:
      - "$ref": "#/components/parameters/nodes.reload_secure_settings-node_id"
      - "$ref": "#/components/parameters/nodes.reload_secure_settings-timeout"
      requestBody:
        "$ref": "#/components/requestBodies/nodes.reload_secure_settings"
      responses:
        '200':
          "$ref": "#/components/responses/nodes.reload_secure_settings-200"
      x-state: Generally available; Added in 6.5.0
      x-codeSamples:
      - lang: Console
        source: |-
          POST _nodes/reload_secure_settings
          {
            "secure_settings_password": "keystore-password"
          }
      - lang: Python
        source: |-
          resp = client.nodes.reload_secure_settings(
              secure_settings_password="keystore-password",
          )
      - lang: JavaScript
        source: |-
          const response = await client.nodes.reloadSecureSettings({
            secure_settings_password: "keystore-password",
          });
      - lang: Ruby
        source: |-
          response = client.nodes.reload_secure_settings(
            body: {
              "secure_settings_password": "keystore-password"
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->nodes()->reloadSecureSettings([
              "body" => [
                  "secure_settings_password" => "keystore-password",
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"secure_settings_password":"keystore-password"}''
          "$ELASTICSEARCH_URL/_nodes/reload_secure_settings"'
      - lang: Java
        source: |
          client.nodes().reloadSecureSettings(r -> r
              .secureSettingsPassword("keystore-password")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_nodes/{node_id}/stats/{metric}/{index_metric}":
    get:
      tags:
      - cluster
      summary: 'Get node statistics

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_nodes/stats</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_nodes/stats/{metric}</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_nodes/{node_id}/stats</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_nodes/{node_id}/stats/{metric}</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_nodes/stats/{metric}/{index_metric}</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_nodes/{node_id}/stats/{metric}/{index_metric}</span>\n
        \                     </div>\n                    \n\nGet statistics for nodes
        in a cluster.\nBy default, all stats are returned. You can limit the returned
        information by using metrics.\n\n## Required authorization\n\n* Cluster privileges:
        `monitor`,`manage`\n"
      operationId: nodes-stats
      parameters:
      - "$ref": "#/components/parameters/nodes.stats-node_id"
      - "$ref": "#/components/parameters/nodes.stats-metric"
      - "$ref": "#/components/parameters/nodes.stats-index_metric"
      - "$ref": "#/components/parameters/nodes.stats-completion_fields"
      - "$ref": "#/components/parameters/nodes.stats-fielddata_fields"
      - "$ref": "#/components/parameters/nodes.stats-fields"
      - "$ref": "#/components/parameters/nodes.stats-groups"
      - "$ref": "#/components/parameters/nodes.stats-include_segment_file_sizes"
      - "$ref": "#/components/parameters/nodes.stats-level"
      - "$ref": "#/components/parameters/nodes.stats-timeout"
      - "$ref": "#/components/parameters/nodes.stats-types"
      - "$ref": "#/components/parameters/nodes.stats-include_unloaded_segments"
      responses:
        '200':
          "$ref": "#/components/responses/nodes.stats-200"
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'GET _nodes/stats/process?filter_path=**.max_file_descriptors

          '
      - lang: Python
        source: |-
          resp = client.nodes.stats(
              metric="process",
              filter_path="**.max_file_descriptors",
          )
      - lang: JavaScript
        source: |-
          const response = await client.nodes.stats({
            metric: "process",
            filter_path: "**.max_file_descriptors",
          });
      - lang: Ruby
        source: |-
          response = client.nodes.stats(
            metric: "process",
            filter_path: "**.max_file_descriptors"
          )
      - lang: PHP
        source: |-
          $resp = $client->nodes()->stats([
              "metric" => "process",
              "filter_path" => "**.max_file_descriptors",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_nodes/stats/process?filter_path=**.max_file_descriptors"'
      - lang: Java
        source: |
          client.nodes().stats(s -> s
              .metric("process")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_nodes/{node_id}/usage/{metric}":
    get:
      tags:
      - cluster
      summary: 'Get feature usage information

        '
      description: |
        **All methods and paths for this operation:**

        <div>
                              <span class="operation-verb get">GET</span>
                              <span class="operation-path">/_nodes/usage</span>
                              </div>
                            <div>
                              <span class="operation-verb get">GET</span>
                              <span class="operation-path">/_nodes/usage/{metric}</span>
                              </div>
                            <div>
                              <span class="operation-verb get">GET</span>
                              <span class="operation-path">/_nodes/{node_id}/usage</span>
                              </div>
                            <div>
                              <span class="operation-verb get">GET</span>
                              <span class="operation-path">/_nodes/{node_id}/usage/{metric}</span>
                              </div>

        ## Required authorization

        * Cluster privileges: `monitor`,`manage`
      operationId: nodes-usage
      parameters:
      - "$ref": "#/components/parameters/nodes.usage-node_id"
      - "$ref": "#/components/parameters/nodes.usage-metric"
      - "$ref": "#/components/parameters/nodes.usage-timeout"
      responses:
        '200':
          "$ref": "#/components/responses/nodes.usage-200"
      x-state: Generally available; Added in 6.0.0
      x-codeSamples:
      - lang: Console
        source: 'GET _nodes/usage

          '
      - lang: Python
        source: resp = client.nodes.usage()
      - lang: JavaScript
        source: const response = await client.nodes.usage();
      - lang: Ruby
        source: response = client.nodes.usage
      - lang: PHP
        source: "$resp = $client->nodes()->usage();"
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_nodes/usage"'
      - lang: Java
        source: 'client.nodes().usage(u -> u);

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/{index}/_pit":
    post:
      tags:
      - search
      summary: Open a point in time
      description: |
        A search request by default runs against the most recent visible data of the target indices,
        which is called point in time. Elasticsearch pit (point in time) is a lightweight view into the
        state of the data as it existed when initiated. In some cases, it’s preferred to perform multiple
        search requests using the same point in time. For example, if refreshes happen between
        `search_after` requests, then the results of those requests might not be consistent as changes happening
        between searches are only visible to the more recent point in time.

        A point in time must be opened explicitly before being used in search requests.

        A subsequent search request with the `pit` parameter must not specify `index`, `routing`, or `preference` values as these parameters are copied from the point in time.

        Just like regular searches, you can use `from` and `size` to page through point in time search results, up to the first 10,000 hits.
        If you want to retrieve more hits, use PIT with `search_after`.

        IMPORTANT: The open point in time request and each subsequent search request can return different identifiers; always use the most recently received ID for the next search request.

        When a PIT that contains shard failures is used in a search request, the missing are always reported in the search response as a `NoShardAvailableActionException` exception.
        To get rid of these exceptions, a new PIT needs to be created so that shards missing from the previous PIT can be handled, assuming they become available in the meantime.

        **Keeping point in time alive**

        The `keep_alive` parameter, which is passed to a open point in time request and search request, extends the time to live of the corresponding point in time.
        The value does not need to be long enough to process all data — it just needs to be long enough for the next request.

        Normally, the background merge process optimizes the index by merging together smaller segments to create new, bigger segments.
        Once the smaller segments are no longer needed they are deleted.
        However, open point-in-times prevent the old segments from being deleted since they are still in use.

        TIP: Keeping older segments alive means that more disk space and file handles are needed.
        Ensure that you have configured your nodes to have ample free file handles.

        Additionally, if a segment contains deleted or updated documents then the point in time must keep track of whether each document in the segment was live at the time of the initial search request.
        Ensure that your nodes have sufficient heap space if you have many open point-in-times on an index that is subject to ongoing deletes or updates.
        Note that a point-in-time doesn't prevent its associated indices from being deleted.
        You can check how many point-in-times (that is, search contexts) are open with the nodes stats API.

        ## Required authorization

        * Index privileges: `read`
      operationId: open-point-in-time
      parameters:
      - in: path
        name: index
        description: A comma-separated list of index names to open point in time;
          use `_all` or empty string to perform the operation on all indices
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Indices"
        style: simple
      - in: query
        name: keep_alive
        description: Extend the length of time that the point in time persists.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: ignore_unavailable
        description: If `false`, the request returns an error if it targets a missing
          or closed index.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: preference
        description: |-
          The node or shard the operation should be performed on.
          By default, it is random.
        deprecated: false
        schema:
          type: string
        style: form
      - in: query
        name: routing
        description: A custom value that is used to route operations to a specific
          shard.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Routing"
        style: form
      - in: query
        name: expand_wildcards
        description: |+
          The type of index that wildcard patterns can match.
          If the request can target data streams, this argument determines whether wildcard expressions match hidden data streams.
          It supports comma-separated values, such as `open,hidden`.

          Supported values include:
            - `all`: Match any data stream or index, including hidden ones.
            - `open`: Match open, non-hidden indices. Also matches any non-hidden data stream.
            - `closed`: Match closed, non-hidden indices. Also matches any non-hidden data stream. Data streams cannot be closed.
            - `hidden`: Match hidden data streams and hidden indices. Must be combined with `open`, `closed`, or `both`.
            - `none`: Wildcard expressions are not accepted.

        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.ExpandWildcards"
        style: form
      - in: query
        name: allow_partial_search_results
        description: |-
          Indicates whether the point in time tolerates unavailable shards or shard failures when initially creating the PIT.
          If `false`, creating a point in time request when a shard is missing or unavailable will throw an exception.
          If `true`, the point in time will contain all the shards that are available at the time of the request.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: max_concurrent_shard_requests
        description: Maximum number of concurrent shard requests that each sub-search
          request executes per node.
        deprecated: false
        schema:
          type: number
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                index_filter:
                  description: Filter indices if the provided query rewrites to `match_none`
                    on every shard.
                  allOf:
                  - "$ref": "#/components/schemas/_types.query_dsl.QueryContainer"
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  _shards:
                    description: Shards used to create the PIT
                    allOf:
                    - "$ref": "#/components/schemas/_types.ShardStatistics"
                  id:
                    allOf:
                    - "$ref": "#/components/schemas/_types.Id"
                required:
                - _shards
                - id
              examples:
                OpenPointInTimeResponseExample1:
                  description: 'A successful response from `POST /my-index-000001/_pit?keep_alive=1m&allow_partial_search_results=true`.
                    It includes a summary of the total number of shards, as well as
                    the number of successful shards when creating the PIT.

                    '
                  value: |-
                    {
                      "id": "46ToAwMDaWR5BXV1aWQyKwZub2RlXzMAAAAAAAAAACoBYwADaWR4BXV1aWQxAgZub2RlXzEAAAAAAAAAAAEBYQADaWR5BXV1aWQyKgZub2RlXzIAAAAAAAAAAAwBYgACBXV1aWQyAAAFdXVpZDEAAQltYXRjaF9hbGw_gAAAAA=",
                      "_shards": {
                        "total": 10,
                        "successful": 10,
                        "skipped": 0,
                        "failed": 0
                      }
                    }
      x-state: Generally available; Added in 7.10.0
      x-codeSamples:
      - lang: Console
        source: 'POST /my-index-000001/_pit?keep_alive=1m&allow_partial_search_results=true

          '
      - lang: Python
        source: |-
          resp = client.open_point_in_time(
              index="my-index-000001",
              keep_alive="1m",
              allow_partial_search_results=True,
          )
      - lang: JavaScript
        source: |-
          const response = await client.openPointInTime({
            index: "my-index-000001",
            keep_alive: "1m",
            allow_partial_search_results: "true",
          });
      - lang: Ruby
        source: |-
          response = client.open_point_in_time(
            index: "my-index-000001",
            keep_alive: "1m",
            allow_partial_search_results: "true"
          )
      - lang: PHP
        source: |-
          $resp = $client->openPointInTime([
              "index" => "my-index-000001",
              "keep_alive" => "1m",
              "allow_partial_search_results" => "true",
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/my-index-000001/_pit?keep_alive=1m&allow_partial_search_results=true"'
      - lang: Java
        source: |
          client.openPointInTime(o -> o
              .allowPartialSearchResults(true)
              .index("my-index-000001")
              .keepAlive(k -> k
                  .offset(1)
              )
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_scripts/{id}/{context}":
    post:
      tags:
      - script
      summary: 'Create or update a script or search template

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb put\">PUT</span>\n                      <span class=\"operation-path\">/_scripts/{id}</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_scripts/{id}</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb put\">PUT</span>\n                      <span class=\"operation-path\">/_scripts/{id}/{context}</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_scripts/{id}/{context}</span>\n
        \                     </div>\n                    \n\nCreates or updates a
        stored script or search template.\n\n## Required authorization\n\n* Cluster
        privileges: `manage`\n"
      externalDocs:
        url: https://www.elastic.co/docs/solutions/search/search-templates
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/create-stored-script-api.html
      operationId: put-script
      parameters:
      - "$ref": "#/components/parameters/put_script-id"
      - "$ref": "#/components/parameters/put_script-context"
      - "$ref": "#/components/parameters/put_script-context_"
      - "$ref": "#/components/parameters/put_script-master_timeout"
      - "$ref": "#/components/parameters/put_script-timeout"
      requestBody:
        "$ref": "#/components/requestBodies/put_script"
      responses:
        '200':
          "$ref": "#/components/responses/put_script-200"
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: |-
          PUT _scripts/my-search-template
          {
            "script": {
              "lang": "mustache",
              "source": {
                "query": {
                  "match": {
                    "message": "{{query_string}}"
                  }
                },
                "from": "{{from}}",
                "size": "{{size}}"
              }
            }
          }
      - lang: Python
        source: |-
          resp = client.put_script(
              id="my-search-template",
              script={
                  "lang": "mustache",
                  "source": {
                      "query": {
                          "match": {
                              "message": "{{query_string}}"
                          }
                      },
                      "from": "{{from}}",
                      "size": "{{size}}"
                  }
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.putScript({
            id: "my-search-template",
            script: {
              lang: "mustache",
              source: {
                query: {
                  match: {
                    message: "{{query_string}}",
                  },
                },
                from: "{{from}}",
                size: "{{size}}",
              },
            },
          });
      - lang: Ruby
        source: |-
          response = client.put_script(
            id: "my-search-template",
            body: {
              "script": {
                "lang": "mustache",
                "source": {
                  "query": {
                    "match": {
                      "message": "{{query_string}}"
                    }
                  },
                  "from": "{{from}}",
                  "size": "{{size}}"
                }
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->putScript([
              "id" => "my-search-template",
              "body" => [
                  "script" => [
                      "lang" => "mustache",
                      "source" => [
                          "query" => [
                              "match" => [
                                  "message" => "{{query_string}}",
                              ],
                          ],
                          "from" => "{{from}}",
                          "size" => "{{size}}",
                      ],
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"script":{"lang":"mustache","source":{"query":{"match":{"message":"{{query_string}}"}},"from":"{{from}}","size":"{{size}}"}}}''
          "$ELASTICSEARCH_URL/_scripts/my-search-template"'
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_query_rules/{ruleset_id}/_rule/{rule_id}":
    get:
      tags:
      - query_rules
      summary: Get a query rule
      description: |
        Get details about a query rule within a query ruleset.

        ## Required authorization

        * Cluster privileges: `manage_search_query_rules`
      externalDocs:
        description: See rules and rulesets in Query Rules UI
        url: https://www.elastic.co/docs/solutions/search/query-rules-ui#accessing-the-query-rules-ui
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/get-query-rule.html
      operationId: query-rules-get-rule
      parameters:
      - in: path
        name: ruleset_id
        description: The unique identifier of the query ruleset containing the rule
          to retrieve
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: path
        name: rule_id
        description: The unique identifier of the query rule within the specified
          ruleset to retrieve
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/query_rules._types.QueryRule"
              examples:
                QueryRuleGetResponseExample1:
                  description: A successful response from `GET _query_rules/my-ruleset/_rule/my-rule1`.
                  value: |-
                    {
                      "rule_id": "my-rule1",
                      "type": "pinned",
                      "criteria": [
                        {
                          "type": "contains",
                          "metadata": "query_string",
                          "values": [
                            "pugs",
                            "puggles"
                          ]
                        }
                      ],
                      "actions": {
                        "ids": [
                          "id1",
                          "id2"
                        ]
                      }
                    }
      x-state: Generally available; Added in 8.15.0
      x-codeSamples:
      - lang: Console
        source: 'GET _query_rules/my-ruleset/_rule/my-rule1

          '
      - lang: Python
        source: |-
          resp = client.query_rules.get_rule(
              ruleset_id="my-ruleset",
              rule_id="my-rule1",
          )
      - lang: JavaScript
        source: |-
          const response = await client.queryRules.getRule({
            ruleset_id: "my-ruleset",
            rule_id: "my-rule1",
          });
      - lang: Ruby
        source: |-
          response = client.query_rules.get_rule(
            ruleset_id: "my-ruleset",
            rule_id: "my-rule1"
          )
      - lang: PHP
        source: |-
          $resp = $client->queryRules()->getRule([
              "ruleset_id" => "my-ruleset",
              "rule_id" => "my-rule1",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_query_rules/my-ruleset/_rule/my-rule1"'
      - lang: Java
        source: |
          client.queryRules().getRule(g -> g
              .ruleId("my-rule1")
              .rulesetId("my-ruleset")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    put:
      tags:
      - query_rules
      summary: Create or update a query rule
      description: |
        Create or update a query rule within a query ruleset.

        IMPORTANT: Due to limitations within pinned queries, you can only pin documents using ids or docs, but cannot use both in single rule.
        It is advised to use one or the other in query rulesets, to avoid errors.
        Additionally, pinned queries have a maximum limit of 100 pinned hits.
        If multiple matching rules pin more than 100 documents, only the first 100 documents are pinned in the order they are specified in the ruleset.

        ## Required authorization

        * Cluster privileges: `manage_search_query_rules`
      externalDocs:
        description: Edit rules and rulesets from the Query Rules UI
        url: https://www.elastic.co/docs/solutions/search/query-rules-ui#edit-a-rule
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/put-query-rule.html
      operationId: query-rules-put-rule
      parameters:
      - in: path
        name: ruleset_id
        description: The unique identifier of the query ruleset containing the rule
          to be created or updated.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: path
        name: rule_id
        description: The unique identifier of the query rule within the specified
          ruleset to be created or updated.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                type:
                  description: The type of rule.
                  allOf:
                  - "$ref": "#/components/schemas/query_rules._types.QueryRuleType"
                criteria:
                  description: |-
                    The criteria that must be met for the rule to be applied.
                    If multiple criteria are specified for a rule, all criteria must be met for the rule to be applied.
                  oneOf:
                  - "$ref": "#/components/schemas/query_rules._types.QueryRuleCriteria"
                  - type: array
                    items:
                      "$ref": "#/components/schemas/query_rules._types.QueryRuleCriteria"
                actions:
                  description: |-
                    The actions to take when the rule is matched.
                    The format of this action depends on the rule type.
                  allOf:
                  - "$ref": "#/components/schemas/query_rules._types.QueryRuleActions"
                priority:
                  type: number
              required:
              - type
              - criteria
              - actions
            examples:
              QueryRulePutRequestExample1:
                description: 'Run `POST _query_rules/my-ruleset/_test` to test a ruleset.
                  Provide the match criteria that you want to test against.

                  '
                value: |-
                  {
                    "match_criteria": {
                      "query_string": "puggles"
                    }
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    allOf:
                    - "$ref": "#/components/schemas/_types.Result"
                required:
                - result
      x-state: Generally available; Added in 8.15.0
      x-codeSamples:
      - lang: Console
        source: |-
          POST _query_rules/my-ruleset/_test
          {
            "match_criteria": {
              "query_string": "puggles"
            }
          }
      - lang: Python
        source: |-
          resp = client.query_rules.test(
              ruleset_id="my-ruleset",
              match_criteria={
                  "query_string": "puggles"
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.queryRules.test({
            ruleset_id: "my-ruleset",
            match_criteria: {
              query_string: "puggles",
            },
          });
      - lang: Ruby
        source: |-
          response = client.query_rules.test(
            ruleset_id: "my-ruleset",
            body: {
              "match_criteria": {
                "query_string": "puggles"
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->queryRules()->test([
              "ruleset_id" => "my-ruleset",
              "body" => [
                  "match_criteria" => [
                      "query_string" => "puggles",
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"match_criteria":{"query_string":"puggles"}}'' "$ELASTICSEARCH_URL/_query_rules/my-ruleset/_test"'
      - lang: Java
        source: |
          client.queryRules().test(t -> t
              .matchCriteria("query_string", JsonData.fromJson("\"puggles\""))
              .rulesetId("my-ruleset")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    delete:
      tags:
      - query_rules
      summary: Delete a query rule
      description: |
        Delete a query rule within a query ruleset.
        This is a destructive action that is only recoverable by re-adding the same rule with the create or update query rule API.

        ## Required authorization

        * Cluster privileges: `manage_search_query_rules`
      externalDocs:
        description: Delete a rule from the Query Rules UI
        url: https://www.elastic.co/docs/solutions/search/query-rules-ui#delete-a-rule
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/delete-query-rule.html
      operationId: query-rules-delete-rule
      parameters:
      - in: path
        name: ruleset_id
        description: The unique identifier of the query ruleset containing the rule
          to delete
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: path
        name: rule_id
        description: The unique identifier of the query rule within the specified
          ruleset to delete
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
      x-state: Generally available; Added in 8.15.0
      x-codeSamples:
      - lang: Console
        source: 'DELETE _query_rules/my-ruleset/_rule/my-rule1

          '
      - lang: Python
        source: |-
          resp = client.query_rules.delete_rule(
              ruleset_id="my-ruleset",
              rule_id="my-rule1",
          )
      - lang: JavaScript
        source: |-
          const response = await client.queryRules.deleteRule({
            ruleset_id: "my-ruleset",
            rule_id: "my-rule1",
          });
      - lang: Ruby
        source: |-
          response = client.query_rules.delete_rule(
            ruleset_id: "my-ruleset",
            rule_id: "my-rule1"
          )
      - lang: PHP
        source: |-
          $resp = $client->queryRules()->deleteRule([
              "ruleset_id" => "my-ruleset",
              "rule_id" => "my-rule1",
          ]);
      - lang: curl
        source: 'curl -X DELETE -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_query_rules/my-ruleset/_rule/my-rule1"'
      - lang: Java
        source: |
          client.queryRules().deleteRule(d -> d
              .ruleId("my-rule1")
              .rulesetId("my-ruleset")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_query_rules/{ruleset_id}":
    get:
      tags:
      - query_rules
      summary: Get a query ruleset
      description: |
        Get details about a query ruleset.

        ## Required authorization

        * Cluster privileges: `manage_search_query_rules`
      externalDocs:
        description: See rules and rulesets in Query Rules UI
        url: https://www.elastic.co/docs/solutions/search/query-rules-ui#accessing-the-query-rules-ui
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/get-query-ruleset.html
      operationId: query-rules-get-ruleset
      parameters:
      - in: path
        name: ruleset_id
        description: The unique identifier of the query ruleset
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/query_rules._types.QueryRuleset"
              examples:
                QueryRulesetGetResponseExample1:
                  description: A successful response from `GET _query_rules/my-ruleset/`.
                  value: |-
                    {
                        "ruleset_id": "my-ruleset",
                        "rules": [
                            {
                                "rule_id": "my-rule1",
                                "type": "pinned",
                                "criteria": [
                                    {
                                        "type": "contains",
                                        "metadata": "query_string",
                                        "values": [ "pugs", "puggles" ]
                                    }
                                ],
                                "actions": {
                                    "ids": [
                                        "id1",
                                        "id2"
                                    ]
                                }
                            },
                            {
                                "rule_id": "my-rule2",
                                "type": "pinned",
                                "criteria": [
                                    {
                                        "type": "fuzzy",
                                        "metadata": "query_string",
                                        "values": [ "rescue dogs" ]
                                    }
                                ],
                                "actions": {
                                    "docs": [
                                        {
                                            "_index": "index1",
                                            "_id": "id3"
                                        },
                                        {
                                            "_index": "index2",
                                            "_id": "id4"
                                        }
                                    ]
                                }
                            }
                        ]
                    }
      x-state: Generally available; Added in 8.10.0
      x-codeSamples:
      - lang: Console
        source: 'GET _query_rules/my-ruleset/

          '
      - lang: Python
        source: |-
          resp = client.query_rules.get_ruleset(
              ruleset_id="my-ruleset",
          )
      - lang: JavaScript
        source: |-
          const response = await client.queryRules.getRuleset({
            ruleset_id: "my-ruleset",
          });
      - lang: Ruby
        source: |-
          response = client.query_rules.get_ruleset(
            ruleset_id: "my-ruleset"
          )
      - lang: PHP
        source: |-
          $resp = $client->queryRules()->getRuleset([
              "ruleset_id" => "my-ruleset",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_query_rules/my-ruleset/"'
      - lang: Java
        source: |
          client.queryRules().getRuleset(g -> g
              .rulesetId("my-ruleset")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    put:
      tags:
      - query_rules
      summary: Create or update a query ruleset
      description: |
        There is a limit of 100 rules per ruleset.
        This limit can be increased by using the `xpack.applications.rules.max_rules_per_ruleset` cluster setting.

        IMPORTANT: Due to limitations within pinned queries, you can only select documents using `ids` or `docs`, but cannot use both in single rule.
        It is advised to use one or the other in query rulesets, to avoid errors.
        Additionally, pinned queries have a maximum limit of 100 pinned hits.
        If multiple matching rules pin more than 100 documents, only the first 100 documents are pinned in the order they are specified in the ruleset.

        ## Required authorization

        * Cluster privileges: `manage_search_query_rules`
      externalDocs:
        description: Edit rules and rulesets from the Query Rules UI
        url: https://www.elastic.co/docs/solutions/search/query-rules-ui#edit-a-rule
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/put-query-ruleset.html
      operationId: query-rules-put-ruleset
      parameters:
      - in: path
        name: ruleset_id
        description: The unique identifier of the query ruleset to be created or updated.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                rules:
                  oneOf:
                  - "$ref": "#/components/schemas/query_rules._types.QueryRule"
                  - type: array
                    items:
                      "$ref": "#/components/schemas/query_rules._types.QueryRule"
              required:
              - rules
            examples:
              QueryRulesetPutRequestExample1:
                description: 'Run `PUT _query_rules/my-ruleset` to create a new query
                  ruleset. Two rules are associated with `my-ruleset`. `my-rule1`
                  will pin documents with IDs `id1` and `id2` when `user_query` contains
                  `pugs` or `puggles` and `user_country` exactly matches `us`. `my-rule2`
                  will exclude documents from different specified indices with IDs
                  `id3` and `id4` when the `query_string` fuzzily matches `rescue
                  dogs`.

                  '
                value: |-
                  {
                      "rules": [
                          {
                              "rule_id": "my-rule1",
                              "type": "pinned",
                              "criteria": [
                                  {
                                      "type": "contains",
                                      "metadata": "user_query",
                                      "values": [ "pugs", "puggles" ]
                                  },
                                  {
                                      "type": "exact",
                                      "metadata": "user_country",
                                      "values": [ "us" ]
                                  }
                              ],
                              "actions": {
                                  "ids": [
                                      "id1",
                                      "id2"
                                  ]
                              }
                          },
                          {
                              "rule_id": "my-rule2",
                              "type": "pinned",
                              "criteria": [
                                  {
                                      "type": "fuzzy",
                                      "metadata": "user_query",
                                      "values": [ "rescue dogs" ]
                                  }
                              ],
                              "actions": {
                                  "docs": [
                                      {
                                          "_index": "index1",
                                          "_id": "id3"
                                      },
                                      {
                                          "_index": "index2",
                                          "_id": "id4"
                                      }
                                  ]
                              }
                          }
                      ]
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    allOf:
                    - "$ref": "#/components/schemas/_types.Result"
                required:
                - result
      x-state: Generally available; Added in 8.10.0
      x-codeSamples:
      - lang: Console
        source: |-
          PUT _query_rules/my-ruleset
          {
              "rules": [
                  {
                      "rule_id": "my-rule1",
                      "type": "pinned",
                      "criteria": [
                          {
                              "type": "contains",
                              "metadata": "user_query",
                              "values": [ "pugs", "puggles" ]
                          },
                          {
                              "type": "exact",
                              "metadata": "user_country",
                              "values": [ "us" ]
                          }
                      ],
                      "actions": {
                          "ids": [
                              "id1",
                              "id2"
                          ]
                      }
                  },
                  {
                      "rule_id": "my-rule2",
                      "type": "pinned",
                      "criteria": [
                          {
                              "type": "fuzzy",
                              "metadata": "user_query",
                              "values": [ "rescue dogs" ]
                          }
                      ],
                      "actions": {
                          "docs": [
                              {
                                  "_index": "index1",
                                  "_id": "id3"
                              },
                              {
                                  "_index": "index2",
                                  "_id": "id4"
                              }
                          ]
                      }
                  }
              ]
          }
      - lang: Python
        source: |-
          resp = client.query_rules.put_ruleset(
              ruleset_id="my-ruleset",
              rules=[
                  {
                      "rule_id": "my-rule1",
                      "type": "pinned",
                      "criteria": [
                          {
                              "type": "contains",
                              "metadata": "user_query",
                              "values": [
                                  "pugs",
                                  "puggles"
                              ]
                          },
                          {
                              "type": "exact",
                              "metadata": "user_country",
                              "values": [
                                  "us"
                              ]
                          }
                      ],
                      "actions": {
                          "ids": [
                              "id1",
                              "id2"
                          ]
                      }
                  },
                  {
                      "rule_id": "my-rule2",
                      "type": "pinned",
                      "criteria": [
                          {
                              "type": "fuzzy",
                              "metadata": "user_query",
                              "values": [
                                  "rescue dogs"
                              ]
                          }
                      ],
                      "actions": {
                          "docs": [
                              {
                                  "_index": "index1",
                                  "_id": "id3"
                              },
                              {
                                  "_index": "index2",
                                  "_id": "id4"
                              }
                          ]
                      }
                  }
              ],
          )
      - lang: JavaScript
        source: |-
          const response = await client.queryRules.putRuleset({
            ruleset_id: "my-ruleset",
            rules: [
              {
                rule_id: "my-rule1",
                type: "pinned",
                criteria: [
                  {
                    type: "contains",
                    metadata: "user_query",
                    values: ["pugs", "puggles"],
                  },
                  {
                    type: "exact",
                    metadata: "user_country",
                    values: ["us"],
                  },
                ],
                actions: {
                  ids: ["id1", "id2"],
                },
              },
              {
                rule_id: "my-rule2",
                type: "pinned",
                criteria: [
                  {
                    type: "fuzzy",
                    metadata: "user_query",
                    values: ["rescue dogs"],
                  },
                ],
                actions: {
                  docs: [
                    {
                      _index: "index1",
                      _id: "id3",
                    },
                    {
                      _index: "index2",
                      _id: "id4",
                    },
                  ],
                },
              },
            ],
          });
      - lang: Ruby
        source: |-
          response = client.query_rules.put_ruleset(
            ruleset_id: "my-ruleset",
            body: {
              "rules": [
                {
                  "rule_id": "my-rule1",
                  "type": "pinned",
                  "criteria": [
                    {
                      "type": "contains",
                      "metadata": "user_query",
                      "values": [
                        "pugs",
                        "puggles"
                      ]
                    },
                    {
                      "type": "exact",
                      "metadata": "user_country",
                      "values": [
                        "us"
                      ]
                    }
                  ],
                  "actions": {
                    "ids": [
                      "id1",
                      "id2"
                    ]
                  }
                },
                {
                  "rule_id": "my-rule2",
                  "type": "pinned",
                  "criteria": [
                    {
                      "type": "fuzzy",
                      "metadata": "user_query",
                      "values": [
                        "rescue dogs"
                      ]
                    }
                  ],
                  "actions": {
                    "docs": [
                      {
                        "_index": "index1",
                        "_id": "id3"
                      },
                      {
                        "_index": "index2",
                        "_id": "id4"
                      }
                    ]
                  }
                }
              ]
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->queryRules()->putRuleset([
              "ruleset_id" => "my-ruleset",
              "body" => [
                  "rules" => array(
                      [
                          "rule_id" => "my-rule1",
                          "type" => "pinned",
                          "criteria" => array(
                              [
                                  "type" => "contains",
                                  "metadata" => "user_query",
                                  "values" => array(
                                      "pugs",
                                      "puggles",
                                  ),
                              ],
                              [
                                  "type" => "exact",
                                  "metadata" => "user_country",
                                  "values" => array(
                                      "us",
                                  ),
                              ],
                          ),
                          "actions" => [
                              "ids" => array(
                                  "id1",
                                  "id2",
                              ),
                          ],
                      ],
                      [
                          "rule_id" => "my-rule2",
                          "type" => "pinned",
                          "criteria" => array(
                              [
                                  "type" => "fuzzy",
                                  "metadata" => "user_query",
                                  "values" => array(
                                      "rescue dogs",
                                  ),
                              ],
                          ),
                          "actions" => [
                              "docs" => array(
                                  [
                                      "_index" => "index1",
                                      "_id" => "id3",
                                  ],
                                  [
                                      "_index" => "index2",
                                      "_id" => "id4",
                                  ],
                              ),
                          ],
                      ],
                  ),
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"rules":[{"rule_id":"my-rule1","type":"pinned","criteria":[{"type":"contains","metadata":"user_query","values":["pugs","puggles"]},{"type":"exact","metadata":"user_country","values":["us"]}],"actions":{"ids":["id1","id2"]}},{"rule_id":"my-rule2","type":"pinned","criteria":[{"type":"fuzzy","metadata":"user_query","values":["rescue
          dogs"]}],"actions":{"docs":[{"_index":"index1","_id":"id3"},{"_index":"index2","_id":"id4"}]}}]}''
          "$ELASTICSEARCH_URL/_query_rules/my-ruleset"'
      - lang: Java
        source: |
          client.queryRules().putRuleset(p -> p
              .rules(List.of(QueryRule.queryRuleOf(q -> q
                      .ruleId("my-rule1")
                      .type(QueryRuleType.Pinned)
                      .criteria(List.of(QueryRuleCriteria.of(qu -> qu
                              .type(QueryRuleCriteriaType.Contains)
                              .metadata("user_query")
                              .values(List.of(JsonData.fromJson("\"pugs\""),JsonData.fromJson("\"puggles\"")))
                          ),QueryRuleCriteria.of(qu -> qu
                              .type(QueryRuleCriteriaType.Exact)
                              .metadata("user_country")
                              .values(JsonData.fromJson("\"us\""))
                          )))
                      .actions(a -> a
                          .ids(List.of("id1","id2"))
                      )
                  ),QueryRule.queryRuleOf(q -> q
                      .ruleId("my-rule2")
                      .type(QueryRuleType.Pinned)
                      .criteria(c -> c
                          .type(QueryRuleCriteriaType.Fuzzy)
                          .metadata("user_query")
                          .values(JsonData.fromJson("\"rescue dogs\""))
                      )
                      .actions(a -> a
                          .docs(List.of(PinnedDoc.of(pi -> pi
                                  .id("id3")
                                  .index("index1")
                              ),PinnedDoc.of(pi -> pi
                                  .id("id4")
                                  .index("index2")
                              )))
                      )
                  )))
              .rulesetId("my-ruleset")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    delete:
      tags:
      - query_rules
      summary: Delete a query ruleset
      description: |
        Remove a query ruleset and its associated data.
        This is a destructive action that is not recoverable.

        ## Required authorization

        * Cluster privileges: `manage_search_query_rules`
      externalDocs:
        description: Delete a ruleset from the Query Rules UI
        url: https://www.elastic.co/docs/solutions/search/query-rules-ui#delete-a-ruleset
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/delete-query-ruleset.html
      operationId: query-rules-delete-ruleset
      parameters:
      - in: path
        name: ruleset_id
        description: The unique identifier of the query ruleset to delete
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
      x-state: Generally available; Added in 8.10.0
      x-codeSamples:
      - lang: Console
        source: 'DELETE _query_rules/my-ruleset/

          '
      - lang: Python
        source: |-
          resp = client.query_rules.delete_ruleset(
              ruleset_id="my-ruleset",
          )
      - lang: JavaScript
        source: |-
          const response = await client.queryRules.deleteRuleset({
            ruleset_id: "my-ruleset",
          });
      - lang: Ruby
        source: |-
          response = client.query_rules.delete_ruleset(
            ruleset_id: "my-ruleset"
          )
      - lang: PHP
        source: |-
          $resp = $client->queryRules()->deleteRuleset([
              "ruleset_id" => "my-ruleset",
          ]);
      - lang: curl
        source: 'curl -X DELETE -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_query_rules/my-ruleset/"'
      - lang: Java
        source: |
          client.queryRules().deleteRuleset(d -> d
              .rulesetId("my-ruleset")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_query_rules":
    get:
      tags:
      - query_rules
      summary: Get all query rulesets
      description: |
        Get summarized information about the query rulesets.

        ## Required authorization

        * Cluster privileges: `manage_search_query_rules`
      externalDocs:
        description: See rules and rulesets in Query Rules UI
        url: https://www.elastic.co/docs/solutions/search/query-rules-ui#accessing-the-query-rules-ui
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/list-query-rulesets.html
      operationId: query-rules-list-rulesets
      parameters:
      - in: query
        name: from
        description: The offset from the first result to fetch.
        deprecated: false
        schema:
          type: number
        style: form
      - in: query
        name: size
        description: The maximum number of results to retrieve.
        deprecated: false
        schema:
          type: number
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: number
                  results:
                    type: array
                    items:
                      "$ref": "#/components/schemas/query_rules.list_rulesets.QueryRulesetListItem"
                required:
                - count
                - results
              examples:
                QueryRulesetListResponseExample1:
                  description: A successful response from `GET _query_rules/?from=0&size=3`.
                  value: |-
                    {
                        "count": 3,
                        "results": [
                            {
                                "ruleset_id": "ruleset-1",
                                "rule_total_count": 1,
                                "rule_criteria_types_counts": {
                                    "exact": 1
                                }
                            },
                            {
                                "ruleset_id": "ruleset-2",
                                "rule_total_count": 2,
                                "rule_criteria_types_counts": {
                                    "exact": 1,
                                    "fuzzy": 1
                                }
                            },
                            {
                                "ruleset_id": "ruleset-3",
                                "rule_total_count": 3,
                                "rule_criteria_types_counts": {
                                    "exact": 1,
                                    "fuzzy": 2
                                }
                            }
                        ]
                    }
      x-state: Generally available; Added in 8.10.0
      x-codeSamples:
      - lang: Console
        source: 'GET _query_rules/?from=0&size=3

          '
      - lang: Python
        source: |-
          resp = client.query_rules.list_rulesets(
              from="0",
              size="3",
          )
      - lang: JavaScript
        source: |-
          const response = await client.queryRules.listRulesets({
            from: 0,
            size: 3,
          });
      - lang: Ruby
        source: |-
          response = client.query_rules.list_rulesets(
            from: "0",
            size: "3"
          )
      - lang: PHP
        source: |-
          $resp = $client->queryRules()->listRulesets([
              "from" => "0",
              "size" => "3",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_query_rules/?from=0&size=3"'
      - lang: Java
        source: |
          client.queryRules().listRulesets(l -> l
              .from(0)
              .size(3)
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_query_rules/{ruleset_id}/_test":
    post:
      tags:
      - query_rules
      summary: Test a query ruleset
      description: |
        Evaluate match criteria against a query ruleset to identify the rules that would match that criteria.

        ## Required authorization

        * Cluster privileges: `manage_search_query_rules`
      operationId: query-rules-test
      parameters:
      - in: path
        name: ruleset_id
        description: The unique identifier of the query ruleset to be created or updated
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                match_criteria:
                  description: |-
                    The match criteria to apply to rules in the given query ruleset.
                    Match criteria should match the keys defined in the `criteria.metadata` field of the rule.
                  type: object
                  additionalProperties:
                    type: object
              required:
              - match_criteria
            examples:
              QueryRulesetTestRequestExample1:
                description: 'Run `PUT _query_rules/my-ruleset` to create a new query
                  ruleset. Two rules are associated with `my-ruleset`. `my-rule1`
                  will pin documents with IDs `id1` and `id2` when `user_query` contains
                  `pugs` or `puggles` and `user_country` exactly matches `us`. `my-rule2`
                  will exclude documents from different specified indices with IDs
                  `id3` and `id4` when the `query_string` fuzzily matches `rescue
                  dogs`.

                  '
                value: |-
                  {
                      "rules": [
                          {
                              "rule_id": "my-rule1",
                              "type": "pinned",
                              "criteria": [
                                  {
                                      "type": "contains",
                                      "metadata": "user_query",
                                      "values": [ "pugs", "puggles" ]
                                  },
                                  {
                                      "type": "exact",
                                      "metadata": "user_country",
                                      "values": [ "us" ]
                                  }
                              ],
                              "actions": {
                                  "ids": [
                                      "id1",
                                      "id2"
                                  ]
                              }
                          },
                          {
                              "rule_id": "my-rule2",
                              "type": "pinned",
                              "criteria": [
                                  {
                                      "type": "fuzzy",
                                      "metadata": "user_query",
                                      "values": [ "rescue dogs" ]
                                  }
                              ],
                              "actions": {
                                  "docs": [
                                      {
                                          "_index": "index1",
                                          "_id": "id3"
                                      },
                                      {
                                          "_index": "index2",
                                          "_id": "id4"
                                      }
                                  ]
                              }
                          }
                      ]
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  total_matched_rules:
                    type: number
                  matched_rules:
                    type: array
                    items:
                      "$ref": "#/components/schemas/query_rules.test.QueryRulesetMatchedRule"
                required:
                - total_matched_rules
                - matched_rules
              examples:
                QueryRulesetTestResponseExample1:
                  description: A successful response from `POST _query_rules/my-ruleset/_test`.
                  value: |-
                    {
                      "total_matched_rules": 1,
                      "matched_rules": [
                        {
                          "ruleset_id": "my-ruleset",
                          "rule_id": "my-rule1"
                        }
                      ]
                    }
      x-state: Generally available; Added in 8.10.0
      x-codeSamples:
      - lang: Console
        source: |-
          PUT _query_rules/my-ruleset
          {
              "rules": [
                  {
                      "rule_id": "my-rule1",
                      "type": "pinned",
                      "criteria": [
                          {
                              "type": "contains",
                              "metadata": "user_query",
                              "values": [ "pugs", "puggles" ]
                          },
                          {
                              "type": "exact",
                              "metadata": "user_country",
                              "values": [ "us" ]
                          }
                      ],
                      "actions": {
                          "ids": [
                              "id1",
                              "id2"
                          ]
                      }
                  },
                  {
                      "rule_id": "my-rule2",
                      "type": "pinned",
                      "criteria": [
                          {
                              "type": "fuzzy",
                              "metadata": "user_query",
                              "values": [ "rescue dogs" ]
                          }
                      ],
                      "actions": {
                          "docs": [
                              {
                                  "_index": "index1",
                                  "_id": "id3"
                              },
                              {
                                  "_index": "index2",
                                  "_id": "id4"
                              }
                          ]
                      }
                  }
              ]
          }
      - lang: Python
        source: |-
          resp = client.query_rules.put_ruleset(
              ruleset_id="my-ruleset",
              rules=[
                  {
                      "rule_id": "my-rule1",
                      "type": "pinned",
                      "criteria": [
                          {
                              "type": "contains",
                              "metadata": "user_query",
                              "values": [
                                  "pugs",
                                  "puggles"
                              ]
                          },
                          {
                              "type": "exact",
                              "metadata": "user_country",
                              "values": [
                                  "us"
                              ]
                          }
                      ],
                      "actions": {
                          "ids": [
                              "id1",
                              "id2"
                          ]
                      }
                  },
                  {
                      "rule_id": "my-rule2",
                      "type": "pinned",
                      "criteria": [
                          {
                              "type": "fuzzy",
                              "metadata": "user_query",
                              "values": [
                                  "rescue dogs"
                              ]
                          }
                      ],
                      "actions": {
                          "docs": [
                              {
                                  "_index": "index1",
                                  "_id": "id3"
                              },
                              {
                                  "_index": "index2",
                                  "_id": "id4"
                              }
                          ]
                      }
                  }
              ],
          )
      - lang: JavaScript
        source: |-
          const response = await client.queryRules.putRuleset({
            ruleset_id: "my-ruleset",
            rules: [
              {
                rule_id: "my-rule1",
                type: "pinned",
                criteria: [
                  {
                    type: "contains",
                    metadata: "user_query",
                    values: ["pugs", "puggles"],
                  },
                  {
                    type: "exact",
                    metadata: "user_country",
                    values: ["us"],
                  },
                ],
                actions: {
                  ids: ["id1", "id2"],
                },
              },
              {
                rule_id: "my-rule2",
                type: "pinned",
                criteria: [
                  {
                    type: "fuzzy",
                    metadata: "user_query",
                    values: ["rescue dogs"],
                  },
                ],
                actions: {
                  docs: [
                    {
                      _index: "index1",
                      _id: "id3",
                    },
                    {
                      _index: "index2",
                      _id: "id4",
                    },
                  ],
                },
              },
            ],
          });
      - lang: Ruby
        source: |-
          response = client.query_rules.put_ruleset(
            ruleset_id: "my-ruleset",
            body: {
              "rules": [
                {
                  "rule_id": "my-rule1",
                  "type": "pinned",
                  "criteria": [
                    {
                      "type": "contains",
                      "metadata": "user_query",
                      "values": [
                        "pugs",
                        "puggles"
                      ]
                    },
                    {
                      "type": "exact",
                      "metadata": "user_country",
                      "values": [
                        "us"
                      ]
                    }
                  ],
                  "actions": {
                    "ids": [
                      "id1",
                      "id2"
                    ]
                  }
                },
                {
                  "rule_id": "my-rule2",
                  "type": "pinned",
                  "criteria": [
                    {
                      "type": "fuzzy",
                      "metadata": "user_query",
                      "values": [
                        "rescue dogs"
                      ]
                    }
                  ],
                  "actions": {
                    "docs": [
                      {
                        "_index": "index1",
                        "_id": "id3"
                      },
                      {
                        "_index": "index2",
                        "_id": "id4"
                      }
                    ]
                  }
                }
              ]
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->queryRules()->putRuleset([
              "ruleset_id" => "my-ruleset",
              "body" => [
                  "rules" => array(
                      [
                          "rule_id" => "my-rule1",
                          "type" => "pinned",
                          "criteria" => array(
                              [
                                  "type" => "contains",
                                  "metadata" => "user_query",
                                  "values" => array(
                                      "pugs",
                                      "puggles",
                                  ),
                              ],
                              [
                                  "type" => "exact",
                                  "metadata" => "user_country",
                                  "values" => array(
                                      "us",
                                  ),
                              ],
                          ),
                          "actions" => [
                              "ids" => array(
                                  "id1",
                                  "id2",
                              ),
                          ],
                      ],
                      [
                          "rule_id" => "my-rule2",
                          "type" => "pinned",
                          "criteria" => array(
                              [
                                  "type" => "fuzzy",
                                  "metadata" => "user_query",
                                  "values" => array(
                                      "rescue dogs",
                                  ),
                              ],
                          ),
                          "actions" => [
                              "docs" => array(
                                  [
                                      "_index" => "index1",
                                      "_id" => "id3",
                                  ],
                                  [
                                      "_index" => "index2",
                                      "_id" => "id4",
                                  ],
                              ),
                          ],
                      ],
                  ),
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"rules":[{"rule_id":"my-rule1","type":"pinned","criteria":[{"type":"contains","metadata":"user_query","values":["pugs","puggles"]},{"type":"exact","metadata":"user_country","values":["us"]}],"actions":{"ids":["id1","id2"]}},{"rule_id":"my-rule2","type":"pinned","criteria":[{"type":"fuzzy","metadata":"user_query","values":["rescue
          dogs"]}],"actions":{"docs":[{"_index":"index1","_id":"id3"},{"_index":"index2","_id":"id4"}]}}]}''
          "$ELASTICSEARCH_URL/_query_rules/my-ruleset"'
      - lang: Java
        source: |
          client.queryRules().putRuleset(p -> p
              .rules(List.of(QueryRule.queryRuleOf(q -> q
                      .ruleId("my-rule1")
                      .type(QueryRuleType.Pinned)
                      .criteria(List.of(QueryRuleCriteria.of(qu -> qu
                              .type(QueryRuleCriteriaType.Contains)
                              .metadata("user_query")
                              .values(List.of(JsonData.fromJson("\"pugs\""),JsonData.fromJson("\"puggles\"")))
                          ),QueryRuleCriteria.of(qu -> qu
                              .type(QueryRuleCriteriaType.Exact)
                              .metadata("user_country")
                              .values(JsonData.fromJson("\"us\""))
                          )))
                      .actions(a -> a
                          .ids(List.of("id1","id2"))
                      )
                  ),QueryRule.queryRuleOf(q -> q
                      .ruleId("my-rule2")
                      .type(QueryRuleType.Pinned)
                      .criteria(c -> c
                          .type(QueryRuleCriteriaType.Fuzzy)
                          .metadata("user_query")
                          .values(JsonData.fromJson("\"rescue dogs\""))
                      )
                      .actions(a -> a
                          .docs(List.of(PinnedDoc.of(pi -> pi
                                  .id("id3")
                                  .index("index1")
                              ),PinnedDoc.of(pi -> pi
                                  .id("id4")
                                  .index("index2")
                              )))
                      )
                  )))
              .rulesetId("my-ruleset")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/{index}/_rank_eval":
    post:
      tags:
      - search
      summary: 'Evaluate ranked search results

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_rank_eval</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_rank_eval</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/{index}/_rank_eval</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/{index}/_rank_eval</span>\n
        \                     </div>\n                    \n\nEvaluate the quality
        of ranked search results over a set of typical search queries.\n\n## Required
        authorization\n\n* Index privileges: `read`\n"
      operationId: rank-eval
      parameters:
      - "$ref": "#/components/parameters/rank_eval-index"
      - "$ref": "#/components/parameters/rank_eval-allow_no_indices"
      - "$ref": "#/components/parameters/rank_eval-expand_wildcards"
      - "$ref": "#/components/parameters/rank_eval-ignore_unavailable"
      - "$ref": "#/components/parameters/rank_eval-search_type"
      requestBody:
        "$ref": "#/components/requestBodies/rank_eval"
      responses:
        '200':
          "$ref": "#/components/responses/rank_eval-200"
      x-state: Generally available; Added in 6.2.0
      x-codeSamples:
      - lang: Console
        source: |-
          GET /my-index-000001/_rank_eval
          {
            "requests": [
              {
                "id": "JFK query",
                "request": { "query": { "match_all": {} } },
                "ratings": []
              } ],
            "metric": {
              "precision": {
                "k": 20,
                "relevant_rating_threshold": 1,
                "ignore_unlabeled": false
              }
            }
          }
      - lang: Python
        source: |-
          resp = client.rank_eval(
              index="my-index-000001",
              requests=[
                  {
                      "id": "JFK query",
                      "request": {
                          "query": {
                              "match_all": {}
                          }
                      },
                      "ratings": []
                  }
              ],
              metric={
                  "precision": {
                      "k": 20,
                      "relevant_rating_threshold": 1,
                      "ignore_unlabeled": False
                  }
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.rankEval({
            index: "my-index-000001",
            requests: [
              {
                id: "JFK query",
                request: {
                  query: {
                    match_all: {},
                  },
                },
                ratings: [],
              },
            ],
            metric: {
              precision: {
                k: 20,
                relevant_rating_threshold: 1,
                ignore_unlabeled: false,
              },
            },
          });
      - lang: Ruby
        source: |-
          response = client.rank_eval(
            index: "my-index-000001",
            body: {
              "requests": [
                {
                  "id": "JFK query",
                  "request": {
                    "query": {
                      "match_all": {}
                    }
                  },
                  "ratings": []
                }
              ],
              "metric": {
                "precision": {
                  "k": 20,
                  "relevant_rating_threshold": 1,
                  "ignore_unlabeled": false
                }
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->rankEval([
              "index" => "my-index-000001",
              "body" => [
                  "requests" => array(
                      [
                          "id" => "JFK query",
                          "request" => [
                              "query" => [
                                  "match_all" => new ArrayObject([]),
                              ],
                          ],
                          "ratings" => array(
                          ),
                      ],
                  ),
                  "metric" => [
                      "precision" => [
                          "k" => 20,
                          "relevant_rating_threshold" => 1,
                          "ignore_unlabeled" => false,
                      ],
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"requests":[{"id":"JFK query","request":{"query":{"match_all":{}}},"ratings":[]}],"metric":{"precision":{"k":20,"relevant_rating_threshold":1,"ignore_unlabeled":false}}}''
          "$ELASTICSEARCH_URL/my-index-000001/_rank_eval"'
      - lang: Java
        source: |
          client.rankEval(r -> r
              .index("my-index-000001")
              .metric(m -> m
                  .precision(p -> p
                      .ignoreUnlabeled(false)
                      .relevantRatingThreshold(1)
                      .k(20)
                  )
              )
              .requests(re -> re
                  .id("JFK query")
                  .request(req -> req
                      .query(q -> q
                          .matchAll(m -> m)
                      )
                  )
              )
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_reindex":
    post:
      tags:
      - document
      summary: Reindex documents
      description: |
        Copy documents from a source to a destination.
        You can copy all documents to the destination index or reindex a subset of the documents.
        The source can be any existing index, alias, or data stream.
        The destination must differ from the source.
        For example, you cannot reindex a data stream into itself.

        IMPORTANT: Reindex requires `_source` to be enabled for all documents in the source.
        The destination should be configured as wanted before calling the reindex API.
        Reindex does not copy the settings from the source or its associated template.
        Mappings, shard counts, and replicas, for example, must be configured ahead of time.

        If the Elasticsearch security features are enabled, you must have the following security privileges:

        * The `read` index privilege for the source data stream, index, or alias.
        * The `write` index privilege for the destination data stream, index, or index alias.
        * To automatically create a data stream or index with a reindex API request, you must have the `auto_configure`, `create_index`, or `manage` index privilege for the destination data stream, index, or alias.
        * If reindexing from a remote cluster, the `source.remote.user` must have the `monitor` cluster privilege and the `read` index privilege for the source data stream, index, or alias.

        If reindexing from a remote cluster into a cluster using Elastic Stack, you must explicitly allow the remote host using the `reindex.remote.whitelist` node setting on the destination cluster.
        If reindexing from a remote cluster into an Elastic Cloud Serverless project, only remote hosts from Elastic Cloud Hosted are allowed.
        Automatic data stream creation requires a matching index template with data stream enabled.

        The `dest` element can be configured like the index API to control optimistic concurrency control.
        Omitting `version_type` or setting it to `internal` causes Elasticsearch to blindly dump documents into the destination, overwriting any that happen to have the same ID.

        Setting `version_type` to `external` causes Elasticsearch to preserve the `version` from the source, create any documents that are missing, and update any documents that have an older version in the destination than they do in the source.

        Setting `op_type` to `create` causes the reindex API to create only missing documents in the destination.
        All existing documents will cause a version conflict.

        IMPORTANT: Because data streams are append-only, any reindex request to a destination data stream must have an `op_type` of `create`.
        A reindex can only add new documents to a destination data stream.
        It cannot update existing documents in a destination data stream.

        By default, version conflicts abort the reindex process.
        To continue reindexing if there are conflicts, set the `conflicts` request body property to `proceed`.
        In this case, the response includes a count of the version conflicts that were encountered.
        Note that the handling of other error types is unaffected by the `conflicts` property.
        Additionally, if you opt to count version conflicts, the operation could attempt to reindex more documents from the source than `max_docs` until it has successfully indexed `max_docs` documents into the target or it has gone through every document in the source query.

        It's recommended to reindex on indices with a green status. Reindexing can fail when a node shuts down or crashes.
        * When requested with `wait_for_completion=true` (default), the request fails if the node shuts down.
        * When requested with `wait_for_completion=false`, a task id is returned, for use with the task management APIs. The task may disappear or fail if the node shuts down.
        When retrying a failed reindex operation, it might be necessary to set `conflicts=proceed` or to first delete the partial destination index.
        Additionally, dry runs, checking disk space, and fetching index recovery information can help address the root cause.

        Refer to the linked documentation for examples of how to reindex documents.

        ## Required authorization

        * Index privileges: `read`,`write`
      externalDocs:
        url: https://www.elastic.co/docs/reference/elasticsearch/rest-apis/reindex-indices
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/docs-reindex.html
      operationId: reindex
      parameters:
      - in: query
        name: refresh
        description: If `true`, the request refreshes affected shards to make this
          operation visible to search.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: requests_per_second
        description: |-
          The throttle for this request in sub-requests per second.
          By default, there is no throttle.
        deprecated: false
        schema:
          type: number
        style: form
      - in: query
        name: scroll
        description: The period of time that a consistent view of the index should
          be maintained for scrolled search.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: slices
        description: |-
          The number of slices this task should be divided into.
          It defaults to one slice, which means the task isn't sliced into subtasks.

          Reindex supports sliced scroll to parallelize the reindexing process.
          This parallelization can improve efficiency and provide a convenient way to break the request down into smaller parts.

          NOTE: Reindexing from remote clusters does not support manual or automatic slicing.

          If set to `auto`, Elasticsearch chooses the number of slices to use.
          This setting will use one slice per shard, up to a certain limit.
          If there are multiple sources, it will choose the number of slices based on the index or backing index with the smallest number of shards.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Slices"
        style: form
      - in: query
        name: max_docs
        description: |-
          The maximum number of documents to reindex.
          By default, all documents are reindexed.
          If it is a value less then or equal to `scroll_size`, a scroll will not be used to retrieve the results for the operation.

          If `conflicts` is set to `proceed`, the reindex operation could attempt to reindex more documents from the source than `max_docs` until it has successfully indexed `max_docs` documents into the target or it has gone through every document in the source query.
        deprecated: false
        schema:
          type: number
        style: form
      - in: query
        name: timeout
        description: |-
          The period each indexing waits for automatic index creation, dynamic mapping updates, and waiting for active shards.
          By default, Elasticsearch waits for at least one minute before failing.
          The actual wait time could be longer, particularly when multiple waits occur.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: wait_for_active_shards
        description: |-
          The number of shard copies that must be active before proceeding with the operation.
          Set it to `all` or any positive integer up to the total number of shards in the index (`number_of_replicas+1`).
          The default value is one, which means it waits for each primary shard to be active.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.WaitForActiveShards"
        style: form
      - in: query
        name: wait_for_completion
        description: If `true`, the request blocks until the operation is complete.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: require_alias
        description: If `true`, the destination must be an index alias.
        deprecated: false
        schema:
          type: boolean
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                conflicts:
                  description: |+
                    Indicates whether to continue reindexing even when there are conflicts.

                    Supported values include:
                      - `abort`: Stop reindexing if there are conflicts.
                      - `proceed`: Continue reindexing even if there are conflicts.

                  default: abort
                  allOf:
                  - "$ref": "#/components/schemas/_types.Conflicts"
                dest:
                  description: The destination you are copying to.
                  allOf:
                  - "$ref": "#/components/schemas/_global.reindex.Destination"
                max_docs:
                  description: |-
                    The maximum number of documents to reindex.
                    By default, all documents are reindexed.
                    If it is a value less then or equal to `scroll_size`, a scroll will not be used to retrieve the results for the operation.

                    If `conflicts` is set to `proceed`, the reindex operation could attempt to reindex more documents from the source than `max_docs` until it has successfully indexed `max_docs` documents into the target or it has gone through every document in the source query.
                  type: number
                script:
                  description: The script to run to update the document source or
                    metadata when reindexing.
                  allOf:
                  - "$ref": "#/components/schemas/_types.Script"
                source:
                  description: The source you are copying from.
                  allOf:
                  - "$ref": "#/components/schemas/_global.reindex.Source"
              required:
              - dest
              - source
            examples:
              ReindexRequestExample1:
                summary: Reindex multiple sources
                description: 'Run `POST _reindex` to reindex from multiple sources.
                  The `index` attribute in source can be a list, which enables you
                  to copy from lots of sources in one request. This example copies
                  documents from the `my-index-000001` and `my-index-000002` indices.

                  '
                value: |-
                  {
                    "source": {
                      "index": ["my-index-000001", "my-index-000002"]
                    },
                    "dest": {
                      "index": "my-new-index-000002"
                    }
                  }
              ReindexRequestExample10:
                summary: Reindex with Painless
                description: 'You can use Painless to reindex daily indices to apply
                  a new template to the existing documents. The script extracts the
                  date from the index name and creates a new index with `-1` appended.
                  For example, all data from `metricbeat-2016.05.31` will be reindexed
                  into `metricbeat-2016.05.31-1`.

                  '
                value: |-
                  {
                    "source": {
                      "index": "metricbeat-*"
                    },
                    "dest": {
                      "index": "metricbeat"
                    },
                    "script": {
                      "lang": "painless",
                      "source": "ctx._index = 'metricbeat-' + (ctx._index.substring('metricbeat-'.length(), ctx._index.length())) + '-1'"
                    }
                  }
              ReindexRequestExample11:
                summary: Reindex a random subset
                description: 'Run `POST _reindex` to extract a random subset of the
                  source for testing. You might need to adjust the `min_score` value
                  depending on the relative amount of data extracted from source.

                  '
                value: |-
                  {
                    "max_docs": 10,
                    "source": {
                      "index": "my-index-000001",
                      "query": {
                        "function_score" : {
                          "random_score" : {},
                          "min_score" : 0.9
                        }
                      }
                    },
                    "dest": {
                      "index": "my-new-index-000001"
                    }
                  }
              ReindexRequestExample12:
                summary: Reindex modified documents
                description: 'Run `POST _reindex` to modify documents during reindexing.
                  This example bumps the version of the source document.

                  '
                value: |-
                  {
                    "source": {
                      "index": "my-index-000001"
                    },
                    "dest": {
                      "index": "my-new-index-000001",
                      "version_type": "external"
                    },
                    "script": {
                      "source": "if (ctx._source.foo == 'bar') {ctx._version++; ctx._source.remove('foo')}",
                      "lang": "painless"
                    }
                  }
              ReindexRequestExample13:
                summary: Reindex from remote on Elastic Cloud
                description: 'When using Elastic Cloud, you can run `POST _reindex`
                  and authenticate against a remote cluster with an API key.

                  '
                value: |-
                  {
                    "source": {
                      "remote": {
                        "host": "http://otherhost:9200",
                        "username": "user",
                        "password": "pass"
                      },
                      "index": "my-index-000001",
                      "query": {
                        "match": {
                          "test": "data"
                        }
                      }
                    },
                    "dest": {
                      "index": "my-new-index-000001"
                    }
                  }
              ReindexRequestExample2:
                summary: Manual slicing
                description: 'Run `POST _reindex` to slice a reindex request manually.
                  Provide a slice ID and total number of slices to each request.

                  '
                value: |-
                  {
                    "source": {
                      "index": "my-index-000001",
                      "slice": {
                        "id": 0,
                        "max": 2
                      }
                    },
                    "dest": {
                      "index": "my-new-index-000001"
                    }
                  }
              ReindexRequestExample3:
                summary: Automatic slicing
                description: 'Run `POST _reindex?slices=5&refresh` to automatically
                  parallelize using sliced scroll to slice on `_id`. The `slices`
                  parameter specifies the number of slices to use.

                  '
                value: |-
                  {
                    "source": {
                      "index": "my-index-000001"
                    },
                    "dest": {
                      "index": "my-new-index-000001"
                    }
                  }
              ReindexRequestExample4:
                summary: Routing
                description: 'By default if reindex sees a document with routing then
                  the routing is preserved unless it''s changed by the script. You
                  can set `routing` on the `dest` request to change this behavior.
                  In this example, run `POST _reindex` to copy all documents from
                  the `source` with the company name `cat` into the `dest` with routing
                  set to `cat`.

                  '
                value: |-
                  {
                    "source": {
                      "index": "source",
                      "query": {
                        "match": {
                          "company": "cat"
                        }
                      }
                    },
                    "dest": {
                      "index": "dest",
                      "routing": "=cat"
                    }
                  }
              ReindexRequestExample5:
                summary: Ingest pipelines
                description: Run `POST _reindex` and use the ingest pipelines feature.
                value: |-
                  {
                    "source": {
                      "index": "source"
                    },
                    "dest": {
                      "index": "dest",
                      "pipeline": "some_ingest_pipeline"
                    }
                  }
              ReindexRequestExample6:
                summary: Reindex with a query
                description: 'Run `POST _reindex` and add a query to the `source`
                  to limit the documents to reindex. For example, this request copies
                  documents into `my-new-index-000001` only if they have a `user.id`
                  of `kimchy`.

                  '
                value: |-
                  {
                    "source": {
                      "index": "my-index-000001",
                      "query": {
                        "term": {
                          "user.id": "kimchy"
                        }
                      }
                    },
                    "dest": {
                      "index": "my-new-index-000001"
                    }
                  }
              ReindexRequestExample7:
                summary: Reindex with max_docs
                description: 'You can limit the number of processed documents by setting
                  `max_docs`. For example, run `POST _reindex` to copy a single document
                  from `my-index-000001` to `my-new-index-000001`.

                  '
                value: |-
                  {
                    "max_docs": 1,
                    "source": {
                      "index": "my-index-000001"
                    },
                    "dest": {
                      "index": "my-new-index-000001"
                    }
                  }
              ReindexRequestExample8:
                summary: Reindex selected fields
                description: 'You can use source filtering to reindex a subset of
                  the fields in the original documents. For example, run `POST _reindex`
                  the reindex only the `user.id` and `_doc` fields of each document.

                  '
                value: |-
                  {
                    "source": {
                      "index": "my-index-000001",
                      "_source": ["user.id", "_doc"]
                    },
                    "dest": {
                      "index": "my-new-index-000001"
                    }
                  }
              ReindexRequestExample9:
                summary: Reindex new field names
                description: 'A reindex operation can build a copy of an index with
                  renamed fields. If your index has documents with `text` and `flag`
                  fields, you can change the latter field name to `tag` during the
                  reindex.

                  '
                value: |-
                  {
                    "source": {
                      "index": "my-index-000001"
                    },
                    "dest": {
                      "index": "my-new-index-000001"
                    },
                    "script": {
                      "source": "ctx._source.tag = ctx._source.remove(\"flag\")"
                    }
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  batches:
                    description: The number of scroll responses that were pulled back
                      by the reindex.
                    type: number
                  created:
                    description: The number of documents that were successfully created.
                    type: number
                  deleted:
                    description: The number of documents that were successfully deleted.
                    type: number
                  failures:
                    description: |-
                      If there were any unrecoverable errors during the process, it is an array of those failures.
                      If this array is not empty, the request ended because of those failures.
                      Reindex is implemented using batches and any failure causes the entire process to end but all failures in the current batch are collected into the array.
                      You can use the `conflicts` option to prevent the reindex from ending on version conflicts.
                    type: array
                    items:
                      "$ref": "#/components/schemas/_types.BulkIndexByScrollFailure"
                  noops:
                    description: The number of documents that were ignored because
                      the script used for the reindex returned a `noop` value for
                      `ctx.op`.
                    type: number
                  retries:
                    description: The number of retries attempted by reindex.
                    allOf:
                    - "$ref": "#/components/schemas/_types.Retries"
                  requests_per_second:
                    description: The number of requests per second effectively run
                      during the reindex.
                    type: number
                  slice_id:
                    type: number
                  slices:
                    description: Status of each slice if the reindex was sliced
                    type: array
                    items:
                      "$ref": "#/components/schemas/_types.ReindexStatus"
                  task:
                    allOf:
                    - "$ref": "#/components/schemas/_types.TaskId"
                  throttled_millis:
                    description: The number of milliseconds the request slept to conform
                      to `requests_per_second`.
                    allOf:
                    - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
                  throttled_until_millis:
                    description: |-
                      This field should always be equal to zero in a reindex response.
                      It has meaning only when using the task API, where it indicates the next time (in milliseconds since epoch) that a throttled request will be run again in order to conform to `requests_per_second`.
                    allOf:
                    - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
                  timed_out:
                    description: If any of the requests that ran during the reindex
                      timed out, it is `true`.
                    type: boolean
                  took:
                    description: The total milliseconds the entire operation took.
                    allOf:
                    - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
                  total:
                    description: The number of documents that were successfully processed.
                    type: number
                  updated:
                    description: |-
                      The number of documents that were successfully updated.
                      That is to say, a document with the same ID already existed before the reindex updated it.
                    type: number
                  version_conflicts:
                    description: The number of version conflicts that occurred.
                    type: number
      x-state: Generally available; Added in 2.3.0
      x-codeSamples:
      - lang: Console
        source: |-
          POST _reindex
          {
            "source": {
              "index": ["my-index-000001", "my-index-000002"]
            },
            "dest": {
              "index": "my-new-index-000002"
            }
          }
      - lang: Python
        source: |-
          resp = client.reindex(
              source={
                  "index": [
                      "my-index-000001",
                      "my-index-000002"
                  ]
              },
              dest={
                  "index": "my-new-index-000002"
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.reindex({
            source: {
              index: ["my-index-000001", "my-index-000002"],
            },
            dest: {
              index: "my-new-index-000002",
            },
          });
      - lang: Ruby
        source: |-
          response = client.reindex(
            body: {
              "source": {
                "index": [
                  "my-index-000001",
                  "my-index-000002"
                ]
              },
              "dest": {
                "index": "my-new-index-000002"
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->reindex([
              "body" => [
                  "source" => [
                      "index" => array(
                          "my-index-000001",
                          "my-index-000002",
                      ),
                  ],
                  "dest" => [
                      "index" => "my-new-index-000002",
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"source":{"index":["my-index-000001","my-index-000002"]},"dest":{"index":"my-new-index-000002"}}''
          "$ELASTICSEARCH_URL/_reindex"'
      - lang: Java
        source: |
          client.reindex(r -> r
              .dest(d -> d
                  .index("my-new-index-000002")
              )
              .source(s -> s
                  .index(List.of("my-index-000001","my-index-000002"))
              )
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_reindex/{task_id}/_rethrottle":
    post:
      tags:
      - document
      summary: Throttle a reindex operation
      description: |-
        Change the number of requests per second for a particular reindex operation.
        For example:

        ```
        POST _reindex/r1A2WoRbTwKZ516z6NEs5A:36619/_rethrottle?requests_per_second=-1
        ```

        Rethrottling that speeds up the query takes effect immediately.
        Rethrottling that slows down the query will take effect after completing the current batch.
        This behavior prevents scroll timeouts.
      operationId: reindex-rethrottle
      parameters:
      - in: path
        name: task_id
        description: The task identifier, which can be found by using the tasks API.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: requests_per_second
        description: |-
          The throttle for this request in sub-requests per second.
          It can be either `-1` to turn off throttling or any decimal number like `1.7` or `12` to throttle to that level.
        required: true
        deprecated: false
        schema:
          type: number
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  nodes:
                    type: object
                    additionalProperties:
                      "$ref": "#/components/schemas/_global.reindex_rethrottle.ReindexNode"
                required:
                - nodes
      x-state: Generally available; Added in 2.4.0
      x-codeSamples:
      - lang: Console
        source: 'POST _reindex/r1A2WoRbTwKZ516z6NEs5A:36619/_rethrottle?requests_per_second=-1

          '
      - lang: Python
        source: |-
          resp = client.reindex_rethrottle(
              task_id="r1A2WoRbTwKZ516z6NEs5A:36619",
              requests_per_second="-1",
          )
      - lang: JavaScript
        source: |-
          const response = await client.reindexRethrottle({
            task_id: "r1A2WoRbTwKZ516z6NEs5A:36619",
            requests_per_second: "-1",
          });
      - lang: Ruby
        source: |-
          response = client.reindex_rethrottle(
            task_id: "r1A2WoRbTwKZ516z6NEs5A:36619",
            requests_per_second: "-1"
          )
      - lang: PHP
        source: |-
          $resp = $client->reindexRethrottle([
              "task_id" => "r1A2WoRbTwKZ516z6NEs5A:36619",
              "requests_per_second" => "-1",
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_reindex/r1A2WoRbTwKZ516z6NEs5A:36619/_rethrottle?requests_per_second=-1"'
      - lang: Java
        source: |
          client.reindexRethrottle(r -> r
              .requestsPerSecond(-1.0F)
              .taskId("r1A2WoRbTwKZ516z6NEs5A:36619")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_render/template/{id}":
    post:
      tags:
      - search
      summary: 'Render a search template

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_render/template</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_render/template</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_render/template/{id}</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_render/template/{id}</span>\n
        \                     </div>\n                    \n\nRender a search template
        as a search request body.\n\n## Required authorization\n\n* Index privileges:
        `read`\n"
      operationId: render-search-template
      parameters:
      - "$ref": "#/components/parameters/render_search_template-id"
      requestBody:
        "$ref": "#/components/requestBodies/render_search_template"
      responses:
        '200':
          "$ref": "#/components/responses/render_search_template-200"
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: |-
          POST _render/template
          {
            "id": "my-search-template",
            "params": {
              "query_string": "hello world",
              "from": 20,
              "size": 10
            }
          }
      - lang: Python
        source: |-
          resp = client.render_search_template(
              id="my-search-template",
              params={
                  "query_string": "hello world",
                  "from": 20,
                  "size": 10
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.renderSearchTemplate({
            id: "my-search-template",
            params: {
              query_string: "hello world",
              from: 20,
              size: 10,
            },
          });
      - lang: Ruby
        source: |-
          response = client.render_search_template(
            body: {
              "id": "my-search-template",
              "params": {
                "query_string": "hello world",
                "from": 20,
                "size": 10
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->renderSearchTemplate([
              "body" => [
                  "id" => "my-search-template",
                  "params" => [
                      "query_string" => "hello world",
                      "from" => 20,
                      "size" => 10,
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"id":"my-search-template","params":{"query_string":"hello
          world","from":20,"size":10}}'' "$ELASTICSEARCH_URL/_render/template"'
      - lang: Java
        source: |
          client.renderSearchTemplate(r -> r
              .id("my-search-template")
              .params(Map.of("size", JsonData.fromJson("10"),"from", JsonData.fromJson("20"),"query_string", JsonData.fromJson("\"hello world\"")))
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_rollup/job/{id}":
    get:
      tags:
      - rollup
      summary: 'Get rollup job information

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_rollup/job</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_rollup/job/{id}</span>\n
        \                     </div>\n                    \n\nGet the configuration,
        stats, and status of rollup jobs.\n\nNOTE: This API returns only active (both
        `STARTED` and `STOPPED`) jobs.\nIf a job was created, ran for a while, then
        was deleted, the API does not return any details about it.\nFor details about
        a historical rollup job, the rollup capabilities API may be more useful.\n\n##
        Required authorization\n\n* Cluster privileges: `monitor_rollup`\n"
      operationId: rollup-get-jobs
      parameters:
      - "$ref": "#/components/parameters/rollup.get_jobs-id"
      responses:
        '200':
          "$ref": "#/components/responses/rollup.get_jobs-200"
      deprecated: true
      x-state: Technical preview; Added in 6.3.0
      x-codeSamples:
      - lang: Console
        source: 'GET _rollup/job/sensor

          '
      - lang: Python
        source: |-
          resp = client.rollup.get_jobs(
              id="sensor",
          )
      - lang: JavaScript
        source: |-
          const response = await client.rollup.getJobs({
            id: "sensor",
          });
      - lang: Ruby
        source: |-
          response = client.rollup.get_jobs(
            id: "sensor"
          )
      - lang: PHP
        source: |-
          $resp = $client->rollup()->getJobs([
              "id" => "sensor",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_rollup/job/sensor"'
      - lang: Java
        source: |
          client.rollup().getJobs(g -> g
              .id("sensor")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    put:
      tags:
      - rollup
      summary: Create a rollup job
      description: |
        WARNING: From 8.15.0, calling this API in a cluster with no rollup usage will fail with a message about the deprecation and planned removal of rollup features. A cluster needs to contain either a rollup job or a rollup index in order for this API to be allowed to run.

        The rollup job configuration contains all the details about how the job should run, when it indexes documents, and what future queries will be able to run against the rollup index.

        There are three main sections to the job configuration: the logistical details about the job (for example, the cron schedule), the fields that are used for grouping, and what metrics to collect for each group.

        Jobs are created in a `STOPPED` state. You can start them with the start rollup jobs API.

        ## Required authorization

        * Cluster privileges: `manage`,`manage_rollup`
      operationId: rollup-put-job
      parameters:
      - in: path
        name: id
        description: |-
          Identifier for the rollup job. This can be any alphanumeric string and uniquely identifies the
          data that is associated with the rollup job. The ID is persistent; it is stored with the rolled
          up data. If you create a job, let it run for a while, then delete the job, the data that the job
          rolled up is still be associated with this job ID. You cannot create a new job with the same ID
          since that could lead to problems with mismatched job configurations.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                cron:
                  description: |-
                    A cron string which defines the intervals when the rollup job should be executed. When the interval
                    triggers, the indexer attempts to rollup the data in the index pattern. The cron pattern is unrelated
                    to the time interval of the data being rolled up. For example, you may wish to create hourly rollups
                    of your document but to only run the indexer on a daily basis at midnight, as defined by the cron. The
                    cron pattern is defined just like a Watcher cron schedule.
                  type: string
                groups:
                  description: |-
                    Defines the grouping fields and aggregations that are defined for this rollup job. These fields will then be
                    available later for aggregating into buckets. These aggs and fields can be used in any combination. Think of
                    the groups configuration as defining a set of tools that can later be used in aggregations to partition the
                    data. Unlike raw data, we have to think ahead to which fields and aggregations might be used. Rollups provide
                    enough flexibility that you simply need to determine which fields are needed, not in what order they are needed.
                  allOf:
                  - "$ref": "#/components/schemas/rollup._types.Groupings"
                index_pattern:
                  description: |-
                    The index or index pattern to roll up. Supports wildcard-style patterns (`logstash-*`). The job attempts to
                    rollup the entire index or index-pattern.
                  type: string
                metrics:
                  description: |-
                    Defines the metrics to collect for each grouping tuple. By default, only the doc_counts are collected for each
                    group. To make rollup useful, you will often add metrics like averages, mins, maxes, etc. Metrics are defined
                    on a per-field basis and for each field you configure which metric should be collected.
                  type: array
                  items:
                    "$ref": "#/components/schemas/rollup._types.FieldMetric"
                page_size:
                  description: |-
                    The number of bucket results that are processed on each iteration of the rollup indexer. A larger value tends
                    to execute faster, but requires more memory during processing. This value has no effect on how the data is
                    rolled up; it is merely used for tweaking the speed or memory cost of the indexer.
                  type: number
                rollup_index:
                  description: The index that contains the rollup results. The index
                    can be shared with other rollup jobs. The data is stored so that
                    it doesn’t interfere with unrelated jobs.
                  allOf:
                  - "$ref": "#/components/schemas/_types.IndexName"
                timeout:
                  description: Time to wait for the request to complete.
                  default: 20s
                  allOf:
                  - "$ref": "#/components/schemas/_types.Duration"
                headers:
                  allOf:
                  - "$ref": "#/components/schemas/_types.HttpHeaders"
              required:
              - cron
              - groups
              - index_pattern
              - page_size
              - rollup_index
            examples:
              CreateRollupJobRequestExample1:
                description: 'Run `PUT _rollup/job/sensor` to create a rollup job
                  that targets the `sensor-*` index pattern. This configuration enables
                  date histograms to be used on the `timestamp` field and terms aggregations
                  to be used on the `node` field. This configuration defines metrics
                  over two fields: `temperature` and `voltage`. For the `temperature`
                  field, it collects the `min`, `max`, and `sum` of the temperature.
                  For `voltage`, it collects the `average`.

                  '
                value: |-
                  {
                    "index_pattern": "sensor-*",
                    "rollup_index": "sensor_rollup",
                    "cron": "*/30 * * * * ?",
                    "page_size": 1000,
                    "groups": {
                      "date_histogram": {
                        "field": "timestamp",
                        "fixed_interval": "1h",
                        "delay": "7d"
                      },
                      "terms": {
                        "fields": [ "node" ]
                      }
                    },
                    "metrics": [
                        {
                        "field": "temperature",
                        "metrics": [ "min", "max", "sum" ]
                      },
                      {
                        "field": "voltage",
                        "metrics": [ "avg" ]
                      }
                    ]
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
              examples:
                CreateRollupJobResponseExample1:
                  value: |-
                    {
                      "acknowledged": true
                    }
      deprecated: true
      x-state: Technical preview; Added in 6.3.0
      x-codeSamples:
      - lang: Console
        source: |-
          PUT _rollup/job/sensor
          {
            "index_pattern": "sensor-*",
            "rollup_index": "sensor_rollup",
            "cron": "*/30 * * * * ?",
            "page_size": 1000,
            "groups": {
              "date_histogram": {
                "field": "timestamp",
                "fixed_interval": "1h",
                "delay": "7d"
              },
              "terms": {
                "fields": [ "node" ]
              }
            },
            "metrics": [
                {
                "field": "temperature",
                "metrics": [ "min", "max", "sum" ]
              },
              {
                "field": "voltage",
                "metrics": [ "avg" ]
              }
            ]
          }
      - lang: Python
        source: |-
          resp = client.rollup.put_job(
              id="sensor",
              index_pattern="sensor-*",
              rollup_index="sensor_rollup",
              cron="*/30 * * * * ?",
              page_size=1000,
              groups={
                  "date_histogram": {
                      "field": "timestamp",
                      "fixed_interval": "1h",
                      "delay": "7d"
                  },
                  "terms": {
                      "fields": [
                          "node"
                      ]
                  }
              },
              metrics=[
                  {
                      "field": "temperature",
                      "metrics": [
                          "min",
                          "max",
                          "sum"
                      ]
                  },
                  {
                      "field": "voltage",
                      "metrics": [
                          "avg"
                      ]
                  }
              ],
          )
      - lang: JavaScript
        source: |-
          const response = await client.rollup.putJob({
            id: "sensor",
            index_pattern: "sensor-*",
            rollup_index: "sensor_rollup",
            cron: "*/30 * * * * ?",
            page_size: 1000,
            groups: {
              date_histogram: {
                field: "timestamp",
                fixed_interval: "1h",
                delay: "7d",
              },
              terms: {
                fields: ["node"],
              },
            },
            metrics: [
              {
                field: "temperature",
                metrics: ["min", "max", "sum"],
              },
              {
                field: "voltage",
                metrics: ["avg"],
              },
            ],
          });
      - lang: Ruby
        source: |-
          response = client.rollup.put_job(
            id: "sensor",
            body: {
              "index_pattern": "sensor-*",
              "rollup_index": "sensor_rollup",
              "cron": "*/30 * * * * ?",
              "page_size": 1000,
              "groups": {
                "date_histogram": {
                  "field": "timestamp",
                  "fixed_interval": "1h",
                  "delay": "7d"
                },
                "terms": {
                  "fields": [
                    "node"
                  ]
                }
              },
              "metrics": [
                {
                  "field": "temperature",
                  "metrics": [
                    "min",
                    "max",
                    "sum"
                  ]
                },
                {
                  "field": "voltage",
                  "metrics": [
                    "avg"
                  ]
                }
              ]
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->rollup()->putJob([
              "id" => "sensor",
              "body" => [
                  "index_pattern" => "sensor-*",
                  "rollup_index" => "sensor_rollup",
                  "cron" => "*/30 * * * * ?",
                  "page_size" => 1000,
                  "groups" => [
                      "date_histogram" => [
                          "field" => "timestamp",
                          "fixed_interval" => "1h",
                          "delay" => "7d",
                      ],
                      "terms" => [
                          "fields" => array(
                              "node",
                          ),
                      ],
                  ],
                  "metrics" => array(
                      [
                          "field" => "temperature",
                          "metrics" => array(
                              "min",
                              "max",
                              "sum",
                          ),
                      ],
                      [
                          "field" => "voltage",
                          "metrics" => array(
                              "avg",
                          ),
                      ],
                  ),
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"index_pattern":"sensor-*","rollup_index":"sensor_rollup","cron":"*/30
          * * * * ?","page_size":1000,"groups":{"date_histogram":{"field":"timestamp","fixed_interval":"1h","delay":"7d"},"terms":{"fields":["node"]}},"metrics":[{"field":"temperature","metrics":["min","max","sum"]},{"field":"voltage","metrics":["avg"]}]}''
          "$ELASTICSEARCH_URL/_rollup/job/sensor"'
      - lang: Java
        source: |
          client.rollup().putJob(p -> p
              .cron("*/30 * * * * ?")
              .groups(g -> g
                  .dateHistogram(d -> d
                      .delay(de -> de
                          .time("7d")
                      )
                      .field("timestamp")
                      .fixedInterval(f -> f
                          .time("1h")
                      )
                  )
                  .terms(t -> t
                      .fields("node")
                  )
              )
              .id("sensor")
              .indexPattern("sensor-*")
              .metrics(List.of(FieldMetric.of(f -> f
                      .field("temperature")
                      .metrics(List.of(Metric.Min,Metric.Max,Metric.Sum))
                  ),FieldMetric.of(f -> f
                      .field("voltage")
                      .metrics(Metric.Avg)
                  )))
              .pageSize(1000)
              .rollupIndex("sensor_rollup")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    delete:
      tags:
      - rollup
      summary: Delete a rollup job
      description: |
        A job must be stopped before it can be deleted.
        If you attempt to delete a started job, an error occurs.
        Similarly, if you attempt to delete a nonexistent job, an exception occurs.

        IMPORTANT: When you delete a job, you remove only the process that is actively monitoring and rolling up data.
        The API does not delete any previously rolled up data.
        This is by design; a user may wish to roll up a static data set.
        Because the data set is static, after it has been fully rolled up there is no need to keep the indexing rollup job around (as there will be no new data).
        Thus the job can be deleted, leaving behind the rolled up data for analysis.
        If you wish to also remove the rollup data and the rollup index contains the data for only a single job, you can delete the whole rollup index.
        If the rollup index stores data from several jobs, you must issue a delete-by-query that targets the rollup job's identifier in the rollup index. For example:

        ```
        POST my_rollup_index/_delete_by_query
        {
          "query": {
            "term": {
              "_rollup.id": "the_rollup_job_id"
            }
          }
        }
        ```

        ## Required authorization

        * Cluster privileges: `manage_rollup`
      operationId: rollup-delete-job
      parameters:
      - in: path
        name: id
        description: Identifier for the job.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  acknowledged:
                    type: boolean
                  task_failures:
                    type: array
                    items:
                      "$ref": "#/components/schemas/_types.TaskFailure"
                required:
                - acknowledged
              examples:
                DeleteRollupJobResponseExample1:
                  description: A successful response from `DELETE _rollup/job/sensor`.
                  value: |-
                    {
                      "acknowledged": true
                    }
      deprecated: true
      x-state: Technical preview; Added in 6.3.0
      x-codeSamples:
      - lang: Console
        source: 'DELETE _rollup/job/sensor

          '
      - lang: Python
        source: |-
          resp = client.rollup.delete_job(
              id="sensor",
          )
      - lang: JavaScript
        source: |-
          const response = await client.rollup.deleteJob({
            id: "sensor",
          });
      - lang: Ruby
        source: |-
          response = client.rollup.delete_job(
            id: "sensor"
          )
      - lang: PHP
        source: |-
          $resp = $client->rollup()->deleteJob([
              "id" => "sensor",
          ]);
      - lang: curl
        source: 'curl -X DELETE -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_rollup/job/sensor"'
      - lang: Java
        source: |
          client.rollup().deleteJob(d -> d
              .id("sensor")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_rollup/data/{id}":
    get:
      tags:
      - rollup
      summary: 'Get the rollup job capabilities

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_rollup/data</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_rollup/data/{id}</span>\n
        \                     </div>\n                    \n\nGet the capabilities
        of any rollup jobs that have been configured for a specific index or index
        pattern.\n\nThis API is useful because a rollup job is often configured to
        rollup only a subset of fields from the source index.\nFurthermore, only certain
        aggregations can be configured for various fields, leading to a limited subset
        of functionality depending on that configuration.\nThis API enables you to
        inspect an index and determine:\n\n1. Does this index have associated rollup
        data somewhere in the cluster?\n2. If yes to the first question, what fields
        were rolled up, what aggregations can be performed, and where does the data
        live?\n\n## Required authorization\n\n* Cluster privileges: `monitor_rollup`\n"
      operationId: rollup-get-rollup-caps
      parameters:
      - "$ref": "#/components/parameters/rollup.get_rollup_caps-id"
      responses:
        '200':
          "$ref": "#/components/responses/rollup.get_rollup_caps-200"
      deprecated: true
      x-state: Technical preview; Added in 6.3.0
      x-codeSamples:
      - lang: Console
        source: 'GET _rollup/data/sensor-*

          '
      - lang: Python
        source: |-
          resp = client.rollup.get_rollup_caps(
              id="sensor-*",
          )
      - lang: JavaScript
        source: |-
          const response = await client.rollup.getRollupCaps({
            id: "sensor-*",
          });
      - lang: Ruby
        source: |-
          response = client.rollup.get_rollup_caps(
            id: "sensor-*"
          )
      - lang: PHP
        source: |-
          $resp = $client->rollup()->getRollupCaps([
              "id" => "sensor-*",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_rollup/data/sensor-*"'
      - lang: Java
        source: |
          client.rollup().getRollupCaps(g -> g
              .id("sensor-*")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/{index}/_rollup/data":
    get:
      tags:
      - rollup
      summary: Get the rollup index capabilities
      description: |
        Get the rollup capabilities of all jobs inside of a rollup index.
        A single rollup index may store the data for multiple rollup jobs and may have a variety of capabilities depending on those jobs. This API enables you to determine:

        * What jobs are stored in an index (or indices specified via a pattern)?
        * What target indices were rolled up, what fields were used in those rollups, and what aggregations can be performed on each job?

        ## Required authorization

        * Index privileges: `read`
      operationId: rollup-get-rollup-index-caps
      parameters:
      - in: path
        name: index
        description: |-
          Data stream or index to check for rollup capabilities.
          Wildcard (`*`) expressions are supported.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Ids"
        style: simple
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                additionalProperties:
                  "$ref": "#/components/schemas/rollup.get_rollup_index_caps.IndexCapabilities"
              examples:
                GetRollupIndexCapabilitiesResponseExample1:
                  description: 'A successful response from `GET /sensor_rollup/_rollup/data`.
                    The response contains the rollup job ID, the index that holds
                    the rolled data, and the index pattern that the job was targeting.
                    It also shows a list of fields that contain data eligible for
                    rollup searches. For example, you can use a `min`, `max`, or `sum`
                    aggregation on the `temperature` field, but only a `date_histogram`
                    on `timestamp`.

                    '
                  value: |-
                    {
                      "sensor_rollup" : {
                        "rollup_jobs" : [
                          {
                            "job_id" : "sensor",
                            "rollup_index" : "sensor_rollup",
                            "index_pattern" : "sensor-*",
                            "fields" : {
                              "node" : [
                                {
                                  "agg" : "terms"
                                }
                              ],
                              "temperature" : [
                                {
                                  "agg" : "min"
                                },
                                {
                                  "agg" : "max"
                                },
                                {
                                  "agg" : "sum"
                                }
                              ],
                              "timestamp" : [
                                {
                                  "agg" : "date_histogram",
                                  "time_zone" : "UTC",
                                  "fixed_interval" : "1h",
                                  "delay": "7d"
                                }
                              ],
                              "voltage" : [
                                {
                                  "agg" : "avg"
                                }
                              ]
                            }
                          }
                        ]
                      }
                    }
      deprecated: true
      x-state: Technical preview; Added in 6.4.0
      x-codeSamples:
      - lang: Console
        source: 'GET /sensor_rollup/_rollup/data

          '
      - lang: Python
        source: |-
          resp = client.rollup.get_rollup_index_caps(
              index="sensor_rollup",
          )
      - lang: JavaScript
        source: |-
          const response = await client.rollup.getRollupIndexCaps({
            index: "sensor_rollup",
          });
      - lang: Ruby
        source: |-
          response = client.rollup.get_rollup_index_caps(
            index: "sensor_rollup"
          )
      - lang: PHP
        source: |-
          $resp = $client->rollup()->getRollupIndexCaps([
              "index" => "sensor_rollup",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/sensor_rollup/_rollup/data"'
      - lang: Java
        source: |
          client.rollup().getRollupIndexCaps(g -> g
              .index("sensor_rollup")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/{index}/_rollup_search":
    post:
      tags:
      - rollup
      summary: 'Search rolled-up data

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/{index}/_rollup_search</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/{index}/_rollup_search</span>\n
        \                     </div>\n                    \n\nThe rollup search endpoint
        is needed because, internally, rolled-up documents utilize a different document
        structure than the original data.\nIt rewrites standard Query DSL into a format
        that matches the rollup documents then takes the response and rewrites it
        back to what a client would expect given the original query.\n\nThe request
        body supports a subset of features from the regular search API.\nThe following
        functionality is not available:\n\n`size`: Because rollups work on pre-aggregated
        data, no search hits can be returned and so size must be set to zero or omitted
        entirely.\n`highlighter`, `suggestors`, `post_filter`, `profile`, `explain`:
        These are similarly disallowed.\n\nFor more detailed examples of using the
        rollup search API, including querying rolled-up data only or combining rolled-up
        and live data, refer to the External documentation."
      externalDocs:
        url: https://www.elastic.co/docs/manage-data/lifecycle/rollup/getting-started-api#historical-only-search-example
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/rollup-search.html
      operationId: rollup-rollup-search
      parameters:
      - "$ref": "#/components/parameters/rollup.rollup_search-index"
      - "$ref": "#/components/parameters/rollup.rollup_search-rest_total_hits_as_int"
      - "$ref": "#/components/parameters/rollup.rollup_search-typed_keys"
      requestBody:
        "$ref": "#/components/requestBodies/rollup.rollup_search"
      responses:
        '200':
          "$ref": "#/components/responses/rollup.rollup_search-200"
      deprecated: true
      x-state: Technical preview; Added in 6.3.0
      x-codeSamples:
      - lang: Console
        source: |-
          GET /sensor_rollup/_rollup_search
          {
            "size": 0,
            "aggregations": {
              "max_temperature": {
                "max": {
                  "field": "temperature"
                }
              }
            }
          }
      - lang: Python
        source: |-
          resp = client.rollup.rollup_search(
              index="sensor_rollup",
              size=0,
              aggregations={
                  "max_temperature": {
                      "max": {
                          "field": "temperature"
                      }
                  }
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.rollup.rollupSearch({
            index: "sensor_rollup",
            size: 0,
            aggregations: {
              max_temperature: {
                max: {
                  field: "temperature",
                },
              },
            },
          });
      - lang: Ruby
        source: |-
          response = client.rollup.rollup_search(
            index: "sensor_rollup",
            body: {
              "size": 0,
              "aggregations": {
                "max_temperature": {
                  "max": {
                    "field": "temperature"
                  }
                }
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->rollup()->rollupSearch([
              "index" => "sensor_rollup",
              "body" => [
                  "size" => 0,
                  "aggregations" => [
                      "max_temperature" => [
                          "max" => [
                              "field" => "temperature",
                          ],
                      ],
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"size":0,"aggregations":{"max_temperature":{"max":{"field":"temperature"}}}}''
          "$ELASTICSEARCH_URL/sensor_rollup/_rollup_search"'
      - lang: Java
        source: |
          client.rollup().rollupSearch(r -> r
              .aggregations("max_temperature", a -> a
                  .max(m -> m
                      .field("temperature")
                  )
              )
              .index("sensor_rollup")
              .size(0)
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_rollup/job/{id}/_start":
    post:
      tags:
      - rollup
      summary: Start rollup jobs
      description: |
        If you try to start a job that does not exist, an exception occurs.
        If you try to start a job that is already started, nothing happens.

        ## Required authorization

        * Cluster privileges: `manage_rollup`
      operationId: rollup-start-job
      parameters:
      - in: path
        name: id
        description: Identifier for the rollup job.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  started:
                    type: boolean
                required:
                - started
              examples:
                StartRollupJobResponseExample1:
                  description: A successful response from `POST _rollup/job/sensor/_start`.
                  value: |-
                    {
                      "started": true
                    }
      deprecated: true
      x-state: Technical preview; Added in 6.3.0
      x-codeSamples:
      - lang: Console
        source: 'POST _rollup/job/sensor/_start

          '
      - lang: Python
        source: |-
          resp = client.rollup.start_job(
              id="sensor",
          )
      - lang: JavaScript
        source: |-
          const response = await client.rollup.startJob({
            id: "sensor",
          });
      - lang: Ruby
        source: |-
          response = client.rollup.start_job(
            id: "sensor"
          )
      - lang: PHP
        source: |-
          $resp = $client->rollup()->startJob([
              "id" => "sensor",
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_rollup/job/sensor/_start"'
      - lang: Java
        source: |
          client.rollup().startJob(s -> s
              .id("sensor")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_rollup/job/{id}/_stop":
    post:
      tags:
      - rollup
      summary: Stop rollup jobs
      description: |
        If you try to stop a job that does not exist, an exception occurs.
        If you try to stop a job that is already stopped, nothing happens.

        Since only a stopped job can be deleted, it can be useful to block the API until the indexer has fully stopped.
        This is accomplished with the `wait_for_completion` query parameter, and optionally a timeout. For example:

        ```
        POST _rollup/job/sensor/_stop?wait_for_completion=true&timeout=10s
        ```
        The parameter blocks the API call from returning until either the job has moved to STOPPED or the specified time has elapsed.
        If the specified time elapses without the job moving to STOPPED, a timeout exception occurs.

        ## Required authorization

        * Cluster privileges: `manage_rollup`
      operationId: rollup-stop-job
      parameters:
      - in: path
        name: id
        description: Identifier for the rollup job.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: timeout
        description: |-
          If `wait_for_completion` is `true`, the API blocks for (at maximum) the specified duration while waiting for the job to stop.
          If more than `timeout` time has passed, the API throws a timeout exception.
          NOTE: Even if a timeout occurs, the stop request is still processing and eventually moves the job to STOPPED.
          The timeout simply means the API call itself timed out while waiting for the status change.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: wait_for_completion
        description: |-
          If set to `true`, causes the API to block until the indexer state completely stops.
          If set to `false`, the API returns immediately and the indexer is stopped asynchronously in the background.
        deprecated: false
        schema:
          type: boolean
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  stopped:
                    type: boolean
                required:
                - stopped
      deprecated: true
      x-state: Technical preview; Added in 6.3.0
      x-codeSamples:
      - lang: Console
        source: 'POST _rollup/job/sensor/_stop?wait_for_completion=true&timeout=10s

          '
      - lang: Python
        source: |-
          resp = client.rollup.stop_job(
              id="sensor",
              wait_for_completion=True,
              timeout="10s",
          )
      - lang: JavaScript
        source: |-
          const response = await client.rollup.stopJob({
            id: "sensor",
            wait_for_completion: "true",
            timeout: "10s",
          });
      - lang: Ruby
        source: |-
          response = client.rollup.stop_job(
            id: "sensor",
            wait_for_completion: "true",
            timeout: "10s"
          )
      - lang: PHP
        source: |-
          $resp = $client->rollup()->stopJob([
              "id" => "sensor",
              "wait_for_completion" => "true",
              "timeout" => "10s",
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_rollup/job/sensor/_stop?wait_for_completion=true&timeout=10s"'
      - lang: Java
        source: |
          client.rollup().stopJob(s -> s
              .id("sensor")
              .timeout(t -> t
                  .offset(10)
              )
              .waitForCompletion(true)
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_scripts/painless/_execute":
    post:
      tags:
      - script
      summary: 'Run a script

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_scripts/painless/_execute</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_scripts/painless/_execute</span>\n
        \                     </div>\n                    \n\nRuns a script and returns
        a result.\nUse this API to build and test scripts, such as when defining a
        script for a runtime field.\nThis API requires very few dependencies and is
        especially useful if you don't have permissions to write documents on a cluster.\n\nThe
        API uses several _contexts_, which control how scripts are run, what variables
        are available at runtime, and what the return type is.\n\nEach context requires
        a script, but additional parameters depend on the context you're using for
        that script."
      operationId: scripts-painless-execute
      requestBody:
        "$ref": "#/components/requestBodies/scripts_painless_execute"
      responses:
        '200':
          "$ref": "#/components/responses/scripts_painless_execute-200"
      x-state: Technical preview; Added in 6.3.0
      x-codeSamples:
      - lang: Console
        source: |-
          POST /_scripts/painless/_execute
          {
            "script": {
              "source": "params.count / params.total",
              "params": {
                "count": 100.0,
                "total": 1000.0
              }
            }
          }
      - lang: Python
        source: |-
          resp = client.scripts_painless_execute(
              script={
                  "source": "params.count / params.total",
                  "params": {
                      "count": 100,
                      "total": 1000
                  }
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.scriptsPainlessExecute({
            script: {
              source: "params.count / params.total",
              params: {
                count: 100,
                total: 1000,
              },
            },
          });
      - lang: Ruby
        source: |-
          response = client.scripts_painless_execute(
            body: {
              "script": {
                "source": "params.count / params.total",
                "params": {
                  "count": 100,
                  "total": 1000
                }
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->scriptsPainlessExecute([
              "body" => [
                  "script" => [
                      "source" => "params.count / params.total",
                      "params" => [
                          "count" => 100,
                          "total" => 1000,
                      ],
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"script":{"source":"params.count / params.total","params":{"count":100,"total":1000}}}''
          "$ELASTICSEARCH_URL/_scripts/painless/_execute"'
      - lang: Java
        source: |
          client.scriptsPainlessExecute(s -> s
              .script(sc -> sc
                  .source(so -> so
                      .scriptString("params.count / params.total")
                  )
                  .params(Map.of("total", JsonData.fromJson("1000"),"count", JsonData.fromJson("100")))
              )
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/{index}/_search":
    post:
      tags:
      - search
      summary: 'Run a search

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_search</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_search</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/{index}/_search</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/{index}/_search</span>\n
        \                     </div>\n                    \n\nGet search hits that
        match the query defined in the request.\nYou can provide search queries using
        the `q` query string parameter or the request body.\nIf both are specified,
        only the query parameter is used.\n\nIf the Elasticsearch security features
        are enabled, you must have the read index privilege for the target data stream,
        index, or alias. For cross-cluster search, refer to the documentation about
        configuring CCS privileges.\nTo search a point in time (PIT) for an alias,
        you must have the `read` index privilege for the alias's data streams or indices.\n\n**Search
        slicing**\n\nWhen paging through a large number of documents, it can be helpful
        to split the search into multiple slices to consume them independently with
        the `slice` and `pit` properties.\nBy default the splitting is done first
        on the shards, then locally on each shard.\nThe local splitting partitions
        the shard into contiguous ranges based on Lucene document IDs.\n\nFor instance
        if the number of shards is equal to 2 and you request 4 slices, the slices
        0 and 2 are assigned to the first shard and the slices 1 and 3 are assigned
        to the second shard.\n\nIMPORTANT: The same point-in-time ID should be used
        for all slices.\nIf different PIT IDs are used, slices can overlap and miss
        documents.\nThis situation can occur because the splitting criterion is based
        on Lucene document IDs, which are not stable across changes to the index.\n\n##
        Required authorization\n\n* Index privileges: `read`\n"
      externalDocs:
        url: https://www.elastic.co/docs/deploy-manage/remote-clusters/remote-clusters-cert#remote-clusters-privileges-ccs
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/search-search.html
      operationId: search
      parameters:
      - "$ref": "#/components/parameters/search-index"
      - "$ref": "#/components/parameters/search-allow_no_indices"
      - "$ref": "#/components/parameters/search-allow_partial_search_results"
      - "$ref": "#/components/parameters/search-analyzer"
      - "$ref": "#/components/parameters/search-analyze_wildcard"
      - "$ref": "#/components/parameters/search-batched_reduce_size"
      - "$ref": "#/components/parameters/search-ccs_minimize_roundtrips"
      - "$ref": "#/components/parameters/search-default_operator"
      - "$ref": "#/components/parameters/search-df"
      - "$ref": "#/components/parameters/search-docvalue_fields"
      - "$ref": "#/components/parameters/search-expand_wildcards"
      - "$ref": "#/components/parameters/search-explain"
      - "$ref": "#/components/parameters/search-ignore_throttled"
      - "$ref": "#/components/parameters/search-ignore_unavailable"
      - "$ref": "#/components/parameters/search-include_named_queries_score"
      - "$ref": "#/components/parameters/search-lenient"
      - "$ref": "#/components/parameters/search-max_concurrent_shard_requests"
      - "$ref": "#/components/parameters/search-preference"
      - "$ref": "#/components/parameters/search-pre_filter_shard_size"
      - "$ref": "#/components/parameters/search-request_cache"
      - "$ref": "#/components/parameters/search-routing"
      - "$ref": "#/components/parameters/search-scroll"
      - "$ref": "#/components/parameters/search-search_type"
      - "$ref": "#/components/parameters/search-stats"
      - "$ref": "#/components/parameters/search-stored_fields"
      - "$ref": "#/components/parameters/search-suggest_field"
      - "$ref": "#/components/parameters/search-suggest_mode"
      - "$ref": "#/components/parameters/search-suggest_size"
      - "$ref": "#/components/parameters/search-suggest_text"
      - "$ref": "#/components/parameters/search-terminate_after"
      - "$ref": "#/components/parameters/search-timeout"
      - "$ref": "#/components/parameters/search-track_total_hits"
      - "$ref": "#/components/parameters/search-track_scores"
      - "$ref": "#/components/parameters/search-typed_keys"
      - "$ref": "#/components/parameters/search-rest_total_hits_as_int"
      - "$ref": "#/components/parameters/search-version"
      - "$ref": "#/components/parameters/search-_source"
      - "$ref": "#/components/parameters/search-_source_excludes"
      - "$ref": "#/components/parameters/search-_source_exclude_vectors"
      - "$ref": "#/components/parameters/search-_source_includes"
      - "$ref": "#/components/parameters/search-seq_no_primary_term"
      - "$ref": "#/components/parameters/search-q"
      - "$ref": "#/components/parameters/search-size"
      - "$ref": "#/components/parameters/search-from"
      - "$ref": "#/components/parameters/search-sort"
      requestBody:
        "$ref": "#/components/requestBodies/search"
      responses:
        '200':
          "$ref": "#/components/responses/search-200"
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: |-
          GET /my-index-000001/_search?from=40&size=20
          {
            "query": {
              "term": {
                "user.id": "kimchy"
              }
            }
          }
      - lang: Python
        source: |-
          resp = client.search(
              index="my-index-000001",
              from="40",
              size="20",
              query={
                  "term": {
                      "user.id": "kimchy"
                  }
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.search({
            index: "my-index-000001",
            from: 40,
            size: 20,
            query: {
              term: {
                "user.id": "kimchy",
              },
            },
          });
      - lang: Ruby
        source: |-
          response = client.search(
            index: "my-index-000001",
            from: "40",
            size: "20",
            body: {
              "query": {
                "term": {
                  "user.id": "kimchy"
                }
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->search([
              "index" => "my-index-000001",
              "from" => "40",
              "size" => "20",
              "body" => [
                  "query" => [
                      "term" => [
                          "user.id" => "kimchy",
                      ],
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"query":{"term":{"user.id":"kimchy"}}}'' "$ELASTICSEARCH_URL/my-index-000001/_search?from=40&size=20"'
      - lang: Java
        source: |
          client.search(s -> s
              .from(40)
              .index("my-index-000001")
              .query(q -> q
                  .term(t -> t
                      .field("user.id")
                      .value(FieldValue.of("kimchy"))
                  )
              )
              .size(20)
          ,Void.class);
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_application/search_application/{name}":
    get:
      tags:
      - search_application
      summary: Get search application details
      description: |2


        ## Required authorization

        * Cluster privileges: `manage_search_application`
      operationId: search-application-get
      parameters:
      - in: path
        name: name
        description: The name of the search application
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Name"
        style: simple
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/search_application._types.SearchApplication"
              examples:
                SearchApplicationGetResponseExample1:
                  description: A sucessful response from `GET _application/search_application/my-app/`.
                  value: |-
                    {
                      "name": "my-app",
                      "indices": [ "index1", "index2" ],
                      "updated_at_millis": 1682105622204,
                      "template": {
                        "script": {
                          "source": {
                            "query": {
                              "query_string": {
                                "query": "{{query_string}}",
                                "default_field": "{{default_field}}"
                              }
                            }
                          },
                          "lang": "mustache",
                          "options": {
                            "content_type": "application/json;charset=utf-8"
                          },
                          "params": {
                            "query_string": "*",
                            "default_field": "*"
                          }
                        }
                      }
                    }
      x-state: Beta; Added in 8.8.0
      x-codeSamples:
      - lang: Console
        source: 'GET _application/search_application/my-app/

          '
      - lang: Python
        source: |-
          resp = client.search_application.get(
              name="my-app",
          )
      - lang: JavaScript
        source: |-
          const response = await client.searchApplication.get({
            name: "my-app",
          });
      - lang: Ruby
        source: |-
          response = client.search_application.get(
            name: "my-app"
          )
      - lang: PHP
        source: |-
          $resp = $client->searchApplication()->get([
              "name" => "my-app",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_application/search_application/my-app/"'
      - lang: Java
        source: |
          client.searchApplication().get(g -> g
              .name("my-app")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    put:
      tags:
      - search_application
      summary: Create or update a search application
      description: |2


        ## Required authorization

        * Index privileges: `manage`
        * Cluster privileges: `manage_search_application`
      operationId: search-application-put
      parameters:
      - in: path
        name: name
        description: The name of the search application to be created or updated.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Name"
        style: simple
      - in: query
        name: create
        description: If `true`, this request cannot replace or update existing Search
          Applications.
        deprecated: false
        schema:
          type: boolean
        style: form
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/search_application._types.SearchApplicationParameters"
            examples:
              SearchApplicationPutRequestExample1:
                description: 'Run `PUT _application/search_application/my-app` to
                  create or update a search application called `my-app`. When the  dictionary
                  parameter is specified, the search application search API will perform
                  the following parameter validation: it accepts only the `query_string`
                  and `default_field` parameters; it verifies that `query_string`
                  and `default_field` are both strings; it accepts `default_field`
                  only if it takes the values title or description. If the parameters
                  are not valid, the search application search API will return an
                  error.

                  '
                value: |-
                  {
                    "indices": [ "index1", "index2" ],
                    "template": {
                      "script": {
                        "source": {
                          "query": {
                            "query_string": {
                              "query": "{{query_string}}",
                              "default_field": "{{default_field}}"
                            }
                          }
                        },
                        "params": {
                          "query_string": "*",
                          "default_field": "*"
                        }
                      },
                      "dictionary": {
                        "properties": {
                          "query_string": {
                            "type": "string"
                          },
                          "default_field": {
                            "type": "string",
                            "enum": [
                              "title",
                              "description"
                            ]
                          },
                          "additionalProperties": false
                        },
                        "required": [
                          "query_string"
                        ]
                      }
                    }
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    allOf:
                    - "$ref": "#/components/schemas/_types.Result"
                required:
                - result
      x-state: Beta; Added in 8.8.0
      x-codeSamples:
      - lang: Console
        source: |-
          PUT _application/search_application/my-app
          {
            "indices": [ "index1", "index2" ],
            "template": {
              "script": {
                "source": {
                  "query": {
                    "query_string": {
                      "query": "{{query_string}}",
                      "default_field": "{{default_field}}"
                    }
                  }
                },
                "params": {
                  "query_string": "*",
                  "default_field": "*"
                }
              },
              "dictionary": {
                "properties": {
                  "query_string": {
                    "type": "string"
                  },
                  "default_field": {
                    "type": "string",
                    "enum": [
                      "title",
                      "description"
                    ]
                  },
                  "additionalProperties": false
                },
                "required": [
                  "query_string"
                ]
              }
            }
          }
      - lang: Python
        source: |-
          resp = client.search_application.put(
              name="my-app",
              search_application={
                  "indices": [
                      "index1",
                      "index2"
                  ],
                  "template": {
                      "script": {
                          "source": {
                              "query": {
                                  "query_string": {
                                      "query": "{{query_string}}",
                                      "default_field": "{{default_field}}"
                                  }
                              }
                          },
                          "params": {
                              "query_string": "*",
                              "default_field": "*"
                          }
                      },
                      "dictionary": {
                          "properties": {
                              "query_string": {
                                  "type": "string"
                              },
                              "default_field": {
                                  "type": "string",
                                  "enum": [
                                      "title",
                                      "description"
                                  ]
                              },
                              "additionalProperties": False
                          },
                          "required": [
                              "query_string"
                          ]
                      }
                  }
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.searchApplication.put({
            name: "my-app",
            search_application: {
              indices: ["index1", "index2"],
              template: {
                script: {
                  source: {
                    query: {
                      query_string: {
                        query: "{{query_string}}",
                        default_field: "{{default_field}}",
                      },
                    },
                  },
                  params: {
                    query_string: "*",
                    default_field: "*",
                  },
                },
                dictionary: {
                  properties: {
                    query_string: {
                      type: "string",
                    },
                    default_field: {
                      type: "string",
                      enum: ["title", "description"],
                    },
                    additionalProperties: false,
                  },
                  required: ["query_string"],
                },
              },
            },
          });
      - lang: Ruby
        source: |-
          response = client.search_application.put(
            name: "my-app",
            body: {
              "indices": [
                "index1",
                "index2"
              ],
              "template": {
                "script": {
                  "source": {
                    "query": {
                      "query_string": {
                        "query": "{{query_string}}",
                        "default_field": "{{default_field}}"
                      }
                    }
                  },
                  "params": {
                    "query_string": "*",
                    "default_field": "*"
                  }
                },
                "dictionary": {
                  "properties": {
                    "query_string": {
                      "type": "string"
                    },
                    "default_field": {
                      "type": "string",
                      "enum": [
                        "title",
                        "description"
                      ]
                    },
                    "additionalProperties": false
                  },
                  "required": [
                    "query_string"
                  ]
                }
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->searchApplication()->put([
              "name" => "my-app",
              "body" => [
                  "indices" => array(
                      "index1",
                      "index2",
                  ),
                  "template" => [
                      "script" => [
                          "source" => [
                              "query" => [
                                  "query_string" => [
                                      "query" => "{{query_string}}",
                                      "default_field" => "{{default_field}}",
                                  ],
                              ],
                          ],
                          "params" => [
                              "query_string" => "*",
                              "default_field" => "*",
                          ],
                      ],
                      "dictionary" => [
                          "properties" => [
                              "query_string" => [
                                  "type" => "string",
                              ],
                              "default_field" => [
                                  "type" => "string",
                                  "enum" => array(
                                      "title",
                                      "description",
                                  ),
                              ],
                              "additionalProperties" => false,
                          ],
                          "required" => array(
                              "query_string",
                          ),
                      ],
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"indices":["index1","index2"],"template":{"script":{"source":{"query":{"query_string":{"query":"{{query_string}}","default_field":"{{default_field}}"}}},"params":{"query_string":"*","default_field":"*"}},"dictionary":{"properties":{"query_string":{"type":"string"},"default_field":{"type":"string","enum":["title","description"]},"additionalProperties":false},"required":["query_string"]}}}''
          "$ELASTICSEARCH_URL/_application/search_application/my-app"'
      - lang: Java
        source: |
          client.searchApplication().put(p -> p
              .name("my-app")
              .searchApplication(s -> s
                  .indices(List.of("index1","index2"))
                  .template(t -> t
                      .script(sc -> sc
                          .source(so -> so
                              .scriptTemplate(scr -> scr
                                  .query(q -> q
                                      .queryString(qu -> qu
                                          .defaultField("{{default_field}}")
                                          .query("{{query_string}}")
                                      )
                                  )
                              )
                          )
                          .params(Map.of("default_field", JsonData.fromJson("\"*\""),"query_string", JsonData.fromJson("\"*\"")))
                      )
                  )
              )
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    delete:
      tags:
      - search_application
      summary: Delete a search application
      description: |
        Remove a search application and its associated alias. Indices attached to the search application are not removed.

        ## Required authorization

        * Index privileges: `manage`
        * Cluster privileges: `manage_search_application`
      operationId: search-application-delete
      parameters:
      - in: path
        name: name
        description: The name of the search application to delete.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Name"
        style: simple
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
      x-state: Beta; Added in 8.8.0
      x-codeSamples:
      - lang: Console
        source: 'DELETE _application/search_application/my-app/

          '
      - lang: Python
        source: |-
          resp = client.search_application.delete(
              name="my-app",
          )
      - lang: JavaScript
        source: |-
          const response = await client.searchApplication.delete({
            name: "my-app",
          });
      - lang: Ruby
        source: |-
          response = client.search_application.delete(
            name: "my-app"
          )
      - lang: PHP
        source: |-
          $resp = $client->searchApplication()->delete([
              "name" => "my-app",
          ]);
      - lang: curl
        source: 'curl -X DELETE -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_application/search_application/my-app/"'
      - lang: Java
        source: |
          client.searchApplication().delete(d -> d
              .name("my-app")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_application/analytics/{name}":
    get:
      tags:
      - analytics
      summary: 'Get behavioral analytics collections

        '
      description: |-
        **All methods and paths for this operation:**

        <div>
                              <span class="operation-verb get">GET</span>
                              <span class="operation-path">/_application/analytics</span>
                              </div>
                            <div>
                              <span class="operation-verb get">GET</span>
                              <span class="operation-path">/_application/analytics/{name}</span>
                              </div>
      operationId: search-application-get-behavioral-analytics
      parameters:
      - "$ref": "#/components/parameters/search_application.get_behavioral_analytics-name"
      responses:
        '200':
          "$ref": "#/components/responses/search_application.get_behavioral_analytics-200"
      deprecated: true
      x-state: Technical preview; Added in 8.8.0
      x-codeSamples:
      - lang: Console
        source: 'GET _application/analytics/my*

          '
      - lang: Python
        source: |-
          resp = client.search_application.get_behavioral_analytics(
              name="my*",
          )
      - lang: JavaScript
        source: |-
          const response = await client.searchApplication.getBehavioralAnalytics({
            name: "my*",
          });
      - lang: Ruby
        source: |-
          response = client.search_application.get_behavioral_analytics(
            name: "my*"
          )
      - lang: PHP
        source: |-
          $resp = $client->searchApplication()->getBehavioralAnalytics([
              "name" => "my*",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_application/analytics/my*"'
      - lang: Java
        source: |
          client.searchApplication().getBehavioralAnalytics(g -> g
              .name("my*")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    put:
      tags:
      - analytics
      summary: Create a behavioral analytics collection
      operationId: search-application-put-behavioral-analytics
      parameters:
      - in: path
        name: name
        description: The name of the analytics collection to be created or updated.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Name"
        style: simple
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/search_application.put_behavioral_analytics.AnalyticsAcknowledgeResponseBase"
      deprecated: true
      x-state: Technical preview; Added in 8.8.0
      x-codeSamples:
      - lang: Console
        source: 'PUT _application/analytics/my_analytics_collection

          '
      - lang: Python
        source: |-
          resp = client.search_application.put_behavioral_analytics(
              name="my_analytics_collection",
          )
      - lang: JavaScript
        source: |-
          const response = await client.searchApplication.putBehavioralAnalytics({
            name: "my_analytics_collection",
          });
      - lang: Ruby
        source: |-
          response = client.search_application.put_behavioral_analytics(
            name: "my_analytics_collection"
          )
      - lang: PHP
        source: |-
          $resp = $client->searchApplication()->putBehavioralAnalytics([
              "name" => "my_analytics_collection",
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_application/analytics/my_analytics_collection"'
      - lang: Java
        source: |
          client.searchApplication().putBehavioralAnalytics(p -> p
              .name("my_analytics_collection")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    delete:
      tags:
      - analytics
      summary: Delete a behavioral analytics collection
      description: The associated data stream is also deleted.
      operationId: search-application-delete-behavioral-analytics
      parameters:
      - in: path
        name: name
        description: The name of the analytics collection to be deleted
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Name"
        style: simple
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
      deprecated: true
      x-state: Technical preview; Added in 8.8.0
      x-codeSamples:
      - lang: Console
        source: 'DELETE _application/analytics/my_analytics_collection/

          '
      - lang: Python
        source: |-
          resp = client.search_application.delete_behavioral_analytics(
              name="my_analytics_collection",
          )
      - lang: JavaScript
        source: |-
          const response = await client.searchApplication.deleteBehavioralAnalytics({
            name: "my_analytics_collection",
          });
      - lang: Ruby
        source: |-
          response = client.search_application.delete_behavioral_analytics(
            name: "my_analytics_collection"
          )
      - lang: PHP
        source: |-
          $resp = $client->searchApplication()->deleteBehavioralAnalytics([
              "name" => "my_analytics_collection",
          ]);
      - lang: curl
        source: 'curl -X DELETE -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_application/analytics/my_analytics_collection/"'
      - lang: Java
        source: |
          client.searchApplication().deleteBehavioralAnalytics(d -> d
              .name("my_analytics_collection")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_application/search_application":
    get:
      tags:
      - search_application
      summary: Get search applications
      description: |
        Get information about search applications.

        ## Required authorization

        * Cluster privileges: `manage_search_application`
      operationId: search-application-list
      parameters:
      - in: query
        name: q
        description: Query in the Lucene query string syntax.
        deprecated: false
        schema:
          type: string
        style: form
      - in: query
        name: from
        description: Starting offset.
        deprecated: false
        schema:
          type: number
        style: form
      - in: query
        name: size
        description: Specifies a max number of results to get.
        deprecated: false
        schema:
          type: number
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: number
                  results:
                    type: array
                    items:
                      "$ref": "#/components/schemas/search_application._types.SearchApplication"
                required:
                - count
                - results
              examples:
                SearchApplicationsListResponseExample1:
                  description: A succesful response from `GET _application/search_application?from=0&size=3&q=app*`
                    returns the first three search applications whose names start
                    with `app`.
                  value: |-
                    {
                      "count": 2,
                      "results": [
                        {
                          "name": "app-1",
                          "updated_at_millis": 1690981129366
                        },
                        {
                          "name": "app-2",
                          "updated_at_millis": 1691501823939
                        }
                      ]
                    }
      x-state: Beta; Added in 8.8.0
      x-codeSamples:
      - lang: Console
        source: 'GET _application/search_application?from=0&size=3&q=app*

          '
      - lang: Python
        source: |-
          resp = client.search_application.list(
              from="0",
              size="3",
              q="app*",
          )
      - lang: JavaScript
        source: |-
          const response = await client.searchApplication.list({
            from: 0,
            size: 3,
            q: "app*",
          });
      - lang: Ruby
        source: |-
          response = client.search_application.list(
            from: "0",
            size: "3",
            q: "app*"
          )
      - lang: PHP
        source: |-
          $resp = $client->searchApplication()->list([
              "from" => "0",
              "size" => "3",
              "q" => "app*",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_application/search_application?from=0&size=3&q=app*"'
      - lang: Java
        source: |
          client.searchApplication().list(l -> l
              .from(0)
              .q("app*")
              .size(3)
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_application/analytics/{collection_name}/event/{event_type}":
    post:
      tags:
      - analytics
      summary: Create a behavioral analytics collection event
      externalDocs:
        url: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/behavioral-analytics-event-reference.html
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/post-analytics-collection-event.html
      operationId: search-application-post-behavioral-analytics-event
      parameters:
      - in: path
        name: collection_name
        description: The name of the behavioral analytics collection.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Name"
        style: simple
      - in: path
        name: event_type
        description: The analytics event type.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/search_application._types.EventType"
        style: simple
      - in: query
        name: debug
        description: Whether the response type has to include more details
        deprecated: false
        schema:
          type: boolean
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
            examples:
              BehavioralAnalyticsEventPostRequestExample1:
                description: Run `POST _application/analytics/my_analytics_collection/event/search_click`
                  to send a `search_click` event to an analytics collection called
                  `my_analytics_collection`.
                value: |-
                  {
                    "session": {
                      "id": "1797ca95-91c9-4e2e-b1bd-9c38e6f386a9"
                    },
                    "user": {
                      "id": "5f26f01a-bbee-4202-9298-81261067abbd"
                    },
                    "search":{
                      "query": "search term",
                      "results": {
                        "items": [
                          {
                            "document": {
                              "id": "123",
                              "index": "products"
                            }
                          }
                        ],
                        "total_results": 10
                      },
                      "sort": {
                        "name": "relevance"
                      },
                      "search_application": "website"
                    },
                    "document":{
                      "id": "123",
                      "index": "products"
                    }
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  accepted:
                    type: boolean
                  event:
                    type: object
                required:
                - accepted
      deprecated: true
      x-state: Technical preview
      x-codeSamples:
      - lang: Console
        source: |-
          POST _application/analytics/my_analytics_collection/event/search_click
          {
            "session": {
              "id": "1797ca95-91c9-4e2e-b1bd-9c38e6f386a9"
            },
            "user": {
              "id": "5f26f01a-bbee-4202-9298-81261067abbd"
            },
            "search":{
              "query": "search term",
              "results": {
                "items": [
                  {
                    "document": {
                      "id": "123",
                      "index": "products"
                    }
                  }
                ],
                "total_results": 10
              },
              "sort": {
                "name": "relevance"
              },
              "search_application": "website"
            },
            "document":{
              "id": "123",
              "index": "products"
            }
          }
      - lang: Python
        source: |-
          resp = client.search_application.post_behavioral_analytics_event(
              collection_name="my_analytics_collection",
              event_type="search_click",
              payload={
                  "session": {
                      "id": "1797ca95-91c9-4e2e-b1bd-9c38e6f386a9"
                  },
                  "user": {
                      "id": "5f26f01a-bbee-4202-9298-81261067abbd"
                  },
                  "search": {
                      "query": "search term",
                      "results": {
                          "items": [
                              {
                                  "document": {
                                      "id": "123",
                                      "index": "products"
                                  }
                              }
                          ],
                          "total_results": 10
                      },
                      "sort": {
                          "name": "relevance"
                      },
                      "search_application": "website"
                  },
                  "document": {
                      "id": "123",
                      "index": "products"
                  }
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.searchApplication.postBehavioralAnalyticsEvent({
            collection_name: "my_analytics_collection",
            event_type: "search_click",
            payload: {
              session: {
                id: "1797ca95-91c9-4e2e-b1bd-9c38e6f386a9",
              },
              user: {
                id: "5f26f01a-bbee-4202-9298-81261067abbd",
              },
              search: {
                query: "search term",
                results: {
                  items: [
                    {
                      document: {
                        id: "123",
                        index: "products",
                      },
                    },
                  ],
                  total_results: 10,
                },
                sort: {
                  name: "relevance",
                },
                search_application: "website",
              },
              document: {
                id: "123",
                index: "products",
              },
            },
          });
      - lang: Ruby
        source: |-
          response = client.search_application.post_behavioral_analytics_event(
            collection_name: "my_analytics_collection",
            event_type: "search_click",
            body: {
              "session": {
                "id": "1797ca95-91c9-4e2e-b1bd-9c38e6f386a9"
              },
              "user": {
                "id": "5f26f01a-bbee-4202-9298-81261067abbd"
              },
              "search": {
                "query": "search term",
                "results": {
                  "items": [
                    {
                      "document": {
                        "id": "123",
                        "index": "products"
                      }
                    }
                  ],
                  "total_results": 10
                },
                "sort": {
                  "name": "relevance"
                },
                "search_application": "website"
              },
              "document": {
                "id": "123",
                "index": "products"
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->searchApplication()->postBehavioralAnalyticsEvent([
              "collection_name" => "my_analytics_collection",
              "event_type" => "search_click",
              "body" => [
                  "session" => [
                      "id" => "1797ca95-91c9-4e2e-b1bd-9c38e6f386a9",
                  ],
                  "user" => [
                      "id" => "5f26f01a-bbee-4202-9298-81261067abbd",
                  ],
                  "search" => [
                      "query" => "search term",
                      "results" => [
                          "items" => array(
                              [
                                  "document" => [
                                      "id" => "123",
                                      "index" => "products",
                                  ],
                              ],
                          ),
                          "total_results" => 10,
                      ],
                      "sort" => [
                          "name" => "relevance",
                      ],
                      "search_application" => "website",
                  ],
                  "document" => [
                      "id" => "123",
                      "index" => "products",
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"session":{"id":"1797ca95-91c9-4e2e-b1bd-9c38e6f386a9"},"user":{"id":"5f26f01a-bbee-4202-9298-81261067abbd"},"search":{"query":"search
          term","results":{"items":[{"document":{"id":"123","index":"products"}}],"total_results":10},"sort":{"name":"relevance"},"search_application":"website"},"document":{"id":"123","index":"products"}}''
          "$ELASTICSEARCH_URL/_application/analytics/my_analytics_collection/event/search_click"'
      - lang: Java
        source: |
          client.searchApplication().postBehavioralAnalyticsEvent(p -> p
              .collectionName("my_analytics_collection")
              .eventType(EventType.SearchClick)
              .payload(JsonData.fromJson("{\"session\":{\"id\":\"1797ca95-91c9-4e2e-b1bd-9c38e6f386a9\"},\"user\":{\"id\":\"5f26f01a-bbee-4202-9298-81261067abbd\"},\"search\":{\"query\":\"search term\",\"results\":{\"items\":[{\"document\":{\"id\":\"123\",\"index\":\"products\"}}],\"total_results\":10},\"sort\":{\"name\":\"relevance\"},\"search_application\":\"website\"},\"document\":{\"id\":\"123\",\"index\":\"products\"}}"))
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_application/search_application/{name}/_render_query":
    post:
      tags:
      - search_application
      summary: Render a search application query
      description: |-
        Generate an Elasticsearch query using the specified query parameters and the search template associated with the search application or a default template if none is specified.
        If a parameter used in the search template is not specified in `params`, the parameter's default value will be used.
        The API returns the specific Elasticsearch query that would be generated and run by calling the search application search API.

        You must have `read` privileges on the backing alias of the search application.
      operationId: search-application-render-query
      parameters:
      - in: path
        name: name
        description: The name of the search application to render teh query for.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Name"
        style: simple
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                params:
                  type: object
                  additionalProperties:
                    type: object
            examples:
              SearchApplicationsRenderQueryRequestExample1:
                description: Run `POST _application/search_application/my-app/_render_query`
                  to generate a query for a search application called `my-app` that
                  uses the search template.
                value: |-
                  {
                    "params": {
                      "query_string": "my first query",
                      "text_fields": [
                        {
                          "name": "title",
                          "boost": 5
                        },
                        {
                          "name": "description",
                          "boost": 1
                        }
                      ]
                    }
                  }
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
              examples:
                SearchApplicationsRenderQueryResponseExample1:
                  description: A successful response for generating a query for a
                    search application. The `from`, `size`, and `explain` parameters
                    were not specified in the request, so the default values specified
                    in the search template are used.
                  value: |-
                    {
                      "from": 0,
                      "size": 10,
                      "query": {
                        "multi_match": {
                          "query": "my first query",
                          "fields": [
                            "description^1.0",
                            "title^5.0"
                          ]
                        }
                      },
                      "explain": false
                    }
      x-state: Technical preview; Added in 8.9.0
      x-codeSamples:
      - lang: Console
        source: |-
          POST _application/search_application/my-app/_render_query
          {
            "params": {
              "query_string": "my first query",
              "text_fields": [
                {
                  "name": "title",
                  "boost": 5
                },
                {
                  "name": "description",
                  "boost": 1
                }
              ]
            }
          }
      - lang: Python
        source: |-
          resp = client.search_application.render_query(
              name="my-app",
              params={
                  "query_string": "my first query",
                  "text_fields": [
                      {
                          "name": "title",
                          "boost": 5
                      },
                      {
                          "name": "description",
                          "boost": 1
                      }
                  ]
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.searchApplication.renderQuery({
            name: "my-app",
            params: {
              query_string: "my first query",
              text_fields: [
                {
                  name: "title",
                  boost: 5,
                },
                {
                  name: "description",
                  boost: 1,
                },
              ],
            },
          });
      - lang: Ruby
        source: |-
          response = client.search_application.render_query(
            name: "my-app",
            body: {
              "params": {
                "query_string": "my first query",
                "text_fields": [
                  {
                    "name": "title",
                    "boost": 5
                  },
                  {
                    "name": "description",
                    "boost": 1
                  }
                ]
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->searchApplication()->renderQuery([
              "name" => "my-app",
              "body" => [
                  "params" => [
                      "query_string" => "my first query",
                      "text_fields" => array(
                          [
                              "name" => "title",
                              "boost" => 5,
                          ],
                          [
                              "name" => "description",
                              "boost" => 1,
                          ],
                      ),
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"params":{"query_string":"my first query","text_fields":[{"name":"title","boost":5},{"name":"description","boost":1}]}}''
          "$ELASTICSEARCH_URL/_application/search_application/my-app/_render_query"'
      - lang: Java
        source: |
          client.searchApplication().renderQuery(r -> r
              .name("my-app")
              .params(Map.of("text_fields", JsonData.fromJson("[{\"name\":\"title\",\"boost\":5},{\"name\":\"description\",\"boost\":1}]"),"query_string", JsonData.fromJson("\"my first query\"")))
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_application/search_application/{name}/_search":
    post:
      tags:
      - search_application
      summary: 'Run a search application search

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_application/search_application/{name}/_search</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_application/search_application/{name}/_search</span>\n
        \                     </div>\n                    \n\nGenerate and run an
        Elasticsearch query that uses the specified query parameteter and the search
        template associated with the search application or default template.\nUnspecified
        template parameters are assigned their default values if applicable."
      operationId: search-application-search
      parameters:
      - "$ref": "#/components/parameters/search_application.search-name"
      - "$ref": "#/components/parameters/search_application.search-typed_keys"
      requestBody:
        "$ref": "#/components/requestBodies/search_application.search"
      responses:
        '200':
          "$ref": "#/components/responses/search_application.search-200"
      x-state: Beta; Added in 8.8.0
      x-codeSamples:
      - lang: Console
        source: |-
          POST _application/search_application/my-app/_search
          {
            "params": {
              "query_string": "my first query",
              "text_fields": [
                {"name": "title", "boost": 5},
                {"name": "description", "boost": 1}
              ]
            }
          }
      - lang: Python
        source: |-
          resp = client.search_application.search(
              name="my-app",
              params={
                  "query_string": "my first query",
                  "text_fields": [
                      {
                          "name": "title",
                          "boost": 5
                      },
                      {
                          "name": "description",
                          "boost": 1
                      }
                  ]
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.searchApplication.search({
            name: "my-app",
            params: {
              query_string: "my first query",
              text_fields: [
                {
                  name: "title",
                  boost: 5,
                },
                {
                  name: "description",
                  boost: 1,
                },
              ],
            },
          });
      - lang: Ruby
        source: |-
          response = client.search_application.search(
            name: "my-app",
            body: {
              "params": {
                "query_string": "my first query",
                "text_fields": [
                  {
                    "name": "title",
                    "boost": 5
                  },
                  {
                    "name": "description",
                    "boost": 1
                  }
                ]
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->searchApplication()->search([
              "name" => "my-app",
              "body" => [
                  "params" => [
                      "query_string" => "my first query",
                      "text_fields" => array(
                          [
                              "name" => "title",
                              "boost" => 5,
                          ],
                          [
                              "name" => "description",
                              "boost" => 1,
                          ],
                      ),
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"params":{"query_string":"my first query","text_fields":[{"name":"title","boost":5},{"name":"description","boost":1}]}}''
          "$ELASTICSEARCH_URL/_application/search_application/my-app/_search"'
      - lang: Java
        source: |
          client.searchApplication().search(s -> s
              .name("my-app")
              .params(Map.of("text_fields", JsonData.fromJson("[{\"name\":\"title\",\"boost\":5},{\"name\":\"description\",\"boost\":1}]"),"query_string", JsonData.fromJson("\"my first query\"")))
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/{index}/_mvt/{field}/{zoom}/{x}/{y}":
    get:
      tags:
      - search
      summary: 'Search a vector tile

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/{index}/_mvt/{field}/{zoom}/{x}/{y}</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/{index}/_mvt/{field}/{zoom}/{x}/{y}</span>\n
        \                     </div>\n                    \n\nSearch a vector tile
        for geospatial values.\nBefore using this API, you should be familiar with
        the Mapbox vector tile specification.\nThe API returns results as a binary
        mapbox vector tile.\n\nInternally, Elasticsearch translates a vector tile
        search API request into a search containing:\n\n* A `geo_bounding_box` query
        on the `<field>`. The query uses the `<zoom>/<x>/<y>` tile as a bounding box.\n*
        A `geotile_grid` or `geohex_grid` aggregation on the `<field>`. The `grid_agg`
        parameter determines the aggregation type. The aggregation uses the `<zoom>/<x>/<y>`
        tile as a bounding box.\n* Optionally, a `geo_bounds` aggregation on the `<field>`.
        The search only includes this aggregation if the `exact_bounds` parameter
        is `true`.\n* If the optional parameter `with_labels` is `true`, the internal
        search will include a dynamic runtime field that calls the `getLabelPosition`
        function of the geometry doc value. This enables the generation of new point
        features containing suggested geometry labels, so that, for example, multi-polygons
        will have only one label.\n\nThe API returns results as a binary Mapbox vector
        tile.\nMapbox vector tiles are encoded as Google Protobufs (PBF). By default,
        the tile contains three layers:\n\n* A `hits` layer containing a feature for
        each `<field>` value matching the `geo_bounding_box` query.\n* An `aggs` layer
        containing a feature for each cell of the `geotile_grid` or `geohex_grid`.
        The layer only contains features for cells with matching data.\n* A meta layer
        containing:\n  * A feature containing a bounding box. By default, this is
        the bounding box of the tile.\n  * Value ranges for any sub-aggregations on
        the `geotile_grid` or `geohex_grid`.\n  * Metadata for the search.\n\nThe
        API only returns features that can display at its zoom level.\nFor example,
        if a polygon feature has no area at its zoom level, the API omits it.\nThe
        API returns errors as UTF-8 encoded JSON.\n\nIMPORTANT: You can specify several
        options for this API as either a query parameter or request body parameter.\nIf
        you specify both parameters, the query parameter takes precedence.\n\n**Grid
        precision for geotile**\n\nFor a `grid_agg` of `geotile`, you can use cells
        in the `aggs` layer as tiles for lower zoom levels.\n`grid_precision` represents
        the additional zoom levels available through these cells. The final precision
        is computed by as follows: `<zoom> + grid_precision`.\nFor example, if `<zoom>`
        is 7 and `grid_precision` is 8, then the `geotile_grid` aggregation will use
        a precision of 15.\nThe maximum final precision is 29.\nThe `grid_precision`
        also determines the number of cells for the grid as follows: `(2^grid_precision)
        x (2^grid_precision)`.\nFor example, a value of 8 divides the tile into a
        grid of 256 x 256 cells.\nThe `aggs` layer only contains features for cells
        with matching data.\n\n**Grid precision for geohex**\n\nFor a `grid_agg` of
        `geohex`, Elasticsearch uses `<zoom>` and `grid_precision` to calculate a
        final precision as follows: `<zoom> + grid_precision`.\n\nThis precision determines
        the H3 resolution of the hexagonal cells produced by the `geohex` aggregation.\nThe
        following table maps the H3 resolution for each precision.\nFor example, if
        `<zoom>` is 3 and `grid_precision` is 3, the precision is 6.\nAt a precision
        of 6, hexagonal cells have an H3 resolution of 2.\nIf `<zoom>` is 3 and `grid_precision`
        is 4, the precision is 7.\nAt a precision of 7, hexagonal cells have an H3
        resolution of 3.\n\n| Precision | Unique tile bins | H3 resolution | Unique
        hex bins |\tRatio |\n| --------- | ---------------- | ------------- | ----------------|
        ----- |\n| 1  | 4                  | 0  | 122             | 30.5           |\n|
        2  | 16                 | 0  | 122             | 7.625          |\n| 3  |
        64                 | 1  | 842             | 13.15625       |\n| 4  | 256                |
        1  | 842             | 3.2890625      |\n| 5  | 1024               | 2  |
        5882            | 5.744140625    |\n| 6  | 4096               | 2  | 5882
        \           | 1.436035156    |\n| 7  | 16384              | 3  | 41162           |
        2.512329102    |\n| 8  | 65536              | 3  | 41162           | 0.6280822754
        \  |\n| 9  | 262144             | 4  | 288122          | 1.099098206    |\n|
        10 | 1048576            | 4  | 288122          | 0.2747745514   |\n| 11 |
        4194304            | 5  | 2016842         | 0.4808526039   |\n| 12 | 16777216
        \          | 6  | 14117882        | 0.8414913416   |\n| 13 | 67108864           |
        6  | 14117882        | 0.2103728354   |\n| 14 | 268435456          | 7  |
        98825162        | 0.3681524172   |\n| 15 | 1073741824         | 8  | 691776122
        \      | 0.644266719    |\n| 16 | 4294967296         | 8  | 691776122       |
        0.1610666797   |\n| 17 | 17179869184        | 9  | 4842432842      | 0.2818666889
        \  |\n| 18 | 68719476736        | 10 | 33897029882     | 0.4932667053   |\n|
        19 | 274877906944       | 11 | 237279209162    | 0.8632167343   |\n| 20 |
        1099511627776      | 11 | 237279209162    | 0.2158041836   |\n| 21 | 4398046511104
        \     | 12 | 1660954464122   | 0.3776573213   |\n| 22 | 17592186044416     |
        13 | 11626681248842  | 0.6609003122   |\n| 23 | 70368744177664     | 13 |
        11626681248842  | 0.165225078    |\n| 24 | 281474976710656    | 14 | 81386768741882
        \ | 0.2891438866   |\n| 25 | 1125899906842620   | 15 | 569707381193162 | 0.5060018015
        \  |\n| 26 | 4503599627370500   | 15 | 569707381193162 | 0.1265004504   |\n|
        27 | 18014398509482000  | 15 | 569707381193162 | 0.03162511259  |\n| 28 |
        72057594037927900  | 15 | 569707381193162 | 0.007906278149 |\n| 29 | 288230376151712000
        | 15 | 569707381193162 | 0.001976569537 |\n\nHexagonal cells don't align perfectly
        on a vector tile.\nSome cells may intersect more than one vector tile.\nTo
        compute the H3 resolution for each precision, Elasticsearch compares the average
        density of hexagonal bins at each resolution with the average density of tile
        bins at each zoom level.\nElasticsearch uses the H3 resolution that is closest
        to the corresponding geotile density.\n\nLearn how to use the vector tile
        search API with practical examples in the [Vector tile search examples](https://www.elastic.co/docs/reference/elasticsearch/rest-apis/vector-tile-search)
        guide.\n\n## Required authorization\n\n* Index privileges: `read`\n"
      externalDocs:
        url: https://github.com/mapbox/vector-tile-spec/blob/master/README.md
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/search-vector-tile-api.html
      operationId: search-mvt
      parameters:
      - "$ref": "#/components/parameters/search_mvt-index"
      - "$ref": "#/components/parameters/search_mvt-field"
      - "$ref": "#/components/parameters/search_mvt-zoom"
      - "$ref": "#/components/parameters/search_mvt-x"
      - "$ref": "#/components/parameters/search_mvt-y"
      - "$ref": "#/components/parameters/search_mvt-exact_bounds"
      - "$ref": "#/components/parameters/search_mvt-extent"
      - "$ref": "#/components/parameters/search_mvt-grid_agg"
      - "$ref": "#/components/parameters/search_mvt-grid_precision"
      - "$ref": "#/components/parameters/search_mvt-grid_type"
      - "$ref": "#/components/parameters/search_mvt-size"
      - "$ref": "#/components/parameters/search_mvt-track_total_hits"
      - "$ref": "#/components/parameters/search_mvt-with_labels"
      requestBody:
        "$ref": "#/components/requestBodies/search_mvt"
      responses:
        '200':
          "$ref": "#/components/responses/search_mvt-200"
      x-state: Generally available; Added in 7.15.0
      x-codeSamples:
      - lang: Console
        source: |-
          GET museums/_mvt/location/13/4207/2692
          {
            "grid_agg": "geotile",
            "grid_precision": 2,
            "fields": [
              "name",
              "price"
            ],
            "query": {
              "term": {
                "included": true
              }
            },
            "aggs": {
              "min_price": {
                "min": {
                  "field": "price"
                }
              },
              "max_price": {
                "max": {
                  "field": "price"
                }
              },
              "avg_price": {
                "avg": {
                  "field": "price"
                }
              }
            }
          }
      - lang: Python
        source: |-
          resp = client.search_mvt(
              index="museums",
              field="location",
              zoom="13",
              x="4207",
              y="2692",
              grid_agg="geotile",
              grid_precision=2,
              fields=[
                  "name",
                  "price"
              ],
              query={
                  "term": {
                      "included": True
                  }
              },
              aggs={
                  "min_price": {
                      "min": {
                          "field": "price"
                      }
                  },
                  "max_price": {
                      "max": {
                          "field": "price"
                      }
                  },
                  "avg_price": {
                      "avg": {
                          "field": "price"
                      }
                  }
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.searchMvt({
            index: "museums",
            field: "location",
            zoom: 13,
            x: 4207,
            y: 2692,
            grid_agg: "geotile",
            grid_precision: 2,
            fields: ["name", "price"],
            query: {
              term: {
                included: true,
              },
            },
            aggs: {
              min_price: {
                min: {
                  field: "price",
                },
              },
              max_price: {
                max: {
                  field: "price",
                },
              },
              avg_price: {
                avg: {
                  field: "price",
                },
              },
            },
          });
      - lang: Ruby
        source: |-
          response = client.search_mvt(
            index: "museums",
            field: "location",
            zoom: "13",
            x: "4207",
            y: "2692",
            body: {
              "grid_agg": "geotile",
              "grid_precision": 2,
              "fields": [
                "name",
                "price"
              ],
              "query": {
                "term": {
                  "included": true
                }
              },
              "aggs": {
                "min_price": {
                  "min": {
                    "field": "price"
                  }
                },
                "max_price": {
                  "max": {
                    "field": "price"
                  }
                },
                "avg_price": {
                  "avg": {
                    "field": "price"
                  }
                }
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->searchMvt([
              "index" => "museums",
              "field" => "location",
              "zoom" => "13",
              "x" => "4207",
              "y" => "2692",
              "body" => [
                  "grid_agg" => "geotile",
                  "grid_precision" => 2,
                  "fields" => array(
                      "name",
                      "price",
                  ),
                  "query" => [
                      "term" => [
                          "included" => true,
                      ],
                  ],
                  "aggs" => [
                      "min_price" => [
                          "min" => [
                              "field" => "price",
                          ],
                      ],
                      "max_price" => [
                          "max" => [
                              "field" => "price",
                          ],
                      ],
                      "avg_price" => [
                          "avg" => [
                              "field" => "price",
                          ],
                      ],
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"grid_agg":"geotile","grid_precision":2,"fields":["name","price"],"query":{"term":{"included":true}},"aggs":{"min_price":{"min":{"field":"price"}},"max_price":{"max":{"field":"price"}},"avg_price":{"avg":{"field":"price"}}}}''
          "$ELASTICSEARCH_URL/museums/_mvt/location/13/4207/2692"'
      - lang: Java
        source: |
          client.searchMvt(s -> s
              .aggs(Map.of("max_price", Aggregation.of(a -> a
                      .max(m -> m
                          .field("price")
                      )
                  ),"min_price", Aggregation.of(ag -> ag
                      .min(m -> m
                          .field("price")
                      )
                  ),"avg_price", Aggregation.of(agg -> agg
                      .avg(av -> av
                          .field("price")
                      )
                  )))
              .field("location")
              .fields(List.of("name","price"))
              .gridAgg(GridAggregationType.Geotile)
              .gridPrecision(2)
              .index("museums")
              .query(q -> q
                  .term(t -> t
                      .field("included")
                      .value(FieldValue.of(true))
                  )
              )
              .x(4207)
              .y(2692)
              .zoom(13)
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/{index}/_search_shards":
    post:
      tags:
      - search
      summary: 'Get the search shards

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_search_shards</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_search_shards</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/{index}/_search_shards</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/{index}/_search_shards</span>\n
        \                     </div>\n                    \n\nGet the indices and
        shards that a search request would be run against.\nThis information can be
        useful for working out issues or planning optimizations with routing and shard
        preferences.\nWhen filtered aliases are used, the filter is returned as part
        of the `indices` section.\n\nIf the Elasticsearch security features are enabled,
        you must have the `view_index_metadata` or `manage` index privilege for the
        target data stream, index, or alias.\n\n## Required authorization\n\n* Index
        privileges: `view_index_metadata`\n"
      operationId: search-shards
      parameters:
      - "$ref": "#/components/parameters/search_shards-index"
      - "$ref": "#/components/parameters/search_shards-allow_no_indices"
      - "$ref": "#/components/parameters/search_shards-expand_wildcards"
      - "$ref": "#/components/parameters/search_shards-ignore_unavailable"
      - "$ref": "#/components/parameters/search_shards-local"
      - "$ref": "#/components/parameters/search_shards-master_timeout"
      - "$ref": "#/components/parameters/search_shards-preference"
      - "$ref": "#/components/parameters/search_shards-routing"
      responses:
        '200':
          "$ref": "#/components/responses/search_shards-200"
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'GET /my-index-000001/_search_shards

          '
      - lang: Python
        source: |-
          resp = client.search_shards(
              index="my-index-000001",
          )
      - lang: JavaScript
        source: |-
          const response = await client.searchShards({
            index: "my-index-000001",
          });
      - lang: Ruby
        source: |-
          response = client.search_shards(
            index: "my-index-000001"
          )
      - lang: PHP
        source: |-
          $resp = $client->searchShards([
              "index" => "my-index-000001",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/my-index-000001/_search_shards"'
      - lang: Java
        source: |
          client.searchShards(s -> s
              .index("my-index-000001")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/{index}/_search/template":
    post:
      tags:
      - search
      summary: 'Run a search with a search template

        '
      description: |
        **All methods and paths for this operation:**

        <div>
                              <span class="operation-verb get">GET</span>
                              <span class="operation-path">/_search/template</span>
                              </div>
                            <div>
                              <span class="operation-verb post">POST</span>
                              <span class="operation-path">/_search/template</span>
                              </div>
                            <div>
                              <span class="operation-verb get">GET</span>
                              <span class="operation-path">/{index}/_search/template</span>
                              </div>
                            <div>
                              <span class="operation-verb post">POST</span>
                              <span class="operation-path">/{index}/_search/template</span>
                              </div>

        ## Required authorization

        * Index privileges: `read`
      externalDocs:
        url: https://www.elastic.co/docs/solutions/search/search-templates
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/search-template-api.html
      operationId: search-template
      parameters:
      - "$ref": "#/components/parameters/search_template-index"
      - "$ref": "#/components/parameters/search_template-allow_no_indices"
      - "$ref": "#/components/parameters/search_template-ccs_minimize_roundtrips"
      - "$ref": "#/components/parameters/search_template-expand_wildcards"
      - "$ref": "#/components/parameters/search_template-explain"
      - "$ref": "#/components/parameters/search_template-ignore_throttled"
      - "$ref": "#/components/parameters/search_template-ignore_unavailable"
      - "$ref": "#/components/parameters/search_template-preference"
      - "$ref": "#/components/parameters/search_template-profile"
      - "$ref": "#/components/parameters/search_template-routing"
      - "$ref": "#/components/parameters/search_template-scroll"
      - "$ref": "#/components/parameters/search_template-search_type"
      - "$ref": "#/components/parameters/search_template-rest_total_hits_as_int"
      - "$ref": "#/components/parameters/search_template-typed_keys"
      requestBody:
        "$ref": "#/components/requestBodies/search_template"
      responses:
        '200':
          "$ref": "#/components/responses/search_template-200"
      x-state: Generally available; Added in 2.0.0
      x-codeSamples:
      - lang: Console
        source: |-
          GET my-index/_search/template
          {
            "id": "my-search-template",
            "params": {
              "query_string": "hello world",
              "from": 0,
              "size": 10
            }
          }
      - lang: Python
        source: |-
          resp = client.search_template(
              index="my-index",
              id="my-search-template",
              params={
                  "query_string": "hello world",
                  "from": 0,
                  "size": 10
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.searchTemplate({
            index: "my-index",
            id: "my-search-template",
            params: {
              query_string: "hello world",
              from: 0,
              size: 10,
            },
          });
      - lang: Ruby
        source: |-
          response = client.search_template(
            index: "my-index",
            body: {
              "id": "my-search-template",
              "params": {
                "query_string": "hello world",
                "from": 0,
                "size": 10
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->searchTemplate([
              "index" => "my-index",
              "body" => [
                  "id" => "my-search-template",
                  "params" => [
                      "query_string" => "hello world",
                      "from" => 0,
                      "size" => 10,
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"id":"my-search-template","params":{"query_string":"hello
          world","from":0,"size":10}}'' "$ELASTICSEARCH_URL/my-index/_search/template"'
      - lang: Java
        source: |
          client.searchTemplate(s -> s
              .id("my-search-template")
              .index("my-index")
              .params(Map.of("size", JsonData.fromJson("10"),"from", JsonData.fromJson("0"),"query_string", JsonData.fromJson("\"hello world\"")))
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_searchable_snapshots/{node_id}/cache/stats":
    get:
      tags:
      - searchable_snapshots
      summary: 'Get cache statistics

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_searchable_snapshots/cache/stats</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_searchable_snapshots/{node_id}/cache/stats</span>\n
        \                     </div>\n                    \n\nGet statistics about
        the shared cache for partially mounted indices.\n\n## Required authorization\n\n*
        Cluster privileges: `manage`\n"
      externalDocs:
        url: https://www.elastic.co/docs/deploy-manage/tools/snapshot-and-restore/searchable-snapshots
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/searchable-snapshots-api-cache-stats.html
      operationId: searchable-snapshots-cache-stats
      parameters:
      - "$ref": "#/components/parameters/searchable_snapshots.cache_stats-node_id"
      - "$ref": "#/components/parameters/searchable_snapshots.cache_stats-master_timeout"
      responses:
        '200':
          "$ref": "#/components/responses/searchable_snapshots.cache_stats-200"
      x-state: Technical preview; Added in 7.13.0
      x-codeSamples:
      - lang: Console
        source: 'GET /_searchable_snapshots/cache/stats

          '
      - lang: Python
        source: resp = client.searchable_snapshots.cache_stats()
      - lang: JavaScript
        source: const response = await client.searchableSnapshots.cacheStats();
      - lang: Ruby
        source: response = client.searchable_snapshots.cache_stats
      - lang: PHP
        source: "$resp = $client->searchableSnapshots()->cacheStats();"
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_searchable_snapshots/cache/stats"'
      - lang: Java
        source: 'client.searchableSnapshots().cacheStats(c -> c);

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/{index}/_searchable_snapshots/cache/clear":
    post:
      tags:
      - searchable_snapshots
      summary: 'Clear the cache

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_searchable_snapshots/cache/clear</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/{index}/_searchable_snapshots/cache/clear</span>\n
        \                     </div>\n                    \n\nClear indices and data
        streams from the shared cache for partially mounted indices.\n\n## Required
        authorization\n\n* Index privileges: `manage`\n* Cluster privileges: `manage`\n"
      externalDocs:
        url: https://www.elastic.co/docs/deploy-manage/tools/snapshot-and-restore/searchable-snapshots
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/searchable-snapshots-api-clear-cache.html
      operationId: searchable-snapshots-clear-cache
      parameters:
      - "$ref": "#/components/parameters/searchable_snapshots.clear_cache-index"
      - "$ref": "#/components/parameters/searchable_snapshots.clear_cache-expand_wildcards"
      - "$ref": "#/components/parameters/searchable_snapshots.clear_cache-allow_no_indices"
      - "$ref": "#/components/parameters/searchable_snapshots.clear_cache-ignore_unavailable"
      responses:
        '200':
          "$ref": "#/components/responses/searchable_snapshots.clear_cache-200"
      x-state: Technical preview; Added in 7.10.0
      x-codeSamples:
      - lang: Console
        source: 'POST /my-index/_searchable_snapshots/cache/clear

          '
      - lang: Python
        source: |-
          resp = client.searchable_snapshots.clear_cache(
              index="my-index",
          )
      - lang: JavaScript
        source: |-
          const response = await client.searchableSnapshots.clearCache({
            index: "my-index",
          });
      - lang: Ruby
        source: |-
          response = client.searchable_snapshots.clear_cache(
            index: "my-index"
          )
      - lang: PHP
        source: |-
          $resp = $client->searchableSnapshots()->clearCache([
              "index" => "my-index",
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/my-index/_searchable_snapshots/cache/clear"'
      - lang: Java
        source: |
          client.searchableSnapshots().clearCache(c -> c
              .index("my-index")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_snapshot/{repository}/{snapshot}/_mount":
    post:
      tags:
      - searchable_snapshots
      summary: Mount a snapshot
      description: |
        Mount a snapshot as a searchable snapshot index.
        Do not use this API for snapshots managed by index lifecycle management (ILM).
        Manually mounting ILM-managed snapshots can interfere with ILM processes.

        ## Required authorization

        * Index privileges: `manage`
        * Cluster privileges: `manage`
      operationId: searchable-snapshots-mount
      parameters:
      - in: path
        name: repository
        description: The name of the repository containing the snapshot of the index
          to mount.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Name"
        style: simple
      - in: path
        name: snapshot
        description: The name of the snapshot of the index to mount.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Name"
        style: simple
      - in: query
        name: master_timeout
        description: |-
          The period to wait for the master node.
          If the master node is not available before the timeout expires, the request fails and returns an error.
          To indicate that the request should never timeout, set it to `-1`.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: wait_for_completion
        description: If true, the request blocks until the operation is complete.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: storage
        description: |+
          The mount option for the searchable snapshot index.
          For further information on mount options, refer to: [Mount options](https://www.elastic.co/docs/deploy-manage/tools/snapshot-and-restore/searchable-snapshots#searchable-snapshot-mount-storage-options)

          Supported values include:
            - `full_copy`: Fully caches the snapshotted index’s shards in the Elasticsearch cluster.
            - `shared_cache`: Uses a local cache containing only recently searched parts of the snapshotted index’s data.

        deprecated: false
        schema:
          "$ref": "#/components/schemas/searchable_snapshots.mount.StorageOption"
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                index:
                  description: |-
                    The name of the index contained in the snapshot whose data is to be mounted.
                    If no `renamed_index` is specified, this name will also be used to create the new index.
                  allOf:
                  - "$ref": "#/components/schemas/_types.IndexName"
                renamed_index:
                  description: The name of the index that will be created.
                  allOf:
                  - "$ref": "#/components/schemas/_types.IndexName"
                index_settings:
                  description: The settings that should be added to the index when
                    it is mounted.
                  type: object
                  additionalProperties:
                    type: object
                ignore_index_settings:
                  description: The names of settings that should be removed from the
                    index when it is mounted.
                  type: array
                  items:
                    type: string
              required:
              - index
            examples:
              SearchableSnapshotsMountSnapshotRequestExample1:
                description: 'Run `POST /_snapshot/my_repository/my_snapshot/_mount?wait_for_completion=true`
                  to mount the index `my_docs` from an existing snapshot named `my_snapshot`
                  stored in `my_repository` as a new index `docs`.

                  '
                value: |-
                  {
                    "index": "my_docs",
                    "renamed_index": "docs",
                    "index_settings": {
                      "index.number_of_replicas": 0
                    },
                    "ignore_index_settings": [ "index.refresh_interval" ]
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  snapshot:
                    allOf:
                    - "$ref": "#/components/schemas/searchable_snapshots.mount.MountedSnapshot"
                required:
                - snapshot
      x-state: Generally available; Added in 7.10.0
      x-codeSamples:
      - lang: Console
        source: |-
          POST /_snapshot/my_repository/my_snapshot/_mount?wait_for_completion=true
          {
            "index": "my_docs",
            "renamed_index": "docs",
            "index_settings": {
              "index.number_of_replicas": 0
            },
            "ignore_index_settings": [ "index.refresh_interval" ]
          }
      - lang: Python
        source: |-
          resp = client.searchable_snapshots.mount(
              repository="my_repository",
              snapshot="my_snapshot",
              wait_for_completion=True,
              index="my_docs",
              renamed_index="docs",
              index_settings={
                  "index.number_of_replicas": 0
              },
              ignore_index_settings=[
                  "index.refresh_interval"
              ],
          )
      - lang: JavaScript
        source: |-
          const response = await client.searchableSnapshots.mount({
            repository: "my_repository",
            snapshot: "my_snapshot",
            wait_for_completion: "true",
            index: "my_docs",
            renamed_index: "docs",
            index_settings: {
              "index.number_of_replicas": 0,
            },
            ignore_index_settings: ["index.refresh_interval"],
          });
      - lang: Ruby
        source: |-
          response = client.searchable_snapshots.mount(
            repository: "my_repository",
            snapshot: "my_snapshot",
            wait_for_completion: "true",
            body: {
              "index": "my_docs",
              "renamed_index": "docs",
              "index_settings": {
                "index.number_of_replicas": 0
              },
              "ignore_index_settings": [
                "index.refresh_interval"
              ]
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->searchableSnapshots()->mount([
              "repository" => "my_repository",
              "snapshot" => "my_snapshot",
              "wait_for_completion" => "true",
              "body" => [
                  "index" => "my_docs",
                  "renamed_index" => "docs",
                  "index_settings" => [
                      "index.number_of_replicas" => 0,
                  ],
                  "ignore_index_settings" => array(
                      "index.refresh_interval",
                  ),
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"index":"my_docs","renamed_index":"docs","index_settings":{"index.number_of_replicas":0},"ignore_index_settings":["index.refresh_interval"]}''
          "$ELASTICSEARCH_URL/_snapshot/my_repository/my_snapshot/_mount?wait_for_completion=true"'
      - lang: Java
        source: |
          client.searchableSnapshots().mount(m -> m
              .ignoreIndexSettings("index.refresh_interval")
              .index("my_docs")
              .indexSettings("index.number_of_replicas", JsonData.fromJson("0"))
              .renamedIndex("docs")
              .repository("my_repository")
              .snapshot("my_snapshot")
              .waitForCompletion(true)
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/{index}/_searchable_snapshots/stats":
    get:
      tags:
      - searchable_snapshots
      summary: 'Get searchable snapshot statistics

        '
      description: |
        **All methods and paths for this operation:**

        <div>
                              <span class="operation-verb get">GET</span>
                              <span class="operation-path">/_searchable_snapshots/stats</span>
                              </div>
                            <div>
                              <span class="operation-verb get">GET</span>
                              <span class="operation-path">/{index}/_searchable_snapshots/stats</span>
                              </div>

        ## Required authorization

        * Index privileges: `manage`
        * Cluster privileges: `manage`
      operationId: searchable-snapshots-stats
      parameters:
      - "$ref": "#/components/parameters/searchable_snapshots.stats-index"
      - "$ref": "#/components/parameters/searchable_snapshots.stats-level"
      responses:
        '200':
          "$ref": "#/components/responses/searchable_snapshots.stats-200"
      x-state: Generally available; Added in 7.10.0
      x-codeSamples:
      - lang: Console
        source: 'GET /my-index/_searchable_snapshots/stats

          '
      - lang: Python
        source: |-
          resp = client.searchable_snapshots.stats(
              index="my-index",
          )
      - lang: JavaScript
        source: |-
          const response = await client.searchableSnapshots.stats({
            index: "my-index",
          });
      - lang: Ruby
        source: |-
          response = client.searchable_snapshots.stats(
            index: "my-index"
          )
      - lang: PHP
        source: |-
          $resp = $client->searchableSnapshots()->stats([
              "index" => "my-index",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/my-index/_searchable_snapshots/stats"'
      - lang: Java
        source: |
          client.searchableSnapshots().stats(s -> s
              .index("my-index")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_security/profile/_activate":
    post:
      tags:
      - security
      summary: Activate a user profile
      description: |
        Create or update a user profile on behalf of another user.

        NOTE: The user profile feature is designed only for use by Kibana and Elastic's Observability, Enterprise Search, and Elastic Security solutions.
        Individual users and external applications should not call this API directly.
        The calling application must have either an `access_token` or a combination of `username` and `password` for the user that the profile document is intended for.
        Elastic reserves the right to change or remove this feature in future releases without prior notice.

        This API creates or updates a profile document for end users with information that is extracted from the user's authentication object including `username`, `full_name,` `roles`, and the authentication realm.
        For example, in the JWT `access_token` case, the profile user's `username` is extracted from the JWT token claim pointed to by the `claims.principal` setting of the JWT realm that authenticated the token.

        When updating a profile document, the API enables the document if it was disabled.
        Any updates do not change existing content for either the `labels` or `data` fields.

        ## Required authorization

        * Cluster privileges: `manage_user_profile`
      operationId: security-activate-user-profile
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                access_token:
                  description: |-
                    The user's Elasticsearch access token or JWT.
                    Both `access` and `id` JWT token types are supported and they depend on the underlying JWT realm configuration.
                    If you specify the `access_token` grant type, this parameter is required.
                    It is not valid with other grant types.
                  type: string
                grant_type:
                  description: |+
                    The type of grant.

                    Supported values include:
                      - `password`: In this type of grant, you must supply the user ID and password for which you want to create the API key.
                      - `access_token`: In this type of grant, you must supply an access token that was created by the Elasticsearch token service.
                    If you are activating a user profile, you can alternatively supply a JWT (either a JWT `access_token` or a JWT `id_token`).

                  allOf:
                  - "$ref": "#/components/schemas/security._types.GrantType"
                password:
                  description: |-
                    The user's password.
                    If you specify the `password` grant type, this parameter is required.
                    It is not valid with other grant types.
                  type: string
                username:
                  description: |-
                    The username that identifies the user.
                    If you specify the `password` grant type, this parameter is required.
                    It is not valid with other grant types.
                  type: string
              required:
              - grant_type
            examples:
              ActivateUserProfileRequestExample1:
                description: 'Run `POST /_security/profile/_activate` to activate
                  a user profile.

                  '
                value: |-
                  {
                    "grant_type": "password",
                    "username" : "jacknich",
                    "password" : "l0ng-r4nd0m-p@ssw0rd"
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/security._types.UserProfileWithMetadata"
              examples:
                ActivateUserProfileResponseExample1:
                  description: A successful response from `POST /_security/profile/_activate`.
                  value: |-
                    {
                      "uid": "u_79HkWkwmnBH5gqFKwoxggWPjEBOur1zLPXQPEl1VBW0_0",
                      "enabled": true,
                      "last_synchronized": 1642650651037,
                      "user": {
                        "username": "jacknich",
                        "roles": [
                          "admin", "other_role1"
                        ],
                        "realm_name": "native",
                        "full_name": "Jack Nicholson",
                        "email": "jacknich@example.com"
                      },
                      "labels": {},
                      "data": {},
                      "_doc": {
                        "_primary_term": 88,
                        "_seq_no": 66
                      }
                    }
      x-state: Generally available; Added in 8.2.0
      x-codeSamples:
      - lang: Console
        source: |-
          POST /_security/profile/_activate
          {
            "grant_type": "password",
            "username" : "jacknich",
            "password" : "l0ng-r4nd0m-p@ssw0rd"
          }
      - lang: Python
        source: |-
          resp = client.security.activate_user_profile(
              grant_type="password",
              username="jacknich",
              password="l0ng-r4nd0m-p@ssw0rd",
          )
      - lang: JavaScript
        source: |-
          const response = await client.security.activateUserProfile({
            grant_type: "password",
            username: "jacknich",
            password: "l0ng-r4nd0m-p@ssw0rd",
          });
      - lang: Ruby
        source: |-
          response = client.security.activate_user_profile(
            body: {
              "grant_type": "password",
              "username": "jacknich",
              "password": "l0ng-r4nd0m-p@ssw0rd"
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->security()->activateUserProfile([
              "body" => [
                  "grant_type" => "password",
                  "username" => "jacknich",
                  "password" => "l0ng-r4nd0m-p@ssw0rd",
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"grant_type":"password","username":"jacknich","password":"l0ng-r4nd0m-p@ssw0rd"}''
          "$ELASTICSEARCH_URL/_security/profile/_activate"'
      - lang: Java
        source: |
          client.security().activateUserProfile(a -> a
              .grantType(GrantType.Password)
              .password("l0ng-r4nd0m-p@ssw0rd")
              .username("jacknich")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_security/_authenticate":
    get:
      tags:
      - security
      summary: Authenticate a user
      description: |-
        Authenticates a user and returns information about the authenticated user.
        Include the user information in a [basic auth header](https://en.wikipedia.org/wiki/Basic_access_authentication).
        A successful call returns a JSON structure that shows user information such as their username, the roles that are assigned to the user, any assigned metadata, and information about the realms that authenticated and authorized the user.
        If the user cannot be authenticated, this API returns a 401 status code.
      operationId: security-authenticate
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  api_key:
                    allOf:
                    - "$ref": "#/components/schemas/security.authenticate.AuthenticateApiKey"
                  authentication_realm:
                    allOf:
                    - "$ref": "#/components/schemas/security._types.RealmInfo"
                  email:
                    oneOf:
                    - type: string
                    - nullable: true
                      type: string
                  full_name:
                    oneOf:
                    - "$ref": "#/components/schemas/_types.Name"
                    - nullable: true
                      type: string
                  lookup_realm:
                    allOf:
                    - "$ref": "#/components/schemas/security._types.RealmInfo"
                  metadata:
                    allOf:
                    - "$ref": "#/components/schemas/_types.Metadata"
                  roles:
                    type: array
                    items:
                      type: string
                  username:
                    allOf:
                    - "$ref": "#/components/schemas/_types.Username"
                  enabled:
                    type: boolean
                  authentication_type:
                    type: string
                  token:
                    x-state: Generally available; Added in 7.14.0
                    allOf:
                    - "$ref": "#/components/schemas/security.authenticate.Token"
                required:
                - authentication_realm
                - lookup_realm
                - metadata
                - roles
                - username
                - enabled
                - authentication_type
              examples:
                SecurityAuthenticateResponseExample1:
                  description: A successful response from `GET /_security/_authenticate`.
                  value: |-
                    {
                      "username": "rdeniro",
                      "roles": [
                        "admin"
                      ],
                      "full_name": null,
                      "email":  null,
                      "metadata": { },
                      "enabled": true,
                      "authentication_realm": {
                        "name" : "file",
                        "type" : "file"
                      },
                      "lookup_realm": {
                        "name" : "file",
                        "type" : "file"
                      },
                      "authentication_type": "realm"
                    }
      x-state: Generally available; Added in 5.5.0
      x-codeSamples:
      - lang: Console
        source: 'GET /_security/_authenticate

          '
      - lang: Python
        source: resp = client.security.authenticate()
      - lang: JavaScript
        source: const response = await client.security.authenticate();
      - lang: Ruby
        source: response = client.security.authenticate
      - lang: PHP
        source: "$resp = $client->security()->authenticate();"
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_security/_authenticate"'
      - lang: Java
        source: 'client.security().authenticate();

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_security/role":
    post:
      tags:
      - security
      summary: Bulk create or update roles
      description: |
        The role management APIs are generally the preferred way to manage roles, rather than using file-based role management.
        The bulk create or update roles API cannot update roles that are defined in roles files.

        ## Required authorization

        * Cluster privileges: `manage_security`
      operationId: security-bulk-put-role
      parameters:
      - in: query
        name: refresh
        description: If `true` (the default) then refresh the affected shards to make
          this operation visible to search, if `wait_for` then wait for a refresh
          to make this operation visible to search, if `false` then do nothing with
          refreshes.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Refresh"
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                roles:
                  description: A dictionary of role name to RoleDescriptor objects
                    to add or update
                  type: object
                  additionalProperties:
                    "$ref": "#/components/schemas/security._types.RoleDescriptor"
              required:
              - roles
            examples:
              SecurityBulkPutRoleRequestExample1:
                summary: Bulk role success
                description: 'Run `POST /_security/role` to add roles called `my_admin_role`
                  and `my_user_role`.

                  '
                value: |-
                  {
                    "roles": {
                        "my_admin_role": {
                            "cluster": [
                                "all"
                            ],
                            "indices": [
                                {
                                    "names": [
                                        "index1",
                                        "index2"
                                    ],
                                    "privileges": [
                                        "all"
                                    ],
                                    "field_security": {
                                        "grant": [
                                            "title",
                                            "body"
                                        ]
                                    },
                                    "query": "{\"match\": {\"title\": \"foo\"}}"
                                }
                            ],
                            "applications": [
                                {
                                    "application": "myapp",
                                    "privileges": [
                                        "admin",
                                        "read"
                                    ],
                                    "resources": [
                                        "*"
                                    ]
                                }
                            ],
                            "run_as": [
                                "other_user"
                            ],
                            "metadata": {
                                "version": 1
                            }
                        },
                        "my_user_role": {
                            "cluster": [
                                "all"
                            ],
                            "indices": [
                                {
                                    "names": [
                                        "index1"
                                    ],
                                    "privileges": [
                                        "read"
                                    ],
                                    "field_security": {
                                        "grant": [
                                            "title",
                                            "body"
                                        ]
                                    },
                                    "query": "{\"match\": {\"title\": \"foo\"}}"
                                }
                            ],
                            "applications": [
                                {
                                    "application": "myapp",
                                    "privileges": [
                                        "admin",
                                        "read"
                                    ],
                                    "resources": [
                                        "*"
                                    ]
                                }
                            ],
                            "run_as": [
                                "other_user"
                            ],
                            "metadata": {
                                "version": 1
                            }
                        }
                    }
                  }
              SecurityBulkPutRoleRequestExample2:
                summary: Bulk role errors
                description: 'Because errors are handled individually for each role
                  create or update, the API allows partial success. For example, `POST
                  /_security/role` would throw an error for `my_admin_role` because
                  the privilege `bad_cluster_privilege` doesn''t exist, but would
                  be successful for the `my_user_role`.

                  '
                value: |-
                  {
                    "roles": {
                        "my_admin_role": {
                            "cluster": [
                                "bad_cluster_privilege"
                            ],
                            "indices": [
                                {
                                    "names": [
                                        "index1",
                                        "index2"
                                    ],
                                    "privileges": ["all"],
                                    "field_security": {
                                        "grant": [
                                            "title",
                                            "body"
                                        ]
                                    },
                                    "query": "{\"match\": {\"title\": \"foo\"}}"
                                }
                            ],
                            "applications": [
                                {
                                    "application": "myapp",
                                    "privileges": [
                                        "admin",
                                        "read"
                                    ],
                                    "resources": [
                                        "*"
                                    ]
                                }
                            ],
                            "run_as": [
                                "other_user"
                            ],
                            "metadata": {
                                "version": 1
                            }
                        },
                        "my_user_role": {
                            "cluster": [
                                "all"
                            ],
                            "indices": [
                                {
                                    "names": [
                                        "index1"
                                    ],
                                    "privileges": [
                                        "read"
                                    ],
                                    "field_security": {
                                        "grant": [
                                            "title",
                                            "body"
                                        ]
                                    },
                                    "query": "{\"match\": {\"title\": \"foo\"}}"
                                }
                            ],
                            "applications": [
                                {
                                    "application": "myapp",
                                    "privileges": [
                                        "admin",
                                        "read"
                                    ],
                                    "resources": [
                                        "*"
                                    ]
                                }
                            ],
                            "run_as": [
                                "other_user"
                            ],
                            "metadata": {
                                "version": 1
                            }
                        }
                    }
                  }
              SecurityBulkPutRoleRequestExample3:
                summary: Role example 3
                description: Run `POST /_security/role/only_remote_access_role` to
                  configure a role with remote indices and remote cluster privileges
                  for a remote cluster.
                value: "{\n  \"remote_indices\": [\n    {\n      \"clusters\": [\"my_remote\"],
                  \n      \"names\": [\"logs*\"], \n      \"privileges\": [\"read\",
                  \"read_cross_cluster\", \"view_index_metadata\"] \n    }\n  ],\n
                  \ \"remote_cluster\": [\n    {\n      \"clusters\": [\"my_remote\"],
                  \n      \"privileges\": [\"monitor_stats\"]  \n    }\n  ]\n}"
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  created:
                    description: Array of created roles
                    type: array
                    items:
                      type: string
                  updated:
                    description: Array of updated roles
                    type: array
                    items:
                      type: string
                  noop:
                    description: Array of role names without any changes
                    type: array
                    items:
                      type: string
                  errors:
                    description: Present if any updates resulted in errors
                    allOf:
                    - "$ref": "#/components/schemas/security._types.BulkError"
              examples:
                SecurityBulkPutRoleResponseExample1:
                  summary: A successful response
                  description: 'A successful response from `POST /_security/role/my_admin_role`
                    returns a JSON structure that shows whether the role has been
                    created, updated, or had no changes made.

                    '
                  value: "{\n    \"created\": [ \n        \"my_admin_role\", \n        \"my_user_role\"\n
                    \   ]\n}"
                SecurityBulkPutRoleResponseExample2:
                  summary: A partially successful response
                  description: 'A partially successful response from `POST /_security/role`.
                    Errors are handled individually for each role create or update,
                    thus the API allows partial success. In this example, the creation
                    of the `my_user_role` role succeeds and the `my_admin_role` role
                    fails.

                    '
                  value: "{\n  \"created\": [\n      \"my_user_role\" \n  ],\n  \"errors\":
                    { \n      \"count\": 1, \n      \"details\": {\n          \"my_admin_role\":
                    { \n              \"type\": \"action_request_validation_exception\",\n
                    \             \"reason\": \"Validation Failed: 1: unknown cluster
                    privilege [bad_cluster_privilege]. a privilege must be either
                    one of the predefined cluster privilege names [manage_own_api_key,manage_data_stream_global_retention,monitor_data_stream_global_retention,none,cancel_task,cross_cluster_replication,cross_cluster_search,delegate_pki,grant_api_key,manage_autoscaling,manage_index_templates,manage_logstash_pipelines,manage_oidc,manage_saml,manage_search_application,manage_search_query_rules,manage_search_synonyms,manage_service_account,manage_token,manage_user_profile,monitor_connector,monitor_enrich,monitor_inference,monitor_ml,monitor_rollup,monitor_snapshot,monitor_stats,monitor_text_structure,monitor_watcher,post_behavioral_analytics_event,read_ccr,read_connector_secrets,read_fleet_secrets,read_ilm,read_pipeline,read_security,read_slm,transport_client,write_connector_secrets,write_fleet_secrets,create_snapshot,manage_behavioral_analytics,manage_ccr,manage_connector,manage_enrich,manage_ilm,manage_inference,manage_ml,manage_rollup,manage_slm,manage_watcher,monitor_data_frame_transforms,monitor_transform,manage_api_key,manage_ingest_pipelines,manage_pipeline,manage_data_frame_transforms,manage_transform,manage_security,monitor,manage,all]
                    or a pattern over one of the available cluster actions;\"\n          }\n
                    \     }\n  }\n}"
      x-state: Generally available; Added in 8.15.0
      x-codeSamples:
      - lang: Console
        source: |-
          POST /_security/role
          {
            "roles": {
                "my_admin_role": {
                    "cluster": [
                        "all"
                    ],
                    "indices": [
                        {
                            "names": [
                                "index1",
                                "index2"
                            ],
                            "privileges": [
                                "all"
                            ],
                            "field_security": {
                                "grant": [
                                    "title",
                                    "body"
                                ]
                            },
                            "query": "{\"match\": {\"title\": \"foo\"}}"
                        }
                    ],
                    "applications": [
                        {
                            "application": "myapp",
                            "privileges": [
                                "admin",
                                "read"
                            ],
                            "resources": [
                                "*"
                            ]
                        }
                    ],
                    "run_as": [
                        "other_user"
                    ],
                    "metadata": {
                        "version": 1
                    }
                },
                "my_user_role": {
                    "cluster": [
                        "all"
                    ],
                    "indices": [
                        {
                            "names": [
                                "index1"
                            ],
                            "privileges": [
                                "read"
                            ],
                            "field_security": {
                                "grant": [
                                    "title",
                                    "body"
                                ]
                            },
                            "query": "{\"match\": {\"title\": \"foo\"}}"
                        }
                    ],
                    "applications": [
                        {
                            "application": "myapp",
                            "privileges": [
                                "admin",
                                "read"
                            ],
                            "resources": [
                                "*"
                            ]
                        }
                    ],
                    "run_as": [
                        "other_user"
                    ],
                    "metadata": {
                        "version": 1
                    }
                }
            }
          }
      - lang: Python
        source: |-
          resp = client.security.bulk_put_role(
              roles={
                  "my_admin_role": {
                      "cluster": [
                          "all"
                      ],
                      "indices": [
                          {
                              "names": [
                                  "index1",
                                  "index2"
                              ],
                              "privileges": [
                                  "all"
                              ],
                              "field_security": {
                                  "grant": [
                                      "title",
                                      "body"
                                  ]
                              },
                              "query": "{\"match\": {\"title\": \"foo\"}}"
                          }
                      ],
                      "applications": [
                          {
                              "application": "myapp",
                              "privileges": [
                                  "admin",
                                  "read"
                              ],
                              "resources": [
                                  "*"
                              ]
                          }
                      ],
                      "run_as": [
                          "other_user"
                      ],
                      "metadata": {
                          "version": 1
                      }
                  },
                  "my_user_role": {
                      "cluster": [
                          "all"
                      ],
                      "indices": [
                          {
                              "names": [
                                  "index1"
                              ],
                              "privileges": [
                                  "read"
                              ],
                              "field_security": {
                                  "grant": [
                                      "title",
                                      "body"
                                  ]
                              },
                              "query": "{\"match\": {\"title\": \"foo\"}}"
                          }
                      ],
                      "applications": [
                          {
                              "application": "myapp",
                              "privileges": [
                                  "admin",
                                  "read"
                              ],
                              "resources": [
                                  "*"
                              ]
                          }
                      ],
                      "run_as": [
                          "other_user"
                      ],
                      "metadata": {
                          "version": 1
                      }
                  }
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.security.bulkPutRole({
            roles: {
              my_admin_role: {
                cluster: ["all"],
                indices: [
                  {
                    names: ["index1", "index2"],
                    privileges: ["all"],
                    field_security: {
                      grant: ["title", "body"],
                    },
                    query: '{"match": {"title": "foo"}}',
                  },
                ],
                applications: [
                  {
                    application: "myapp",
                    privileges: ["admin", "read"],
                    resources: ["*"],
                  },
                ],
                run_as: ["other_user"],
                metadata: {
                  version: 1,
                },
              },
              my_user_role: {
                cluster: ["all"],
                indices: [
                  {
                    names: ["index1"],
                    privileges: ["read"],
                    field_security: {
                      grant: ["title", "body"],
                    },
                    query: '{"match": {"title": "foo"}}',
                  },
                ],
                applications: [
                  {
                    application: "myapp",
                    privileges: ["admin", "read"],
                    resources: ["*"],
                  },
                ],
                run_as: ["other_user"],
                metadata: {
                  version: 1,
                },
              },
            },
          });
      - lang: Ruby
        source: |-
          response = client.security.bulk_put_role(
            body: {
              "roles": {
                "my_admin_role": {
                  "cluster": [
                    "all"
                  ],
                  "indices": [
                    {
                      "names": [
                        "index1",
                        "index2"
                      ],
                      "privileges": [
                        "all"
                      ],
                      "field_security": {
                        "grant": [
                          "title",
                          "body"
                        ]
                      },
                      "query": "{\"match\": {\"title\": \"foo\"}}"
                    }
                  ],
                  "applications": [
                    {
                      "application": "myapp",
                      "privileges": [
                        "admin",
                        "read"
                      ],
                      "resources": [
                        "*"
                      ]
                    }
                  ],
                  "run_as": [
                    "other_user"
                  ],
                  "metadata": {
                    "version": 1
                  }
                },
                "my_user_role": {
                  "cluster": [
                    "all"
                  ],
                  "indices": [
                    {
                      "names": [
                        "index1"
                      ],
                      "privileges": [
                        "read"
                      ],
                      "field_security": {
                        "grant": [
                          "title",
                          "body"
                        ]
                      },
                      "query": "{\"match\": {\"title\": \"foo\"}}"
                    }
                  ],
                  "applications": [
                    {
                      "application": "myapp",
                      "privileges": [
                        "admin",
                        "read"
                      ],
                      "resources": [
                        "*"
                      ]
                    }
                  ],
                  "run_as": [
                    "other_user"
                  ],
                  "metadata": {
                    "version": 1
                  }
                }
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->security()->bulkPutRole([
              "body" => [
                  "roles" => [
                      "my_admin_role" => [
                          "cluster" => array(
                              "all",
                          ),
                          "indices" => array(
                              [
                                  "names" => array(
                                      "index1",
                                      "index2",
                                  ),
                                  "privileges" => array(
                                      "all",
                                  ),
                                  "field_security" => [
                                      "grant" => array(
                                          "title",
                                          "body",
                                      ),
                                  ],
                                  "query" => "{\"match\": {\"title\": \"foo\"}}",
                              ],
                          ),
                          "applications" => array(
                              [
                                  "application" => "myapp",
                                  "privileges" => array(
                                      "admin",
                                      "read",
                                  ),
                                  "resources" => array(
                                      "*",
                                  ),
                              ],
                          ),
                          "run_as" => array(
                              "other_user",
                          ),
                          "metadata" => [
                              "version" => 1,
                          ],
                      ],
                      "my_user_role" => [
                          "cluster" => array(
                              "all",
                          ),
                          "indices" => array(
                              [
                                  "names" => array(
                                      "index1",
                                  ),
                                  "privileges" => array(
                                      "read",
                                  ),
                                  "field_security" => [
                                      "grant" => array(
                                          "title",
                                          "body",
                                      ),
                                  ],
                                  "query" => "{\"match\": {\"title\": \"foo\"}}",
                              ],
                          ),
                          "applications" => array(
                              [
                                  "application" => "myapp",
                                  "privileges" => array(
                                      "admin",
                                      "read",
                                  ),
                                  "resources" => array(
                                      "*",
                                  ),
                              ],
                          ),
                          "run_as" => array(
                              "other_user",
                          ),
                          "metadata" => [
                              "version" => 1,
                          ],
                      ],
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"roles":{"my_admin_role":{"cluster":["all"],"indices":[{"names":["index1","index2"],"privileges":["all"],"field_security":{"grant":["title","body"]},"query":"{\"match\":
          {\"title\": \"foo\"}}"}],"applications":[{"application":"myapp","privileges":["admin","read"],"resources":["*"]}],"run_as":["other_user"],"metadata":{"version":1}},"my_user_role":{"cluster":["all"],"indices":[{"names":["index1"],"privileges":["read"],"field_security":{"grant":["title","body"]},"query":"{\"match\":
          {\"title\": \"foo\"}}"}],"applications":[{"application":"myapp","privileges":["admin","read"],"resources":["*"]}],"run_as":["other_user"],"metadata":{"version":1}}}}''
          "$ELASTICSEARCH_URL/_security/role"'
      - lang: Java
        source: |
          client.security().bulkPutRole(b -> b
              .roles(Map.of("my_admin_role", RoleDescriptor.of(r -> r
                      .cluster("all")
                      .indices(i -> i
                          .fieldSecurity(f -> f
                              .grant(List.of("title","body"))
                          )
                          .names(List.of("index1","index2"))
                          .privileges("all")
                          .query(q -> q
                              .match(m -> m
                                  .field("title")
                                  .query(FieldValue.of("foo"))
                              )
                          )
                      )
                      .applications(a -> a
                          .application("myapp")
                          .privileges(List.of("admin","read"))
                          .resources("*")
                      )
                      .metadata("version", JsonData.fromJson("1"))
                      .runAs("other_user")
                  ),"my_user_role", RoleDescriptor.of(ro -> ro
                      .cluster("all")
                      .indices(i -> i
                          .fieldSecurity(f -> f
                              .grant(List.of("title","body"))
                          )
                          .names("index1")
                          .privileges("read")
                          .query(q -> q
                              .match(m -> m
                                  .field("title")
                                  .query(FieldValue.of("foo"))
                              )
                          )
                      )
                      .applications(a -> a
                          .application("myapp")
                          .privileges(List.of("admin","read"))
                          .resources("*")
                      )
                      .metadata("version", JsonData.fromJson("1"))
                      .runAs("other_user")
                  )))
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    delete:
      tags:
      - security
      summary: Bulk delete roles
      description: |
        The role management APIs are generally the preferred way to manage roles, rather than using file-based role management.
        The bulk delete roles API cannot delete roles that are defined in roles files.

        ## Required authorization

        * Cluster privileges: `manage_security`
      operationId: security-bulk-delete-role
      parameters:
      - in: query
        name: refresh
        description: If `true` (the default) then refresh the affected shards to make
          this operation visible to search, if `wait_for` then wait for a refresh
          to make this operation visible to search, if `false` then do nothing with
          refreshes.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Refresh"
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                names:
                  description: An array of role names to delete
                  type: array
                  items:
                    type: string
              required:
              - names
            examples:
              SecurityBulkDeleteRoleRequestExample1:
                summary: Bulk delete example 1
                description: 'Run DELETE /_security/role` to delete `my_admin_role`
                  and `my_user_role` roles.

                  '
                value: |-
                  {
                    "names": ["my_admin_role", "my_user_role"]
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  deleted:
                    description: Array of deleted roles
                    type: array
                    items:
                      type: string
                  not_found:
                    description: Array of roles that could not be found
                    type: array
                    items:
                      type: string
                  errors:
                    description: Present if any deletes resulted in errors
                    allOf:
                    - "$ref": "#/components/schemas/security._types.BulkError"
              examples:
                SecurityBulkDeleteRoleResponseExample1:
                  summary: A successful response
                  description: A successful response from `DELETE /_security/role`.
                  value: |-
                    {
                      "deleted": [
                          "my_admin_role",
                          "my_user_role"
                      ]
                    }
                SecurityBulkDeleteRoleResponseExample2:
                  summary: A response with not_found roles
                  description: 'A partially successful response from `DELETE /_security/role`.
                    If a role cannot be found, it appears in the `not_found` list
                    in the response.

                    '
                  value: |-
                    {
                      "deleted": [
                          "my_admin_role"
                      ],
                      "not_found": [
                          "not_an_existing_role"
                      ]
                    }
                SecurityBulkDeleteRoleResponseExample3:
                  summary: A response with errors
                  description: 'A partially successful response from `DELETE /_security/role`.
                    If part of a request fails or is invalid, the response includes
                    `errors`.

                    '
                  value: |-
                    {
                      "deleted": [
                          "my_admin_role"
                      ],
                      "errors": {
                          "count": 1,
                          "details": {
                              "superuser": {
                                  "type": "illegal_argument_exception",
                                  "reason": "role [superuser] is reserved and cannot be deleted"
                              }
                          }
                      }
                    }
      x-state: Generally available; Added in 8.15.0
      x-codeSamples:
      - lang: Console
        source: |-
          DELETE /_security/role
          {
            "names": ["my_admin_role", "my_user_role"]
          }
      - lang: Python
        source: |-
          resp = client.security.bulk_delete_role(
              names=[
                  "my_admin_role",
                  "my_user_role"
              ],
          )
      - lang: JavaScript
        source: |-
          const response = await client.security.bulkDeleteRole({
            names: ["my_admin_role", "my_user_role"],
          });
      - lang: Ruby
        source: |-
          response = client.security.bulk_delete_role(
            body: {
              "names": [
                "my_admin_role",
                "my_user_role"
              ]
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->security()->bulkDeleteRole([
              "body" => [
                  "names" => array(
                      "my_admin_role",
                      "my_user_role",
                  ),
              ],
          ]);
      - lang: curl
        source: 'curl -X DELETE -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"names":["my_admin_role","my_user_role"]}'' "$ELASTICSEARCH_URL/_security/role"'
      - lang: Java
        source: |
          client.security().bulkDeleteRole(b -> b
              .names(List.of("my_admin_role","my_user_role"))
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_security/api_key/_bulk_update":
    post:
      tags:
      - security
      summary: Bulk update API keys
      description: |
        Update the attributes for multiple API keys.

        IMPORTANT: It is not possible to use an API key as the authentication credential for this API. To update API keys, the owner user's credentials are required.

        This API is similar to the update API key API but enables you to apply the same update to multiple API keys in one API call. This operation can greatly improve performance over making individual updates.

        It is not possible to update expired or invalidated API keys.

        This API supports updates to API key access scope, metadata and expiration.
        The access scope of each API key is derived from the `role_descriptors` you specify in the request and a snapshot of the owner user's permissions at the time of the request.
        The snapshot of the owner's permissions is updated automatically on every call.

        IMPORTANT: If you don't specify `role_descriptors` in the request, a call to this API might still change an API key's access scope. This change can occur if the owner user's permissions have changed since the API key was created or last modified.

        A successful request returns a JSON structure that contains the IDs of all updated API keys, the IDs of API keys that already had the requested changes and did not require an update, and error details for any failed update.

        ## Required authorization

        * Cluster privileges: `manage_own_api_key`
      operationId: security-bulk-update-api-keys
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                expiration:
                  description: |-
                    Expiration time for the API keys.
                    By default, API keys never expire.
                    This property can be omitted to leave the value unchanged.
                  allOf:
                  - "$ref": "#/components/schemas/_types.Duration"
                ids:
                  description: The API key identifiers.
                  oneOf:
                  - type: string
                  - type: array
                    items:
                      type: string
                metadata:
                  description: |-
                    Arbitrary nested metadata to associate with the API keys.
                    Within the `metadata` object, top-level keys beginning with an underscore (`_`) are reserved for system usage.
                    Any information specified with this parameter fully replaces metadata previously associated with the API key.
                  allOf:
                  - "$ref": "#/components/schemas/_types.Metadata"
                role_descriptors:
                  description: |-
                    The role descriptors to assign to the API keys.
                    An API key's effective permissions are an intersection of its assigned privileges and the point-in-time snapshot of permissions of the owner user.
                    You can assign new privileges by specifying them in this parameter.
                    To remove assigned privileges, supply the `role_descriptors` parameter as an empty object `{}`.
                    If an API key has no assigned privileges, it inherits the owner user's full permissions.
                    The snapshot of the owner's permissions is always updated, whether you supply the `role_descriptors` parameter.
                    The structure of a role descriptor is the same as the request for the create API keys API.
                  type: object
                  additionalProperties:
                    "$ref": "#/components/schemas/security._types.RoleDescriptor"
              required:
              - ids
            examples:
              SecurityBulkUpdateApiKeysRequestExample1:
                description: Assign new role descriptors and metadata and update the
                  expiration time for two API keys.
                value: |-
                  {
                    "ids": [
                      "VuaCfGcBCdbkQm-e5aOx",
                      "H3_AhoIBA9hmeQJdg7ij"
                    ],
                    "role_descriptors": {
                      "role-a": {
                        "indices": [
                          {
                            "names": [
                              "*"
                            ],
                            "privileges": [
                              "write"
                            ]
                          }
                        ]
                      }
                    },
                    "metadata": {
                      "environment": {
                        "level": 2,
                        "trusted": true,
                        "tags": [
                          "production"
                        ]
                      }
                    },
                    "expiration": "30d"
                  }
              SecurityBulkUpdateApiKeysRequestExample2:
                description: Remove the previously assigned permissions for two API
                  keys, making them inherit the owner user's full permissions.
                value: |-
                  {
                    "ids": [
                      "VuaCfGcBCdbkQm-e5aOx",
                      "H3_AhoIBA9hmeQJdg7ij"
                    ],
                    "role_descriptors": {}
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  errors:
                    allOf:
                    - "$ref": "#/components/schemas/security._types.BulkError"
                  noops:
                    type: array
                    items:
                      type: string
                  updated:
                    type: array
                    items:
                      type: string
                required:
                - noops
                - updated
              examples:
                SecurityBulkUpdateApiKeysResponseExample1:
                  description: A successful response from updating two API keys.
                  value: |-
                    {
                      "updated": [
                        "VuaCfGcBCdbkQm-e5aOx",
                        "H3_AhoIBA9hmeQJdg7ij"
                      ],
                      "noops": []
                    }
      x-state: Generally available; Added in 8.5.0
      x-codeSamples:
      - lang: Console
        source: |-
          POST /_security/api_key/_bulk_update
          {
            "ids": [
              "VuaCfGcBCdbkQm-e5aOx",
              "H3_AhoIBA9hmeQJdg7ij"
            ],
            "role_descriptors": {
              "role-a": {
                "indices": [
                  {
                    "names": [
                      "*"
                    ],
                    "privileges": [
                      "write"
                    ]
                  }
                ]
              }
            },
            "metadata": {
              "environment": {
                "level": 2,
                "trusted": true,
                "tags": [
                  "production"
                ]
              }
            },
            "expiration": "30d"
          }
      - lang: Python
        source: |-
          resp = client.security.bulk_update_api_keys(
              ids=[
                  "VuaCfGcBCdbkQm-e5aOx",
                  "H3_AhoIBA9hmeQJdg7ij"
              ],
              role_descriptors={
                  "role-a": {
                      "indices": [
                          {
                              "names": [
                                  "*"
                              ],
                              "privileges": [
                                  "write"
                              ]
                          }
                      ]
                  }
              },
              metadata={
                  "environment": {
                      "level": 2,
                      "trusted": True,
                      "tags": [
                          "production"
                      ]
                  }
              },
              expiration="30d",
          )
      - lang: JavaScript
        source: |-
          const response = await client.security.bulkUpdateApiKeys({
            ids: ["VuaCfGcBCdbkQm-e5aOx", "H3_AhoIBA9hmeQJdg7ij"],
            role_descriptors: {
              "role-a": {
                indices: [
                  {
                    names: ["*"],
                    privileges: ["write"],
                  },
                ],
              },
            },
            metadata: {
              environment: {
                level: 2,
                trusted: true,
                tags: ["production"],
              },
            },
            expiration: "30d",
          });
      - lang: Ruby
        source: |-
          response = client.security.bulk_update_api_keys(
            body: {
              "ids": [
                "VuaCfGcBCdbkQm-e5aOx",
                "H3_AhoIBA9hmeQJdg7ij"
              ],
              "role_descriptors": {
                "role-a": {
                  "indices": [
                    {
                      "names": [
                        "*"
                      ],
                      "privileges": [
                        "write"
                      ]
                    }
                  ]
                }
              },
              "metadata": {
                "environment": {
                  "level": 2,
                  "trusted": true,
                  "tags": [
                    "production"
                  ]
                }
              },
              "expiration": "30d"
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->security()->bulkUpdateApiKeys([
              "body" => [
                  "ids" => array(
                      "VuaCfGcBCdbkQm-e5aOx",
                      "H3_AhoIBA9hmeQJdg7ij",
                  ),
                  "role_descriptors" => [
                      "role-a" => [
                          "indices" => array(
                              [
                                  "names" => array(
                                      "*",
                                  ),
                                  "privileges" => array(
                                      "write",
                                  ),
                              ],
                          ),
                      ],
                  ],
                  "metadata" => [
                      "environment" => [
                          "level" => 2,
                          "trusted" => true,
                          "tags" => array(
                              "production",
                          ),
                      ],
                  ],
                  "expiration" => "30d",
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"ids":["VuaCfGcBCdbkQm-e5aOx","H3_AhoIBA9hmeQJdg7ij"],"role_descriptors":{"role-a":{"indices":[{"names":["*"],"privileges":["write"]}]}},"metadata":{"environment":{"level":2,"trusted":true,"tags":["production"]}},"expiration":"30d"}''
          "$ELASTICSEARCH_URL/_security/api_key/_bulk_update"'
      - lang: Java
        source: |
          client.security().bulkUpdateApiKeys(b -> b
              .expiration(e -> e
                  .time("30d")
              )
              .ids(List.of("VuaCfGcBCdbkQm-e5aOx","H3_AhoIBA9hmeQJdg7ij"))
              .metadata("environment", JsonData.fromJson("{\"level\":2,\"trusted\":true,\"tags\":[\"production\"]}"))
              .roleDescriptors("role-a", r -> r
                  .indices(i -> i
                      .names("*")
                      .privileges("write")
                  )
              )
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_security/user/{username}/_password":
    post:
      tags:
      - security
      summary: 'Change passwords

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb put\">PUT</span>\n                      <span class=\"operation-path\">/_security/user/_password</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_security/user/_password</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb put\">PUT</span>\n                      <span class=\"operation-path\">/_security/user/{username}/_password</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_security/user/{username}/_password</span>\n
        \                     </div>\n                    \n\nChange the passwords
        of users in the native realm and built-in users."
      operationId: security-change-password
      parameters:
      - "$ref": "#/components/parameters/security.change_password-username"
      - "$ref": "#/components/parameters/security.change_password-refresh"
      requestBody:
        "$ref": "#/components/requestBodies/security.change_password"
      responses:
        '200':
          "$ref": "#/components/responses/security.change_password-200"
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: |-
          POST /_security/user/jacknich/_password
          {
            "password" : "new-test-password"
          }
      - lang: Python
        source: |-
          resp = client.security.change_password(
              username="jacknich",
              password="new-test-password",
          )
      - lang: JavaScript
        source: |-
          const response = await client.security.changePassword({
            username: "jacknich",
            password: "new-test-password",
          });
      - lang: Ruby
        source: |-
          response = client.security.change_password(
            username: "jacknich",
            body: {
              "password": "new-test-password"
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->security()->changePassword([
              "username" => "jacknich",
              "body" => [
                  "password" => "new-test-password",
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"password":"new-test-password"}'' "$ELASTICSEARCH_URL/_security/user/jacknich/_password"'
      - lang: Java
        source: |
          client.security().changePassword(c -> c
              .password("new-test-password")
              .username("jacknich")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_security/api_key/{ids}/_clear_cache":
    post:
      tags:
      - security
      summary: Clear the API key cache
      description: |
        Evict a subset of all entries from the API key cache.
        The cache is also automatically cleared on state changes of the security index.

        ## Required authorization

        * Cluster privileges: `manage_security`
      operationId: security-clear-api-key-cache
      parameters:
      - in: path
        name: ids
        description: |-
          Comma-separated list of API key IDs to evict from the API key cache.
          To evict all API keys, use `*`.
          Does not support other wildcard patterns.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Ids"
        style: simple
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  _nodes:
                    allOf:
                    - "$ref": "#/components/schemas/_types.NodeStatistics"
                  cluster_name:
                    allOf:
                    - "$ref": "#/components/schemas/_types.Name"
                  nodes:
                    type: object
                    additionalProperties:
                      "$ref": "#/components/schemas/security._types.ClusterNode"
                required:
                - _nodes
                - cluster_name
                - nodes
      x-state: Generally available; Added in 7.10.0
      x-codeSamples:
      - lang: Console
        source: 'POST /_security/api_key/yVGMr3QByxdh1MSaicYx/_clear_cache

          '
      - lang: Python
        source: |-
          resp = client.security.clear_api_key_cache(
              ids="yVGMr3QByxdh1MSaicYx",
          )
      - lang: JavaScript
        source: |-
          const response = await client.security.clearApiKeyCache({
            ids: "yVGMr3QByxdh1MSaicYx",
          });
      - lang: Ruby
        source: |-
          response = client.security.clear_api_key_cache(
            ids: "yVGMr3QByxdh1MSaicYx"
          )
      - lang: PHP
        source: |-
          $resp = $client->security()->clearApiKeyCache([
              "ids" => "yVGMr3QByxdh1MSaicYx",
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_security/api_key/yVGMr3QByxdh1MSaicYx/_clear_cache"'
      - lang: Java
        source: |
          client.security().clearApiKeyCache(c -> c
              .ids("yVGMr3QByxdh1MSaicYx")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_security/privilege/{application}/_clear_cache":
    post:
      tags:
      - security
      summary: Clear the privileges cache
      description: |
        Evict privileges from the native application privilege cache.
        The cache is also automatically cleared for applications that have their privileges updated.

        ## Required authorization

        * Cluster privileges: `manage_security`
      operationId: security-clear-cached-privileges
      parameters:
      - in: path
        name: application
        description: |-
          A comma-separated list of applications.
          To clear all applications, use an asterism (`*`).
          It does not support other wildcard patterns.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Names"
        style: simple
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  _nodes:
                    allOf:
                    - "$ref": "#/components/schemas/_types.NodeStatistics"
                  cluster_name:
                    allOf:
                    - "$ref": "#/components/schemas/_types.Name"
                  nodes:
                    type: object
                    additionalProperties:
                      "$ref": "#/components/schemas/security._types.ClusterNode"
                required:
                - _nodes
                - cluster_name
                - nodes
      x-state: Generally available; Added in 7.9.0
      x-codeSamples:
      - lang: Console
        source: 'POST /_security/privilege/myapp/_clear_cache

          '
      - lang: Python
        source: |-
          resp = client.security.clear_cached_privileges(
              application="myapp",
          )
      - lang: JavaScript
        source: |-
          const response = await client.security.clearCachedPrivileges({
            application: "myapp",
          });
      - lang: Ruby
        source: |-
          response = client.security.clear_cached_privileges(
            application: "myapp"
          )
      - lang: PHP
        source: |-
          $resp = $client->security()->clearCachedPrivileges([
              "application" => "myapp",
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_security/privilege/myapp/_clear_cache"'
      - lang: Java
        source: |
          client.security().clearCachedPrivileges(c -> c
              .application("myapp")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_security/realm/{realms}/_clear_cache":
    post:
      tags:
      - security
      summary: Clear the user cache
      description: |-
        Evict users from the user cache.
        You can completely clear the cache or evict specific users.

        User credentials are cached in memory on each node to avoid connecting to a remote authentication service or hitting the disk for every incoming request.
        There are realm settings that you can use to configure the user cache.
        For more information, refer to the documentation about controlling the user cache.
      externalDocs:
        url: https://www.elastic.co/docs/deploy-manage/users-roles/cluster-or-deployment-auth/controlling-user-cache
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/security-api-clear-cache.html
      operationId: security-clear-cached-realms
      parameters:
      - in: path
        name: realms
        description: |-
          A comma-separated list of realms.
          To clear all realms, use an asterisk (`*`).
          It does not support other wildcard patterns.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Names"
        style: simple
      - in: query
        name: usernames
        description: |-
          A comma-separated list of the users to clear from the cache.
          If you do not specify this parameter, the API evicts all users from the user cache.
        deprecated: false
        schema:
          type: array
          items:
            type: string
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  _nodes:
                    allOf:
                    - "$ref": "#/components/schemas/_types.NodeStatistics"
                  cluster_name:
                    allOf:
                    - "$ref": "#/components/schemas/_types.Name"
                  nodes:
                    type: object
                    additionalProperties:
                      "$ref": "#/components/schemas/security._types.ClusterNode"
                required:
                - _nodes
                - cluster_name
                - nodes
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'POST /_security/realm/default_file/_clear_cache

          '
      - lang: Python
        source: |-
          resp = client.security.clear_cached_realms(
              realms="default_file",
          )
      - lang: JavaScript
        source: |-
          const response = await client.security.clearCachedRealms({
            realms: "default_file",
          });
      - lang: Ruby
        source: |-
          response = client.security.clear_cached_realms(
            realms: "default_file"
          )
      - lang: PHP
        source: |-
          $resp = $client->security()->clearCachedRealms([
              "realms" => "default_file",
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_security/realm/default_file/_clear_cache"'
      - lang: Java
        source: |
          client.security().clearCachedRealms(c -> c
              .realms("default_file")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_security/role/{name}/_clear_cache":
    post:
      tags:
      - security
      summary: Clear the roles cache
      description: |
        Evict roles from the native role cache.

        ## Required authorization

        * Cluster privileges: `manage_security`
      operationId: security-clear-cached-roles
      parameters:
      - in: path
        name: name
        description: |-
          A comma-separated list of roles to evict from the role cache.
          To evict all roles, use an asterisk (`*`).
          It does not support other wildcard patterns.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Names"
        style: simple
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  _nodes:
                    allOf:
                    - "$ref": "#/components/schemas/_types.NodeStatistics"
                  cluster_name:
                    allOf:
                    - "$ref": "#/components/schemas/_types.Name"
                  nodes:
                    type: object
                    additionalProperties:
                      "$ref": "#/components/schemas/security._types.ClusterNode"
                required:
                - _nodes
                - cluster_name
                - nodes
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'POST /_security/role/my_admin_role/_clear_cache

          '
      - lang: Python
        source: |-
          resp = client.security.clear_cached_roles(
              name="my_admin_role",
          )
      - lang: JavaScript
        source: |-
          const response = await client.security.clearCachedRoles({
            name: "my_admin_role",
          });
      - lang: Ruby
        source: |-
          response = client.security.clear_cached_roles(
            name: "my_admin_role"
          )
      - lang: PHP
        source: |-
          $resp = $client->security()->clearCachedRoles([
              "name" => "my_admin_role",
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_security/role/my_admin_role/_clear_cache"'
      - lang: Java
        source: |
          client.security().clearCachedRoles(c -> c
              .name("my_admin_role")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_security/service/{namespace}/{service}/credential/token/{name}/_clear_cache":
    post:
      tags:
      - security
      summary: Clear service account token caches
      description: |
        Evict a subset of all entries from the service account token caches.
        Two separate caches exist for service account tokens: one cache for tokens backed by the `service_tokens` file, and another for tokens backed by the `.security` index.
        This API clears matching entries from both caches.

        The cache for service account tokens backed by the `.security` index is cleared automatically on state changes of the security index.
        The cache for tokens backed by the `service_tokens` file is cleared automatically on file changes.

        ## Required authorization

        * Cluster privileges: `manage_security`
      externalDocs:
        url: https://www.elastic.co/docs/deploy-manage/users-roles/cluster-or-deployment-auth/service-accounts
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/security-api-clear-service-token-caches.html
      operationId: security-clear-cached-service-tokens
      parameters:
      - in: path
        name: namespace
        description: The namespace, which is a top-level grouping of service accounts.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Namespace"
        style: simple
      - in: path
        name: service
        description: The name of the service, which must be unique within its namespace.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Service"
        style: simple
      - in: path
        name: name
        description: |-
          A comma-separated list of token names to evict from the service account token caches.
          Use a wildcard (`*`) to evict all tokens that belong to a service account.
          It does not support other wildcard patterns.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Names"
        style: simple
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  _nodes:
                    allOf:
                    - "$ref": "#/components/schemas/_types.NodeStatistics"
                  cluster_name:
                    allOf:
                    - "$ref": "#/components/schemas/_types.Name"
                  nodes:
                    type: object
                    additionalProperties:
                      "$ref": "#/components/schemas/security._types.ClusterNode"
                required:
                - _nodes
                - cluster_name
                - nodes
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'POST /_security/service/elastic/fleet-server/credential/token/token1/_clear_cache

          '
      - lang: Python
        source: |-
          resp = client.security.clear_cached_service_tokens(
              namespace="elastic",
              service="fleet-server",
              name="token1",
          )
      - lang: JavaScript
        source: |-
          const response = await client.security.clearCachedServiceTokens({
            namespace: "elastic",
            service: "fleet-server",
            name: "token1",
          });
      - lang: Ruby
        source: |-
          response = client.security.clear_cached_service_tokens(
            namespace: "elastic",
            service: "fleet-server",
            name: "token1"
          )
      - lang: PHP
        source: |-
          $resp = $client->security()->clearCachedServiceTokens([
              "namespace" => "elastic",
              "service" => "fleet-server",
              "name" => "token1",
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_security/service/elastic/fleet-server/credential/token/token1/_clear_cache"'
      - lang: Java
        source: |
          client.security().clearCachedServiceTokens(c -> c
              .name("token1")
              .namespace("elastic")
              .service("fleet-server")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_security/api_key":
    get:
      tags:
      - security
      summary: Get API key information
      description: |
        Retrieves information for one or more API keys.
        NOTE: If you have only the `manage_own_api_key` privilege, this API returns only the API keys that you own.
        If you have `read_security`, `manage_api_key` or greater privileges (including `manage_security`), this API returns all API keys regardless of ownership.

        ## Required authorization

        * Cluster privileges: `manage_own_api_key`,`read_security`
      operationId: security-get-api-key
      parameters:
      - in: query
        name: id
        description: |-
          An API key id.
          This parameter cannot be used with any of `name`, `realm_name` or `username`.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: form
      - in: query
        name: name
        description: |-
          An API key name.
          This parameter cannot be used with any of `id`, `realm_name` or `username`.
          It supports prefix search with wildcard.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Name"
        style: form
      - in: query
        name: owner
        description: |-
          A boolean flag that can be used to query API keys owned by the currently authenticated user.
          The `realm_name` or `username` parameters cannot be specified when this parameter is set to `true` as they are assumed to be the currently authenticated ones.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: realm_name
        description: |-
          The name of an authentication realm.
          This parameter cannot be used with either `id` or `name` or when `owner` flag is set to `true`.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Name"
        style: form
      - in: query
        name: username
        description: |-
          The username of a user.
          This parameter cannot be used with either `id` or `name` or when `owner` flag is set to `true`.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Username"
        style: form
      - in: query
        name: with_limited_by
        description: |-
          Return the snapshot of the owner user's role descriptors
          associated with the API key. An API key's actual
          permission is the intersection of its assigned role
          descriptors and the owner user's role descriptors.
        deprecated: false
        schema:
          type: boolean
        x-state: Generally available; Added in 8.5.0
        style: form
      - in: query
        name: active_only
        description: A boolean flag that can be used to query API keys that are currently
          active. An API key is considered active if it is neither invalidated, nor
          expired at query time. You can specify this together with other parameters
          such as `owner` or `name`. If `active_only` is false, the response will
          include both active and inactive (expired or invalidated) keys.
        deprecated: false
        schema:
          type: boolean
        x-state: Generally available; Added in 8.10.0
        style: form
      - in: query
        name: with_profile_uid
        description: Determines whether to also retrieve the profile uid, for the
          API key owner principal, if it exists.
        deprecated: false
        schema:
          type: boolean
        x-state: Generally available; Added in 8.14.0
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  api_keys:
                    type: array
                    items:
                      "$ref": "#/components/schemas/security._types.ApiKey"
                required:
                - api_keys
              examples:
                SecurityGetApiKeyResponseExample1:
                  summary: Get a key by ID
                  description: A successful response from `GET /_security/api_key?id=VuaCfGcBCdbkQm-e5aOx&with_limited_by=true`.
                  value: "{\n  \"api_keys\": [ \n    {\n      \"id\": \"VuaCfGcBCdbkQm-e5aOx\",
                    \n      \"name\": \"my-api-key\", \n      \"creation\": 1548550550158,
                    \n      \"expiration\": 1548551550158, \n      \"invalidated\":
                    false, \n      \"username\": \"myuser\", \n      \"realm\": \"native1\",
                    \n      \"realm_type\": \"native\",\n      \"metadata\": { \n
                    \       \"application\": \"myapp\"\n      },\n      \"role_descriptors\":
                    { }, \n      \"limited_by\": [  \n        {\n          \"role-power-user\":
                    {\n            \"cluster\": [\n              \"monitor\"\n            ],\n
                    \           \"indices\": [\n              {\n                \"names\":
                    [\n                  \"*\"\n                ],\n                \"privileges\":
                    [\n                  \"read\"\n                ],\n                \"allow_restricted_indices\":
                    false\n              }\n            ],\n            \"applications\":
                    [ ],\n            \"run_as\": [ ],\n            \"metadata\":
                    { },\n            \"transient_metadata\": {\n              \"enabled\":
                    true\n            }\n          }\n        }\n      ]\n    }\n
                    \ ]\n}"
                SecurityGetApiKeyResponseExample2:
                  summary: Get all keys for a user
                  description: 'A successful response from `GET /_security/api_key?username=myuser&realm_name=native1`.
                    The response contains all API keys for the user `myuser` in the
                    `native1` realm.

                    '
                  value: |-
                    {
                      "api_keys": [
                        {
                          "id": "0GF5GXsBCXxz2eDxWwFN",
                          "name": "hadoop_myuser_key",
                          "creation": 1548550550158,
                          "expiration": 1548551550158,
                          "invalidated": false,
                          "username": "myuser",
                          "realm": "native1",
                          "realm_type": "native",
                          "metadata": {
                            "application": "myapp"
                          },
                          "role_descriptors": {
                            "role-a": {
                              "cluster": [
                                "monitor"
                              ],
                              "indices": [
                                {
                                  "names": [
                                    "index-a"
                                  ],
                                  "privileges": [
                                    "read"
                                  ],
                                  "allow_restricted_indices": false
                                }
                              ],
                              "applications": [ ],
                              "run_as": [ ],
                              "metadata": { },
                              "transient_metadata": {
                                "enabled": true
                              }
                            }
                          }
                        },
                        {
                          "id": "6wHJmcQpReKBa42EHV5SBw",
                          "name": "api-key-name-2",
                          "creation": 1548550550158,
                          "invalidated": false,
                          "username": "user-y",
                          "realm": "realm-2",
                          "metadata": {},
                          "role_descriptors": { }
                        }
                      ]
                    }
      x-state: Generally available; Added in 6.7.0
      x-codeSamples:
      - lang: Console
        source: 'GET /_security/api_key?username=myuser&realm_name=native1

          '
      - lang: Python
        source: |-
          resp = client.security.get_api_key(
              username="myuser",
              realm_name="native1",
          )
      - lang: JavaScript
        source: |-
          const response = await client.security.getApiKey({
            username: "myuser",
            realm_name: "native1",
          });
      - lang: Ruby
        source: |-
          response = client.security.get_api_key(
            username: "myuser",
            realm_name: "native1"
          )
      - lang: PHP
        source: |-
          $resp = $client->security()->getApiKey([
              "username" => "myuser",
              "realm_name" => "native1",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_security/api_key?username=myuser&realm_name=native1"'
      - lang: Java
        source: |
          client.security().getApiKey(g -> g
              .realmName("native1")
              .username("myuser")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    post:
      tags:
      - security
      summary: 'Create an API key

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb put\">PUT</span>\n                      <span class=\"operation-path\">/_security/api_key</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_security/api_key</span>\n
        \                     </div>\n                    \n\nCreate an API key for
        access without requiring basic authentication.\n\nIMPORTANT: If the credential
        that is used to authenticate this request is an API key, the derived API key
        cannot have any privileges.\nIf you specify privileges, the API returns an
        error.\n\nA successful request returns a JSON structure that contains the
        API key, its unique id, and its name.\nIf applicable, it also returns expiration
        information for the API key in milliseconds.\n\nNOTE: By default, API keys
        never expire. You can specify expiration information when you create the API
        keys.\n\nThe API keys are created by the Elasticsearch API key service, which
        is automatically enabled.\nTo configure or turn off the API key service, refer
        to API key service setting documentation.\n\n## Required authorization\n\n*
        Cluster privileges: `manage_own_api_key`\n"
      externalDocs:
        url: https://www.elastic.co/docs/reference/elasticsearch/configuration-reference/security-settings#api-key-service-settings
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/security-api-create-api-key.html
      operationId: security-create-api-key
      parameters:
      - "$ref": "#/components/parameters/security.create_api_key-refresh"
      requestBody:
        "$ref": "#/components/requestBodies/security.create_api_key"
      responses:
        '200':
          "$ref": "#/components/responses/security.create_api_key-200"
      x-state: Generally available; Added in 6.7.0
      x-codeSamples:
      - lang: Console
        source: "POST /_security/api_key\n{\n  \"name\": \"my-api-key\",\n  \"expiration\":
          \"1d\",   \n  \"role_descriptors\": { \n    \"role-a\": {\n      \"cluster\":
          [\"all\"],\n      \"indices\": [\n        {\n          \"names\": [\"index-a*\"],\n
          \         \"privileges\": [\"read\"]\n        }\n      ]\n    },\n    \"role-b\":
          {\n      \"cluster\": [\"all\"],\n      \"indices\": [\n        {\n          \"names\":
          [\"index-b*\"],\n          \"privileges\": [\"all\"]\n        }\n      ]\n
          \   }\n  },\n  \"metadata\": {\n    \"application\": \"my-application\",\n
          \   \"environment\": {\n      \"level\": 1,\n      \"trusted\": true,\n
          \     \"tags\": [\"dev\", \"staging\"]\n    }\n  }\n}"
      - lang: Python
        source: |-
          resp = client.security.create_api_key(
              name="my-api-key",
              expiration="1d",
              role_descriptors={
                  "role-a": {
                      "cluster": [
                          "all"
                      ],
                      "indices": [
                          {
                              "names": [
                                  "index-a*"
                              ],
                              "privileges": [
                                  "read"
                              ]
                          }
                      ]
                  },
                  "role-b": {
                      "cluster": [
                          "all"
                      ],
                      "indices": [
                          {
                              "names": [
                                  "index-b*"
                              ],
                              "privileges": [
                                  "all"
                              ]
                          }
                      ]
                  }
              },
              metadata={
                  "application": "my-application",
                  "environment": {
                      "level": 1,
                      "trusted": True,
                      "tags": [
                          "dev",
                          "staging"
                      ]
                  }
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.security.createApiKey({
            name: "my-api-key",
            expiration: "1d",
            role_descriptors: {
              "role-a": {
                cluster: ["all"],
                indices: [
                  {
                    names: ["index-a*"],
                    privileges: ["read"],
                  },
                ],
              },
              "role-b": {
                cluster: ["all"],
                indices: [
                  {
                    names: ["index-b*"],
                    privileges: ["all"],
                  },
                ],
              },
            },
            metadata: {
              application: "my-application",
              environment: {
                level: 1,
                trusted: true,
                tags: ["dev", "staging"],
              },
            },
          });
      - lang: Ruby
        source: |-
          response = client.security.create_api_key(
            body: {
              "name": "my-api-key",
              "expiration": "1d",
              "role_descriptors": {
                "role-a": {
                  "cluster": [
                    "all"
                  ],
                  "indices": [
                    {
                      "names": [
                        "index-a*"
                      ],
                      "privileges": [
                        "read"
                      ]
                    }
                  ]
                },
                "role-b": {
                  "cluster": [
                    "all"
                  ],
                  "indices": [
                    {
                      "names": [
                        "index-b*"
                      ],
                      "privileges": [
                        "all"
                      ]
                    }
                  ]
                }
              },
              "metadata": {
                "application": "my-application",
                "environment": {
                  "level": 1,
                  "trusted": true,
                  "tags": [
                    "dev",
                    "staging"
                  ]
                }
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->security()->createApiKey([
              "body" => [
                  "name" => "my-api-key",
                  "expiration" => "1d",
                  "role_descriptors" => [
                      "role-a" => [
                          "cluster" => array(
                              "all",
                          ),
                          "indices" => array(
                              [
                                  "names" => array(
                                      "index-a*",
                                  ),
                                  "privileges" => array(
                                      "read",
                                  ),
                              ],
                          ),
                      ],
                      "role-b" => [
                          "cluster" => array(
                              "all",
                          ),
                          "indices" => array(
                              [
                                  "names" => array(
                                      "index-b*",
                                  ),
                                  "privileges" => array(
                                      "all",
                                  ),
                              ],
                          ),
                      ],
                  ],
                  "metadata" => [
                      "application" => "my-application",
                      "environment" => [
                          "level" => 1,
                          "trusted" => true,
                          "tags" => array(
                              "dev",
                              "staging",
                          ),
                      ],
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"name":"my-api-key","expiration":"1d","role_descriptors":{"role-a":{"cluster":["all"],"indices":[{"names":["index-a*"],"privileges":["read"]}]},"role-b":{"cluster":["all"],"indices":[{"names":["index-b*"],"privileges":["all"]}]}},"metadata":{"application":"my-application","environment":{"level":1,"trusted":true,"tags":["dev","staging"]}}}''
          "$ELASTICSEARCH_URL/_security/api_key"'
      - lang: Java
        source: |
          client.security().createApiKey(c -> c
              .expiration(e -> e
                  .time("1d")
              )
              .metadata(Map.of("environment", JsonData.fromJson("{\"level\":1,\"trusted\":true,\"tags\":[\"dev\",\"staging\"]}"),"application", JsonData.fromJson("\"my-application\"")))
              .name("my-api-key")
              .roleDescriptors(Map.of("role-b", RoleDescriptor.of(r -> r
                      .cluster("all")
                      .indices(i -> i
                          .names("index-b*")
                          .privileges("all")
                      )
                  ),"role-a", RoleDescriptor.of(r -> r
                      .cluster("all")
                      .indices(i -> i
                          .names("index-a*")
                          .privileges("read")
                      )
                  )))
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    delete:
      tags:
      - security
      summary: Invalidate API keys
      description: |
        This API invalidates API keys created by the create API key or grant API key APIs.
        Invalidated API keys fail authentication, but they can still be viewed using the get API key information and query API key information APIs, for at least the configured retention period, until they are automatically deleted.

        To use this API, you must have at least the `manage_security`, `manage_api_key`, or `manage_own_api_key` cluster privileges.
        The `manage_security` privilege allows deleting any API key, including both REST and cross cluster API keys.
        The `manage_api_key` privilege allows deleting any REST API key, but not cross cluster API keys.
        The `manage_own_api_key` only allows deleting REST API keys that are owned by the user.
        In addition, with the `manage_own_api_key` privilege, an invalidation request must be issued in one of the three formats:

        - Set the parameter `owner=true`.
        - Or, set both `username` and `realm_name` to match the user's identity.
        - Or, if the request is issued by an API key, that is to say an API key invalidates itself, specify its ID in the `ids` field.

        ## Required authorization

        * Cluster privileges: `manage_api_key`,`manage_own_api_key`
      operationId: security-invalidate-api-key
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  allOf:
                  - "$ref": "#/components/schemas/_types.Id"
                ids:
                  description: |-
                    A list of API key ids.
                    This parameter cannot be used with any of `name`, `realm_name`, or `username`.
                  type: array
                  items:
                    "$ref": "#/components/schemas/_types.Id"
                name:
                  description: |-
                    An API key name.
                    This parameter cannot be used with any of `ids`, `realm_name` or `username`.
                  allOf:
                  - "$ref": "#/components/schemas/_types.Name"
                owner:
                  description: |-
                    Query API keys owned by the currently authenticated user.
                    The `realm_name` or `username` parameters cannot be specified when this parameter is set to `true` as they are assumed to be the currently authenticated ones.

                    NOTE: At least one of `ids`, `name`, `username`, and `realm_name` must be specified if `owner` is `false`.
                  default: false
                  type: boolean
                realm_name:
                  description: |-
                    The name of an authentication realm.
                    This parameter cannot be used with either `ids` or `name`, or when `owner` flag is set to `true`.
                  type: string
                username:
                  description: |-
                    The username of a user.
                    This parameter cannot be used with either `ids` or `name` or when `owner` flag is set to `true`.
                  allOf:
                  - "$ref": "#/components/schemas/_types.Username"
            examples:
              SecurityInvalidateApiKeyRequestExample1:
                summary: API keys by ID
                description: Run `DELETE /_security/api_key` to invalidate the API
                  keys identified by ID.
                value: |-
                  {
                    "ids" : [ "VuaCfGcBCdbkQm-e5aOx" ]
                  }
              SecurityInvalidateApiKeyRequestExample2:
                summary: API keys by name
                description: Run `DELETE /_security/api_key` to invalidate the API
                  keys identified by name.
                value: |-
                  {
                    "name" : "my-api-key"
                  }
              SecurityInvalidateApiKeyRequestExample3:
                summary: API keys by realm
                description: Run `DELETE /_security/api_key` to invalidate all API
                  keys for the `native1` realm.
                value: |-
                  {
                    "realm_name" : "native1"
                  }
              SecurityInvalidateApiKeyRequestExample4:
                summary: API keys by user
                description: Run `DELETE /_security/api_key` to invalidate all API
                  keys for the user `myuser` in all realms.
                value: |-
                  {
                    "username" : "myuser"
                  }
              SecurityInvalidateApiKeyRequestExample5:
                summary: API keys by ID and owner
                description: Run `DELETE /_security/api_key` to invalidate the API
                  keys identified by ID if they are owned by the currently authenticated
                  user.
                value: |-
                  {
                    "ids" : ["VuaCfGcBCdbkQm-e5aOx"],
                    "owner" : "true"
                  }
              SecurityInvalidateApiKeyRequestExample6:
                summary: API keys by user and realm
                description: Run `DELETE /_security/api_key` to invalidate all API
                  keys for the user `myuser` in the `native1` realm .
                value: |-
                  {
                    "username" : "myuser",
                    "realm_name" : "native1"
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  error_count:
                    description: The number of errors that were encountered when invalidating
                      the API keys.
                    type: number
                  error_details:
                    description: |-
                      Details about the errors.
                      This field is not present in the response when `error_count` is `0`.
                    type: array
                    items:
                      "$ref": "#/components/schemas/_types.ErrorCause"
                  invalidated_api_keys:
                    description: The IDs of the API keys that were invalidated as
                      part of this request.
                    type: array
                    items:
                      type: string
                  previously_invalidated_api_keys:
                    description: The IDs of the API keys that were already invalidated.
                    type: array
                    items:
                      type: string
                required:
                - error_count
                - invalidated_api_keys
                - previously_invalidated_api_keys
              examples:
                SecurityInvalidateApiKeyResponseExample1:
                  description: 'A successful response from `DELETE /_security/api_key`.

                    '
                  value: "{\n  \"invalidated_api_keys\": [ \n    \"api-key-id-1\"\n
                    \ ],\n  \"previously_invalidated_api_keys\": [ \n    \"api-key-id-2\",\n
                    \   \"api-key-id-3\"\n  ],\n  \"error_count\": 2, \n  \"error_details\":
                    [ \n    {\n      \"type\": \"exception\",\n      \"reason\": \"error
                    occurred while invalidating api keys\",\n      \"caused_by\":
                    {\n        \"type\": \"illegal_argument_exception\",\n        \"reason\":
                    \"invalid api key id\"\n      }\n    },\n    {\n      \"type\":
                    \"exception\",\n      \"reason\": \"error occurred while invalidating
                    api keys\",\n      \"caused_by\": {\n        \"type\": \"illegal_argument_exception\",\n
                    \       \"reason\": \"invalid api key id\"\n      }\n    }\n  ]\n}"
      x-state: Generally available; Added in 6.7.0
      x-codeSamples:
      - lang: Console
        source: |-
          DELETE /_security/api_key
          {
            "ids" : [ "VuaCfGcBCdbkQm-e5aOx" ]
          }
      - lang: Python
        source: |-
          resp = client.security.invalidate_api_key(
              ids=[
                  "VuaCfGcBCdbkQm-e5aOx"
              ],
          )
      - lang: JavaScript
        source: |-
          const response = await client.security.invalidateApiKey({
            ids: ["VuaCfGcBCdbkQm-e5aOx"],
          });
      - lang: Ruby
        source: |-
          response = client.security.invalidate_api_key(
            body: {
              "ids": [
                "VuaCfGcBCdbkQm-e5aOx"
              ]
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->security()->invalidateApiKey([
              "body" => [
                  "ids" => array(
                      "VuaCfGcBCdbkQm-e5aOx",
                  ),
              ],
          ]);
      - lang: curl
        source: 'curl -X DELETE -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"ids":["VuaCfGcBCdbkQm-e5aOx"]}'' "$ELASTICSEARCH_URL/_security/api_key"'
      - lang: Java
        source: |
          client.security().invalidateApiKey(i -> i
              .ids("VuaCfGcBCdbkQm-e5aOx")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_security/cross_cluster/api_key":
    post:
      tags:
      - security
      summary: Create a cross-cluster API key
      description: |
        Create an API key of the `cross_cluster` type for the API key based remote cluster access.
        A `cross_cluster` API key cannot be used to authenticate through the REST interface.

        IMPORTANT: To authenticate this request you must use a credential that is not an API key. Even if you use an API key that has the required privilege, the API returns an error.

        Cross-cluster API keys are created by the Elasticsearch API key service, which is automatically enabled.

        NOTE: Unlike REST API keys, a cross-cluster API key does not capture permissions of the authenticated user. The API key’s effective permission is exactly as specified with the `access` property.

        A successful request returns a JSON structure that contains the API key, its unique ID, and its name. If applicable, it also returns expiration information for the API key in milliseconds.

        By default, API keys never expire. You can specify expiration information when you create the API keys.

        Cross-cluster API keys can only be updated with the update cross-cluster API key API.
        Attempting to update them with the update REST API key API or the bulk update REST API keys API will result in an error.

        ## Required authorization

        * Cluster privileges: `manage_security`
      externalDocs:
        url: https://www.elastic.co/docs/deploy-manage/remote-clusters/remote-clusters-api-key
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/security-api-create-cross-cluster-api-key.html
      operationId: security-create-cross-cluster-api-key
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                access:
                  description: |-
                    The access to be granted to this API key.
                    The access is composed of permissions for cross-cluster search and cross-cluster replication.
                    At least one of them must be specified.

                    NOTE: No explicit privileges should be specified for either search or replication access.
                    The creation process automatically converts the access specification to a role descriptor which has relevant privileges assigned accordingly.
                  allOf:
                  - "$ref": "#/components/schemas/security._types.Access"
                expiration:
                  description: |-
                    Expiration time for the API key.
                    By default, API keys never expire.
                  allOf:
                  - "$ref": "#/components/schemas/_types.Duration"
                metadata:
                  description: |-
                    Arbitrary metadata that you want to associate with the API key.
                    It supports nested data structure.
                    Within the metadata object, keys beginning with `_` are reserved for system usage.
                  allOf:
                  - "$ref": "#/components/schemas/_types.Metadata"
                name:
                  description: Specifies the name for this API key.
                  allOf:
                  - "$ref": "#/components/schemas/_types.Name"
                certificate_identity:
                  description: |-
                    The certificate identity to associate with this API key.
                    This field is used to restrict the API key to connections authenticated by a specific TLS certificate.
                    The value should match the certificate's distinguished name (DN) pattern.
                  type: string
              required:
              - access
              - name
            examples:
              CreateCrossClusterApiKeyRequestExample1:
                description: 'Run `POST /_security/cross_cluster/api_key` to create
                  a cross-cluster API key.

                  '
                value: "{\n  \"name\": \"my-cross-cluster-api-key\",\n  \"expiration\":
                  \"1d\",   \n  \"access\": {\n    \"search\": [  \n      {\n        \"names\":
                  [\"logs*\"]\n      }\n    ],\n    \"replication\": [  \n      {\n
                  \       \"names\": [\"archive*\"]\n      }\n    ]\n  },\n  \"metadata\":
                  {\n    \"description\": \"phase one\",\n    \"environment\": {\n
                  \     \"level\": 1,\n      \"trusted\": true,\n      \"tags\": [\"dev\",
                  \"staging\"]\n    }\n  }\n}"
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  api_key:
                    description: Generated API key.
                    type: string
                  expiration:
                    description: Expiration in milliseconds for the API key.
                    allOf:
                    - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
                  id:
                    description: Unique ID for this API key.
                    allOf:
                    - "$ref": "#/components/schemas/_types.Id"
                  name:
                    description: Specifies the name for this API key.
                    allOf:
                    - "$ref": "#/components/schemas/_types.Name"
                  encoded:
                    description: |-
                      API key credentials which is the base64-encoding of
                      the UTF-8 representation of `id` and `api_key` joined
                      by a colon (`:`).
                    type: string
                required:
                - api_key
                - id
                - name
                - encoded
              examples:
                CreateCrossClusterApiKeyResponseExample1:
                  description: 'A successful response from `POST /_security/service/elastic/fleet-server/credential/token`.

                    '
                  value: |-
                    {
                      "created": true,
                      "token": {
                        "name": "Jk5J1HgBuyBK5TpDrdo4",
                        "value": "AAEAAWVsYXN0aWM...vZmxlZXQtc2VydmVyL3Rva2VuMTo3TFdaSDZ"
                      }
                    }
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: "POST /_security/cross_cluster/api_key\n{\n  \"name\": \"my-cross-cluster-api-key\",\n
          \ \"expiration\": \"1d\",   \n  \"access\": {\n    \"search\": [  \n      {\n
          \       \"names\": [\"logs*\"]\n      }\n    ],\n    \"replication\": [
          \ \n      {\n        \"names\": [\"archive*\"]\n      }\n    ]\n  },\n  \"metadata\":
          {\n    \"description\": \"phase one\",\n    \"environment\": {\n      \"level\":
          1,\n      \"trusted\": true,\n      \"tags\": [\"dev\", \"staging\"]\n    }\n
          \ }\n}"
      - lang: Python
        source: |-
          resp = client.security.create_cross_cluster_api_key(
              name="my-cross-cluster-api-key",
              expiration="1d",
              access={
                  "search": [
                      {
                          "names": [
                              "logs*"
                          ]
                      }
                  ],
                  "replication": [
                      {
                          "names": [
                              "archive*"
                          ]
                      }
                  ]
              },
              metadata={
                  "description": "phase one",
                  "environment": {
                      "level": 1,
                      "trusted": True,
                      "tags": [
                          "dev",
                          "staging"
                      ]
                  }
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.security.createCrossClusterApiKey({
            name: "my-cross-cluster-api-key",
            expiration: "1d",
            access: {
              search: [
                {
                  names: ["logs*"],
                },
              ],
              replication: [
                {
                  names: ["archive*"],
                },
              ],
            },
            metadata: {
              description: "phase one",
              environment: {
                level: 1,
                trusted: true,
                tags: ["dev", "staging"],
              },
            },
          });
      - lang: Ruby
        source: |-
          response = client.security.create_cross_cluster_api_key(
            body: {
              "name": "my-cross-cluster-api-key",
              "expiration": "1d",
              "access": {
                "search": [
                  {
                    "names": [
                      "logs*"
                    ]
                  }
                ],
                "replication": [
                  {
                    "names": [
                      "archive*"
                    ]
                  }
                ]
              },
              "metadata": {
                "description": "phase one",
                "environment": {
                  "level": 1,
                  "trusted": true,
                  "tags": [
                    "dev",
                    "staging"
                  ]
                }
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->security()->createCrossClusterApiKey([
              "body" => [
                  "name" => "my-cross-cluster-api-key",
                  "expiration" => "1d",
                  "access" => [
                      "search" => array(
                          [
                              "names" => array(
                                  "logs*",
                              ),
                          ],
                      ),
                      "replication" => array(
                          [
                              "names" => array(
                                  "archive*",
                              ),
                          ],
                      ),
                  ],
                  "metadata" => [
                      "description" => "phase one",
                      "environment" => [
                          "level" => 1,
                          "trusted" => true,
                          "tags" => array(
                              "dev",
                              "staging",
                          ),
                      ],
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"name":"my-cross-cluster-api-key","expiration":"1d","access":{"search":[{"names":["logs*"]}],"replication":[{"names":["archive*"]}]},"metadata":{"description":"phase
          one","environment":{"level":1,"trusted":true,"tags":["dev","staging"]}}}''
          "$ELASTICSEARCH_URL/_security/cross_cluster/api_key"'
      - lang: Java
        source: |
          client.security().createCrossClusterApiKey(c -> c
              .access(a -> a
                  .replication(r -> r
                      .names("archive*")
                  )
                  .search(s -> s
                      .names("logs*")
                  )
              )
              .expiration(e -> e
                  .time("1d")
              )
              .metadata(Map.of("environment", JsonData.fromJson("{\"level\":1,\"trusted\":true,\"tags\":[\"dev\",\"staging\"]}"),"description", JsonData.fromJson("\"phase one\"")))
              .name("my-cross-cluster-api-key")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_security/service/{namespace}/{service}/credential/token/{name}":
    post:
      tags:
      - security
      summary: 'Create a service account token

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_security/service/{namespace}/{service}/credential/token</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb put\">PUT</span>\n                      <span class=\"operation-path\">/_security/service/{namespace}/{service}/credential/token/{name}</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_security/service/{namespace}/{service}/credential/token/{name}</span>\n
        \                     </div>\n                    \n\nCreate a service accounts
        token for access without requiring basic authentication.\n\nNOTE: Service
        account tokens never expire.\nYou must actively delete them if they are no
        longer needed.\n\n## Required authorization\n\n* Cluster privileges: `manage_service_account`\n"
      externalDocs:
        url: https://www.elastic.co/docs/deploy-manage/users-roles/cluster-or-deployment-auth/service-accounts
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/security-api-create-service-token.html
      operationId: security-create-service-token
      parameters:
      - "$ref": "#/components/parameters/security.create_service_token-namespace"
      - "$ref": "#/components/parameters/security.create_service_token-service"
      - "$ref": "#/components/parameters/security.create_service_token-name"
      - "$ref": "#/components/parameters/security.create_service_token-refresh"
      responses:
        '200':
          "$ref": "#/components/responses/security.create_service_token-200"
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'POST /_security/service/elastic/fleet-server/credential/token/token1

          '
      - lang: Python
        source: |-
          resp = client.security.create_service_token(
              namespace="elastic",
              service="fleet-server",
              name="token1",
          )
      - lang: JavaScript
        source: |-
          const response = await client.security.createServiceToken({
            namespace: "elastic",
            service: "fleet-server",
            name: "token1",
          });
      - lang: Ruby
        source: |-
          response = client.security.create_service_token(
            namespace: "elastic",
            service: "fleet-server",
            name: "token1"
          )
      - lang: PHP
        source: |-
          $resp = $client->security()->createServiceToken([
              "namespace" => "elastic",
              "service" => "fleet-server",
              "name" => "token1",
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_security/service/elastic/fleet-server/credential/token/token1"'
      - lang: Java
        source: |
          client.security().createServiceToken(c -> c
              .name("token1")
              .namespace("elastic")
              .service("fleet-server")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    delete:
      tags:
      - security
      summary: Delete service account tokens
      description: |
        Delete service account tokens for a service in a specified namespace.

        ## Required authorization

        * Cluster privileges: `manage_service_account`
      externalDocs:
        url: https://www.elastic.co/docs/deploy-manage/users-roles/cluster-or-deployment-auth/service-accounts
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/security-api-delete-service-token.html
      operationId: security-delete-service-token
      parameters:
      - in: path
        name: namespace
        description: The namespace, which is a top-level grouping of service accounts.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Namespace"
        style: simple
      - in: path
        name: service
        description: The service name.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Service"
        style: simple
      - in: path
        name: name
        description: The name of the service account token.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Name"
        style: simple
      - in: query
        name: refresh
        description: If `true` (the default) then refresh the affected shards to make
          this operation visible to search, if `wait_for` then wait for a refresh
          to make this operation visible to search, if `false` then do nothing with
          refreshes.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Refresh"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  found:
                    description: |-
                      If the service account token is successfully deleted, the request returns `{"found": true}`.
                      Otherwise, the response will have status code 404 and `found` is set to `false`.
                    type: boolean
                required:
                - found
              examples:
                DeleteServiceTokenResponseExample1:
                  description: 'A successful response from `DELETE /_security/service/elastic/fleet-server/credential/token/token42`.

                    '
                  value: |-
                    {
                      "found" : true
                    }
      x-state: Generally available; Added in 5.5.0
      x-codeSamples:
      - lang: Console
        source: 'DELETE /_security/service/elastic/fleet-server/credential/token/token42

          '
      - lang: Python
        source: |-
          resp = client.security.delete_service_token(
              namespace="elastic",
              service="fleet-server",
              name="token42",
          )
      - lang: JavaScript
        source: |-
          const response = await client.security.deleteServiceToken({
            namespace: "elastic",
            service: "fleet-server",
            name: "token42",
          });
      - lang: Ruby
        source: |-
          response = client.security.delete_service_token(
            namespace: "elastic",
            service: "fleet-server",
            name: "token42"
          )
      - lang: PHP
        source: |-
          $resp = $client->security()->deleteServiceToken([
              "namespace" => "elastic",
              "service" => "fleet-server",
              "name" => "token42",
          ]);
      - lang: curl
        source: 'curl -X DELETE -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_security/service/elastic/fleet-server/credential/token/token42"'
      - lang: Java
        source: |
          client.security().deleteServiceToken(d -> d
              .name("token42")
              .namespace("elastic")
              .service("fleet-server")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_security/delegate_pki":
    post:
      tags:
      - security
      summary: Delegate PKI authentication
      description: |
        This API implements the exchange of an X509Certificate chain for an Elasticsearch access token.
        The certificate chain is validated, according to RFC 5280, by sequentially considering the trust configuration of every installed PKI realm that has `delegation.enabled` set to `true`.
        A successfully trusted client certificate is also subject to the validation of the subject distinguished name according to thw `username_pattern` of the respective realm.

        This API is called by smart and trusted proxies, such as Kibana, which terminate the user's TLS session but still want to authenticate the user by using a PKI realm—-​as if the user connected directly to Elasticsearch.

        IMPORTANT: The association between the subject public key in the target certificate and the corresponding private key is not validated.
        This is part of the TLS authentication process and it is delegated to the proxy that calls this API.
        The proxy is trusted to have performed the TLS authentication and this API translates that authentication into an Elasticsearch access token.

        ## Required authorization

        * Cluster privileges: `all`
      externalDocs:
        url: https://www.elastic.co/docs/deploy-manage/users-roles/cluster-or-deployment-auth/pki
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/security-api-delegate-pki-authentication.html
      operationId: security-delegate-pki
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                x509_certificate_chain:
                  description: |-
                    The X509Certificate chain, which is represented as an ordered string array.
                    Each string in the array is a base64-encoded (Section 4 of RFC4648 - not base64url-encoded) of the certificate's DER encoding.

                    The first element is the target certificate that contains the subject distinguished name that is requesting access.
                    This may be followed by additional certificates; each subsequent certificate is used to certify the previous one.
                  type: array
                  items:
                    type: string
              required:
              - x509_certificate_chain
            examples:
              SecurityDelegatePkiRequestExample1:
                description: Delegate a one element certificate chain.
                value: |-
                  {
                  "x509_certificate_chain": ["MIIDeDCCAmCgAwIBAgIUBzj/nGGKxP2iXawsSquHmQjCJmMwDQYJKoZIhvcNAQELBQAwUzErMCkGA1UEAxMiRWxhc3RpY3NlYXJjaCBUZXN0IEludGVybWVkaWF0ZSBDQTEWMBQGA1UECxMNRWxhc3RpY3NlYXJjaDEMMAoGA1UEChMDb3JnMB4XDTIzMDcxODE5MjkwNloXDTQzMDcxMzE5MjkwNlowSjEiMCAGA1UEAxMZRWxhc3RpY3NlYXJjaCBUZXN0IENsaWVudDEWMBQGA1UECxMNRWxhc3RpY3NlYXJjaDEMMAoGA1UEChMDb3JnMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAllHL4pQkkfwAm/oLkxYYO+r950DEy1bjH+4viCHzNADLCTWO+lOZJVlNx7QEzJE3QGMdif9CCBBxQFMapA7oUFCLq84fPSQQu5AnvvbltVD9nwVtCs+9ZGDjMKsz98RhSLMFIkxdxi6HkQ3Lfa4ZSI4lvba4oo+T/GveazBDS+NgmKyq00EOXt3tWi1G9vEVItommzXWfv0agJWzVnLMldwkPqsw0W7zrpyT7FZS4iLbQADGceOW8fiauOGMkscu9zAnDR/SbWl/chYioQOdw6ndFLn1YIFPd37xL0WsdsldTpn0vH3YfzgLMffT/3P6YlwBegWzsx6FnM/93Ecb4wIDAQABo00wSzAJBgNVHRMEAjAAMB0GA1UdDgQWBBQKNRwjW+Ad/FN1Rpoqme/5+jrFWzAfBgNVHSMEGDAWgBRcya0c0x/PaI7MbmJVIylWgLqXNjANBgkqhkiG9w0BAQsFAAOCAQEACZ3PF7Uqu47lplXHP6YlzYL2jL0D28hpj5lGtdha4Muw1m/BjDb0Pu8l0NQ1z3AP6AVcvjNDkQq6Y5jeSz0bwQlealQpYfo7EMXjOidrft1GbqOMFmTBLpLA9SvwYGobSTXWTkJzonqVaTcf80HpMgM2uEhodwTcvz6v1WEfeT/HMjmdIsq4ImrOL9RNrcZG6nWfw0HR3JNOgrbfyEztEI471jHznZ336OEcyX7gQuvHE8tOv5+oD1d7s3Xg1yuFp+Ynh+FfOi3hPCuaHA+7F6fLmzMDLVUBAllugst1C3U+L/paD7tqIa4ka+KNPCbSfwazmJrt4XNiivPR4hwH5g=="]
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  access_token:
                    description: An access token associated with the subject distinguished
                      name of the client's certificate.
                    type: string
                  expires_in:
                    description: The amount of time (in seconds) before the token
                      expires.
                    type: number
                  type:
                    description: The type of token.
                    type: string
                  authentication:
                    allOf:
                    - "$ref": "#/components/schemas/security.delegate_pki.Authentication"
                required:
                - access_token
                - expires_in
                - type
              examples:
                SecurityDelegatePkiResponseExample1:
                  description: A successful response from delegating a one element
                    certificate chain.
                  value: |-
                    {
                      "access_token": "dGhpcyBpcyBub3QgYSByZWFsIHRva2VuIGJ1dCBpdCBpcyBvbmx5IHRlc3QgZGF0YS4gZG8gbm90IHRyeSB0byByZWFkIHRva2VuIQ==",
                      "type": "Bearer",
                      "expires_in": 1200,
                      "authentication": {
                        "username": "Elasticsearch Test Client",
                        "roles": [],
                        "full_name": null,
                        "email": null,
                        "metadata": {
                          "pki_dn": "O=org, OU=Elasticsearch, CN=Elasticsearch Test Client",
                          "pki_delegated_by_user": "test_admin",
                          "pki_delegated_by_realm": "file"
                        },
                        "enabled": true,
                        "authentication_realm": {
                          "name": "pki1",
                          "type": "pki"
                        },
                        "lookup_realm": {
                          "name": "pki1",
                          "type": "pki"
                        },
                        "authentication_type": "realm"
                      }
                    }
      x-state: Generally available; Added in 7.4.0
      x-codeSamples:
      - lang: Console
        source: |-
          POST /_security/delegate_pki
          {
          "x509_certificate_chain": ["MIIDeDCCAmCgAwIBAgIUBzj/nGGKxP2iXawsSquHmQjCJmMwDQYJKoZIhvcNAQELBQAwUzErMCkGA1UEAxMiRWxhc3RpY3NlYXJjaCBUZXN0IEludGVybWVkaWF0ZSBDQTEWMBQGA1UECxMNRWxhc3RpY3NlYXJjaDEMMAoGA1UEChMDb3JnMB4XDTIzMDcxODE5MjkwNloXDTQzMDcxMzE5MjkwNlowSjEiMCAGA1UEAxMZRWxhc3RpY3NlYXJjaCBUZXN0IENsaWVudDEWMBQGA1UECxMNRWxhc3RpY3NlYXJjaDEMMAoGA1UEChMDb3JnMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAllHL4pQkkfwAm/oLkxYYO+r950DEy1bjH+4viCHzNADLCTWO+lOZJVlNx7QEzJE3QGMdif9CCBBxQFMapA7oUFCLq84fPSQQu5AnvvbltVD9nwVtCs+9ZGDjMKsz98RhSLMFIkxdxi6HkQ3Lfa4ZSI4lvba4oo+T/GveazBDS+NgmKyq00EOXt3tWi1G9vEVItommzXWfv0agJWzVnLMldwkPqsw0W7zrpyT7FZS4iLbQADGceOW8fiauOGMkscu9zAnDR/SbWl/chYioQOdw6ndFLn1YIFPd37xL0WsdsldTpn0vH3YfzgLMffT/3P6YlwBegWzsx6FnM/93Ecb4wIDAQABo00wSzAJBgNVHRMEAjAAMB0GA1UdDgQWBBQKNRwjW+Ad/FN1Rpoqme/5+jrFWzAfBgNVHSMEGDAWgBRcya0c0x/PaI7MbmJVIylWgLqXNjANBgkqhkiG9w0BAQsFAAOCAQEACZ3PF7Uqu47lplXHP6YlzYL2jL0D28hpj5lGtdha4Muw1m/BjDb0Pu8l0NQ1z3AP6AVcvjNDkQq6Y5jeSz0bwQlealQpYfo7EMXjOidrft1GbqOMFmTBLpLA9SvwYGobSTXWTkJzonqVaTcf80HpMgM2uEhodwTcvz6v1WEfeT/HMjmdIsq4ImrOL9RNrcZG6nWfw0HR3JNOgrbfyEztEI471jHznZ336OEcyX7gQuvHE8tOv5+oD1d7s3Xg1yuFp+Ynh+FfOi3hPCuaHA+7F6fLmzMDLVUBAllugst1C3U+L/paD7tqIa4ka+KNPCbSfwazmJrt4XNiivPR4hwH5g=="]
          }
      - lang: Python
        source: |-
          resp = client.perform_request(
              "POST",
              "/_security/delegate_pki",
              headers={"Content-Type": "application/json"},
              body={
                  "x509_certificate_chain": [
                      "MIIDeDCCAmCgAwIBAgIUBzj/nGGKxP2iXawsSquHmQjCJmMwDQYJKoZIhvcNAQELBQAwUzErMCkGA1UEAxMiRWxhc3RpY3NlYXJjaCBUZXN0IEludGVybWVkaWF0ZSBDQTEWMBQGA1UECxMNRWxhc3RpY3NlYXJjaDEMMAoGA1UEChMDb3JnMB4XDTIzMDcxODE5MjkwNloXDTQzMDcxMzE5MjkwNlowSjEiMCAGA1UEAxMZRWxhc3RpY3NlYXJjaCBUZXN0IENsaWVudDEWMBQGA1UECxMNRWxhc3RpY3NlYXJjaDEMMAoGA1UEChMDb3JnMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAllHL4pQkkfwAm/oLkxYYO+r950DEy1bjH+4viCHzNADLCTWO+lOZJVlNx7QEzJE3QGMdif9CCBBxQFMapA7oUFCLq84fPSQQu5AnvvbltVD9nwVtCs+9ZGDjMKsz98RhSLMFIkxdxi6HkQ3Lfa4ZSI4lvba4oo+T/GveazBDS+NgmKyq00EOXt3tWi1G9vEVItommzXWfv0agJWzVnLMldwkPqsw0W7zrpyT7FZS4iLbQADGceOW8fiauOGMkscu9zAnDR/SbWl/chYioQOdw6ndFLn1YIFPd37xL0WsdsldTpn0vH3YfzgLMffT/3P6YlwBegWzsx6FnM/93Ecb4wIDAQABo00wSzAJBgNVHRMEAjAAMB0GA1UdDgQWBBQKNRwjW+Ad/FN1Rpoqme/5+jrFWzAfBgNVHSMEGDAWgBRcya0c0x/PaI7MbmJVIylWgLqXNjANBgkqhkiG9w0BAQsFAAOCAQEACZ3PF7Uqu47lplXHP6YlzYL2jL0D28hpj5lGtdha4Muw1m/BjDb0Pu8l0NQ1z3AP6AVcvjNDkQq6Y5jeSz0bwQlealQpYfo7EMXjOidrft1GbqOMFmTBLpLA9SvwYGobSTXWTkJzonqVaTcf80HpMgM2uEhodwTcvz6v1WEfeT/HMjmdIsq4ImrOL9RNrcZG6nWfw0HR3JNOgrbfyEztEI471jHznZ336OEcyX7gQuvHE8tOv5+oD1d7s3Xg1yuFp+Ynh+FfOi3hPCuaHA+7F6fLmzMDLVUBAllugst1C3U+L/paD7tqIa4ka+KNPCbSfwazmJrt4XNiivPR4hwH5g=="
                  ]
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.transport.request({
            method: "POST",
            path: "/_security/delegate_pki",
            body: {
              x509_certificate_chain: [
                "MIIDeDCCAmCgAwIBAgIUBzj/nGGKxP2iXawsSquHmQjCJmMwDQYJKoZIhvcNAQELBQAwUzErMCkGA1UEAxMiRWxhc3RpY3NlYXJjaCBUZXN0IEludGVybWVkaWF0ZSBDQTEWMBQGA1UECxMNRWxhc3RpY3NlYXJjaDEMMAoGA1UEChMDb3JnMB4XDTIzMDcxODE5MjkwNloXDTQzMDcxMzE5MjkwNlowSjEiMCAGA1UEAxMZRWxhc3RpY3NlYXJjaCBUZXN0IENsaWVudDEWMBQGA1UECxMNRWxhc3RpY3NlYXJjaDEMMAoGA1UEChMDb3JnMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAllHL4pQkkfwAm/oLkxYYO+r950DEy1bjH+4viCHzNADLCTWO+lOZJVlNx7QEzJE3QGMdif9CCBBxQFMapA7oUFCLq84fPSQQu5AnvvbltVD9nwVtCs+9ZGDjMKsz98RhSLMFIkxdxi6HkQ3Lfa4ZSI4lvba4oo+T/GveazBDS+NgmKyq00EOXt3tWi1G9vEVItommzXWfv0agJWzVnLMldwkPqsw0W7zrpyT7FZS4iLbQADGceOW8fiauOGMkscu9zAnDR/SbWl/chYioQOdw6ndFLn1YIFPd37xL0WsdsldTpn0vH3YfzgLMffT/3P6YlwBegWzsx6FnM/93Ecb4wIDAQABo00wSzAJBgNVHRMEAjAAMB0GA1UdDgQWBBQKNRwjW+Ad/FN1Rpoqme/5+jrFWzAfBgNVHSMEGDAWgBRcya0c0x/PaI7MbmJVIylWgLqXNjANBgkqhkiG9w0BAQsFAAOCAQEACZ3PF7Uqu47lplXHP6YlzYL2jL0D28hpj5lGtdha4Muw1m/BjDb0Pu8l0NQ1z3AP6AVcvjNDkQq6Y5jeSz0bwQlealQpYfo7EMXjOidrft1GbqOMFmTBLpLA9SvwYGobSTXWTkJzonqVaTcf80HpMgM2uEhodwTcvz6v1WEfeT/HMjmdIsq4ImrOL9RNrcZG6nWfw0HR3JNOgrbfyEztEI471jHznZ336OEcyX7gQuvHE8tOv5+oD1d7s3Xg1yuFp+Ynh+FfOi3hPCuaHA+7F6fLmzMDLVUBAllugst1C3U+L/paD7tqIa4ka+KNPCbSfwazmJrt4XNiivPR4hwH5g==",
              ],
            },
          });
      - lang: Ruby
        source: |-
          response = client.perform_request(
            "POST",
            "/_security/delegate_pki",
            {},
            {
              "x509_certificate_chain": [
                "MIIDeDCCAmCgAwIBAgIUBzj/nGGKxP2iXawsSquHmQjCJmMwDQYJKoZIhvcNAQELBQAwUzErMCkGA1UEAxMiRWxhc3RpY3NlYXJjaCBUZXN0IEludGVybWVkaWF0ZSBDQTEWMBQGA1UECxMNRWxhc3RpY3NlYXJjaDEMMAoGA1UEChMDb3JnMB4XDTIzMDcxODE5MjkwNloXDTQzMDcxMzE5MjkwNlowSjEiMCAGA1UEAxMZRWxhc3RpY3NlYXJjaCBUZXN0IENsaWVudDEWMBQGA1UECxMNRWxhc3RpY3NlYXJjaDEMMAoGA1UEChMDb3JnMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAllHL4pQkkfwAm/oLkxYYO+r950DEy1bjH+4viCHzNADLCTWO+lOZJVlNx7QEzJE3QGMdif9CCBBxQFMapA7oUFCLq84fPSQQu5AnvvbltVD9nwVtCs+9ZGDjMKsz98RhSLMFIkxdxi6HkQ3Lfa4ZSI4lvba4oo+T/GveazBDS+NgmKyq00EOXt3tWi1G9vEVItommzXWfv0agJWzVnLMldwkPqsw0W7zrpyT7FZS4iLbQADGceOW8fiauOGMkscu9zAnDR/SbWl/chYioQOdw6ndFLn1YIFPd37xL0WsdsldTpn0vH3YfzgLMffT/3P6YlwBegWzsx6FnM/93Ecb4wIDAQABo00wSzAJBgNVHRMEAjAAMB0GA1UdDgQWBBQKNRwjW+Ad/FN1Rpoqme/5+jrFWzAfBgNVHSMEGDAWgBRcya0c0x/PaI7MbmJVIylWgLqXNjANBgkqhkiG9w0BAQsFAAOCAQEACZ3PF7Uqu47lplXHP6YlzYL2jL0D28hpj5lGtdha4Muw1m/BjDb0Pu8l0NQ1z3AP6AVcvjNDkQq6Y5jeSz0bwQlealQpYfo7EMXjOidrft1GbqOMFmTBLpLA9SvwYGobSTXWTkJzonqVaTcf80HpMgM2uEhodwTcvz6v1WEfeT/HMjmdIsq4ImrOL9RNrcZG6nWfw0HR3JNOgrbfyEztEI471jHznZ336OEcyX7gQuvHE8tOv5+oD1d7s3Xg1yuFp+Ynh+FfOi3hPCuaHA+7F6fLmzMDLVUBAllugst1C3U+L/paD7tqIa4ka+KNPCbSfwazmJrt4XNiivPR4hwH5g=="
              ]
            },
            { "Content-Type": "application/json" },
          )
      - lang: PHP
        source: |-
          $requestFactory = Psr17FactoryDiscovery::findRequestFactory();
          $streamFactory = Psr17FactoryDiscovery::findStreamFactory();
          $request = $requestFactory->createRequest(
              "POST",
              "/_security/delegate_pki",
          );
          $request = $request->withHeader("Content-Type", "application/json");
          $request = $request->withBody($streamFactory->createStream(
              json_encode([
                  "x509_certificate_chain" => array(
                      "MIIDeDCCAmCgAwIBAgIUBzj/nGGKxP2iXawsSquHmQjCJmMwDQYJKoZIhvcNAQELBQAwUzErMCkGA1UEAxMiRWxhc3RpY3NlYXJjaCBUZXN0IEludGVybWVkaWF0ZSBDQTEWMBQGA1UECxMNRWxhc3RpY3NlYXJjaDEMMAoGA1UEChMDb3JnMB4XDTIzMDcxODE5MjkwNloXDTQzMDcxMzE5MjkwNlowSjEiMCAGA1UEAxMZRWxhc3RpY3NlYXJjaCBUZXN0IENsaWVudDEWMBQGA1UECxMNRWxhc3RpY3NlYXJjaDEMMAoGA1UEChMDb3JnMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAllHL4pQkkfwAm/oLkxYYO+r950DEy1bjH+4viCHzNADLCTWO+lOZJVlNx7QEzJE3QGMdif9CCBBxQFMapA7oUFCLq84fPSQQu5AnvvbltVD9nwVtCs+9ZGDjMKsz98RhSLMFIkxdxi6HkQ3Lfa4ZSI4lvba4oo+T/GveazBDS+NgmKyq00EOXt3tWi1G9vEVItommzXWfv0agJWzVnLMldwkPqsw0W7zrpyT7FZS4iLbQADGceOW8fiauOGMkscu9zAnDR/SbWl/chYioQOdw6ndFLn1YIFPd37xL0WsdsldTpn0vH3YfzgLMffT/3P6YlwBegWzsx6FnM/93Ecb4wIDAQABo00wSzAJBgNVHRMEAjAAMB0GA1UdDgQWBBQKNRwjW+Ad/FN1Rpoqme/5+jrFWzAfBgNVHSMEGDAWgBRcya0c0x/PaI7MbmJVIylWgLqXNjANBgkqhkiG9w0BAQsFAAOCAQEACZ3PF7Uqu47lplXHP6YlzYL2jL0D28hpj5lGtdha4Muw1m/BjDb0Pu8l0NQ1z3AP6AVcvjNDkQq6Y5jeSz0bwQlealQpYfo7EMXjOidrft1GbqOMFmTBLpLA9SvwYGobSTXWTkJzonqVaTcf80HpMgM2uEhodwTcvz6v1WEfeT/HMjmdIsq4ImrOL9RNrcZG6nWfw0HR3JNOgrbfyEztEI471jHznZ336OEcyX7gQuvHE8tOv5+oD1d7s3Xg1yuFp+Ynh+FfOi3hPCuaHA+7F6fLmzMDLVUBAllugst1C3U+L/paD7tqIa4ka+KNPCbSfwazmJrt4XNiivPR4hwH5g==",
                  ),
              ]),
          ));
          $resp = $client->sendRequest($request);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"x509_certificate_chain":["MIIDeDCCAmCgAwIBAgIUBzj/nGGKxP2iXawsSquHmQjCJmMwDQYJKoZIhvcNAQELBQAwUzErMCkGA1UEAxMiRWxhc3RpY3NlYXJjaCBUZXN0IEludGVybWVkaWF0ZSBDQTEWMBQGA1UECxMNRWxhc3RpY3NlYXJjaDEMMAoGA1UEChMDb3JnMB4XDTIzMDcxODE5MjkwNloXDTQzMDcxMzE5MjkwNlowSjEiMCAGA1UEAxMZRWxhc3RpY3NlYXJjaCBUZXN0IENsaWVudDEWMBQGA1UECxMNRWxhc3RpY3NlYXJjaDEMMAoGA1UEChMDb3JnMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAllHL4pQkkfwAm/oLkxYYO+r950DEy1bjH+4viCHzNADLCTWO+lOZJVlNx7QEzJE3QGMdif9CCBBxQFMapA7oUFCLq84fPSQQu5AnvvbltVD9nwVtCs+9ZGDjMKsz98RhSLMFIkxdxi6HkQ3Lfa4ZSI4lvba4oo+T/GveazBDS+NgmKyq00EOXt3tWi1G9vEVItommzXWfv0agJWzVnLMldwkPqsw0W7zrpyT7FZS4iLbQADGceOW8fiauOGMkscu9zAnDR/SbWl/chYioQOdw6ndFLn1YIFPd37xL0WsdsldTpn0vH3YfzgLMffT/3P6YlwBegWzsx6FnM/93Ecb4wIDAQABo00wSzAJBgNVHRMEAjAAMB0GA1UdDgQWBBQKNRwjW+Ad/FN1Rpoqme/5+jrFWzAfBgNVHSMEGDAWgBRcya0c0x/PaI7MbmJVIylWgLqXNjANBgkqhkiG9w0BAQsFAAOCAQEACZ3PF7Uqu47lplXHP6YlzYL2jL0D28hpj5lGtdha4Muw1m/BjDb0Pu8l0NQ1z3AP6AVcvjNDkQq6Y5jeSz0bwQlealQpYfo7EMXjOidrft1GbqOMFmTBLpLA9SvwYGobSTXWTkJzonqVaTcf80HpMgM2uEhodwTcvz6v1WEfeT/HMjmdIsq4ImrOL9RNrcZG6nWfw0HR3JNOgrbfyEztEI471jHznZ336OEcyX7gQuvHE8tOv5+oD1d7s3Xg1yuFp+Ynh+FfOi3hPCuaHA+7F6fLmzMDLVUBAllugst1C3U+L/paD7tqIa4ka+KNPCbSfwazmJrt4XNiivPR4hwH5g=="]}''
          "$ELASTICSEARCH_URL/_security/delegate_pki"'
      - lang: Java
        source: |
          client.security().delegatePki(d -> d
              .x509CertificateChain("MIIDeDCCAmCgAwIBAgIUBzj/nGGKxP2iXawsSquHmQjCJmMwDQYJKoZIhvcNAQELBQAwUzErMCkGA1UEAxMiRWxhc3RpY3NlYXJjaCBUZXN0IEludGVybWVkaWF0ZSBDQTEWMBQGA1UECxMNRWxhc3RpY3NlYXJjaDEMMAoGA1UEChMDb3JnMB4XDTIzMDcxODE5MjkwNloXDTQzMDcxMzE5MjkwNlowSjEiMCAGA1UEAxMZRWxhc3RpY3NlYXJjaCBUZXN0IENsaWVudDEWMBQGA1UECxMNRWxhc3RpY3NlYXJjaDEMMAoGA1UEChMDb3JnMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAllHL4pQkkfwAm/oLkxYYO+r950DEy1bjH+4viCHzNADLCTWO+lOZJVlNx7QEzJE3QGMdif9CCBBxQFMapA7oUFCLq84fPSQQu5AnvvbltVD9nwVtCs+9ZGDjMKsz98RhSLMFIkxdxi6HkQ3Lfa4ZSI4lvba4oo+T/GveazBDS+NgmKyq00EOXt3tWi1G9vEVItommzXWfv0agJWzVnLMldwkPqsw0W7zrpyT7FZS4iLbQADGceOW8fiauOGMkscu9zAnDR/SbWl/chYioQOdw6ndFLn1YIFPd37xL0WsdsldTpn0vH3YfzgLMffT/3P6YlwBegWzsx6FnM/93Ecb4wIDAQABo00wSzAJBgNVHRMEAjAAMB0GA1UdDgQWBBQKNRwjW+Ad/FN1Rpoqme/5+jrFWzAfBgNVHSMEGDAWgBRcya0c0x/PaI7MbmJVIylWgLqXNjANBgkqhkiG9w0BAQsFAAOCAQEACZ3PF7Uqu47lplXHP6YlzYL2jL0D28hpj5lGtdha4Muw1m/BjDb0Pu8l0NQ1z3AP6AVcvjNDkQq6Y5jeSz0bwQlealQpYfo7EMXjOidrft1GbqOMFmTBLpLA9SvwYGobSTXWTkJzonqVaTcf80HpMgM2uEhodwTcvz6v1WEfeT/HMjmdIsq4ImrOL9RNrcZG6nWfw0HR3JNOgrbfyEztEI471jHznZ336OEcyX7gQuvHE8tOv5+oD1d7s3Xg1yuFp+Ynh+FfOi3hPCuaHA+7F6fLmzMDLVUBAllugst1C3U+L/paD7tqIa4ka+KNPCbSfwazmJrt4XNiivPR4hwH5g==")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_security/privilege/{application}/{name}":
    get:
      tags:
      - security
      summary: 'Get application privileges

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_security/privilege</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_security/privilege/{application}</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_security/privilege/{application}/{name}</span>\n
        \                     </div>\n                    \n\nTo use this API, you
        must have one of the following privileges:\n\n* The `read_security` cluster
        privilege (or a greater privilege such as `manage_security` or `all`).\n*
        The \"Manage Application Privileges\" global privilege for the application
        being referenced in the request.\n\n## Required authorization\n\n* Cluster
        privileges: `read_security`\n"
      externalDocs:
        url: https://www.elastic.co/docs/reference/elasticsearch/security-privileges
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/security-api-get-privileges.html
      operationId: security-get-privileges
      parameters:
      - "$ref": "#/components/parameters/security.get_privileges-application"
      - "$ref": "#/components/parameters/security.get_privileges-name"
      responses:
        '200':
          "$ref": "#/components/responses/security.get_privileges-200"
      x-state: Generally available; Added in 6.4.0
      x-codeSamples:
      - lang: Console
        source: 'GET /_security/privilege/myapp/read

          '
      - lang: Python
        source: |-
          resp = client.security.get_privileges(
              application="myapp",
              name="read",
          )
      - lang: JavaScript
        source: |-
          const response = await client.security.getPrivileges({
            application: "myapp",
            name: "read",
          });
      - lang: Ruby
        source: |-
          response = client.security.get_privileges(
            application: "myapp",
            name: "read"
          )
      - lang: PHP
        source: |-
          $resp = $client->security()->getPrivileges([
              "application" => "myapp",
              "name" => "read",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_security/privilege/myapp/read"'
      - lang: Java
        source: |
          client.security().getPrivileges(g -> g
              .application("myapp")
              .name("read")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    delete:
      tags:
      - security
      summary: Delete application privileges
      description: |
        To use this API, you must have one of the following privileges:

        * The `manage_security` cluster privilege (or a greater privilege such as `all`).
        * The "Manage Application Privileges" global privilege for the application being referenced in the request.

        ## Required authorization

        * Cluster privileges: `manage_security`
      externalDocs:
        url: https://www.elastic.co/docs/reference/elasticsearch/security-privileges
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/security-api-delete-privilege.html
      operationId: security-delete-privileges
      parameters:
      - in: path
        name: application
        description: |-
          The name of the application.
          Application privileges are always associated with exactly one application.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Name"
        style: simple
      - in: path
        name: name
        description: The name of the privilege.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Names"
        style: simple
      - in: query
        name: refresh
        description: If `true` (the default) then refresh the affected shards to make
          this operation visible to search, if `wait_for` then wait for a refresh
          to make this operation visible to search, if `false` then do nothing with
          refreshes.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Refresh"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                additionalProperties:
                  type: object
                  additionalProperties:
                    "$ref": "#/components/schemas/security.delete_privileges.FoundStatus"
              examples:
                SecurityDeletePrivilegesResponseExample1:
                  description: 'A successful response from `DELETE /_security/privilege/myapp/read`.
                    If the privilege is successfully deleted, `found` is set to `true`.

                    '
                  value: |-
                    {
                      "myapp": {
                        "read": {
                          "found" : true
                        }
                      }
                    }
      x-state: Generally available; Added in 6.4.0
      x-codeSamples:
      - lang: Console
        source: 'DELETE /_security/privilege/myapp/read

          '
      - lang: Python
        source: |-
          resp = client.security.delete_privileges(
              application="myapp",
              name="read",
          )
      - lang: JavaScript
        source: |-
          const response = await client.security.deletePrivileges({
            application: "myapp",
            name: "read",
          });
      - lang: Ruby
        source: |-
          response = client.security.delete_privileges(
            application: "myapp",
            name: "read"
          )
      - lang: PHP
        source: |-
          $resp = $client->security()->deletePrivileges([
              "application" => "myapp",
              "name" => "read",
          ]);
      - lang: curl
        source: 'curl -X DELETE -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_security/privilege/myapp/read"'
      - lang: Java
        source: |
          client.security().deletePrivileges(d -> d
              .application("myapp")
              .name("read")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_security/role/{name}":
    get:
      tags:
      - security
      summary: 'Get roles

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_security/role</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_security/role/{name}</span>\n
        \                     </div>\n                    \n\nGet roles in the native
        realm.\nThe role management APIs are generally the preferred way to manage
        roles, rather than using file-based role management.\nThe get roles API cannot
        retrieve roles that are defined in roles files.\n\n## Required authorization\n\n*
        Cluster privileges: `read_security`\n"
      operationId: security-get-role
      parameters:
      - "$ref": "#/components/parameters/security.get_role-name"
      responses:
        '200':
          "$ref": "#/components/responses/security.get_role-200"
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'GET /_security/role/my_admin_role

          '
      - lang: Python
        source: |-
          resp = client.security.get_role(
              name="my_admin_role",
          )
      - lang: JavaScript
        source: |-
          const response = await client.security.getRole({
            name: "my_admin_role",
          });
      - lang: Ruby
        source: |-
          response = client.security.get_role(
            name: "my_admin_role"
          )
      - lang: PHP
        source: |-
          $resp = $client->security()->getRole([
              "name" => "my_admin_role",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_security/role/my_admin_role"'
      - lang: Java
        source: |
          client.security().getRole(g -> g
              .name("my_admin_role")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    post:
      tags:
      - security
      summary: 'Create or update roles

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb put\">PUT</span>\n                      <span class=\"operation-path\">/_security/role/{name}</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_security/role/{name}</span>\n
        \                     </div>\n                    \n\nThe role management
        APIs are generally the preferred way to manage roles in the native realm,
        rather than using file-based role management.\nThe create or update roles
        API cannot update roles that are defined in roles files.\nFile-based role
        management is not available in Elastic Serverless.\n\n## Required authorization\n\n*
        Cluster privileges: `manage_security`\n"
      externalDocs:
        url: https://www.elastic.co/docs/deploy-manage/users-roles/cluster-or-deployment-auth/defining-roles
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/security-api-put-role.html
      operationId: security-put-role
      parameters:
      - "$ref": "#/components/parameters/security.put_role-name"
      - "$ref": "#/components/parameters/security.put_role-refresh"
      requestBody:
        "$ref": "#/components/requestBodies/security.put_role"
      responses:
        '200':
          "$ref": "#/components/responses/security.put_role-200"
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: |-
          POST /_security/role/my_admin_role
          {
            "description": "Grants full access to all management features within the cluster.",
            "cluster": ["all"],
            "indices": [
              {
                "names": [ "index1", "index2" ],
                "privileges": ["all"],
                "field_security" : { // optional
                  "grant" : [ "title", "body" ]
                },
                "query": "{\"match\": {\"title\": \"foo\"}}" // optional
              }
            ],
            "applications": [
              {
                "application": "myapp",
                "privileges": [ "admin", "read" ],
                "resources": [ "*" ]
              }
            ],
            "run_as": [ "other_user" ], // optional
            "metadata" : { // optional
              "version" : 1
            }
          }
      - lang: Python
        source: |-
          resp = client.security.put_role(
              name="my_admin_role",
              description="Grants full access to all management features within the cluster.",
              cluster=[
                  "all"
              ],
              indices=[
                  {
                      "names": [
                          "index1",
                          "index2"
                      ],
                      "privileges": [
                          "all"
                      ],
                      "field_security": {
                          "grant": [
                              "title",
                              "body"
                          ]
                      },
                      "query": "{\"match\": {\"title\": \"foo\"}}"
                  }
              ],
              applications=[
                  {
                      "application": "myapp",
                      "privileges": [
                          "admin",
                          "read"
                      ],
                      "resources": [
                          "*"
                      ]
                  }
              ],
              run_as=[
                  "other_user"
              ],
              metadata={
                  "version": 1
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.security.putRole({
            name: "my_admin_role",
            description:
              "Grants full access to all management features within the cluster.",
            cluster: ["all"],
            indices: [
              {
                names: ["index1", "index2"],
                privileges: ["all"],
                field_security: {
                  grant: ["title", "body"],
                },
                query: '{"match": {"title": "foo"}}',
              },
            ],
            applications: [
              {
                application: "myapp",
                privileges: ["admin", "read"],
                resources: ["*"],
              },
            ],
            run_as: ["other_user"],
            metadata: {
              version: 1,
            },
          });
      - lang: Ruby
        source: |-
          response = client.security.put_role(
            name: "my_admin_role",
            body: {
              "description": "Grants full access to all management features within the cluster.",
              "cluster": [
                "all"
              ],
              "indices": [
                {
                  "names": [
                    "index1",
                    "index2"
                  ],
                  "privileges": [
                    "all"
                  ],
                  "field_security": {
                    "grant": [
                      "title",
                      "body"
                    ]
                  },
                  "query": "{\"match\": {\"title\": \"foo\"}}"
                }
              ],
              "applications": [
                {
                  "application": "myapp",
                  "privileges": [
                    "admin",
                    "read"
                  ],
                  "resources": [
                    "*"
                  ]
                }
              ],
              "run_as": [
                "other_user"
              ],
              "metadata": {
                "version": 1
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->security()->putRole([
              "name" => "my_admin_role",
              "body" => [
                  "description" => "Grants full access to all management features within the cluster.",
                  "cluster" => array(
                      "all",
                  ),
                  "indices" => array(
                      [
                          "names" => array(
                              "index1",
                              "index2",
                          ),
                          "privileges" => array(
                              "all",
                          ),
                          "field_security" => [
                              "grant" => array(
                                  "title",
                                  "body",
                              ),
                          ],
                          "query" => "{\"match\": {\"title\": \"foo\"}}",
                      ],
                  ),
                  "applications" => array(
                      [
                          "application" => "myapp",
                          "privileges" => array(
                              "admin",
                              "read",
                          ),
                          "resources" => array(
                              "*",
                          ),
                      ],
                  ),
                  "run_as" => array(
                      "other_user",
                  ),
                  "metadata" => [
                      "version" => 1,
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"description":"Grants full access to all management
          features within the cluster.","cluster":["all"],"indices":[{"names":["index1","index2"],"privileges":["all"],"field_security":{"grant":["title","body"]},"query":"{\"match\":
          {\"title\": \"foo\"}}"}],"applications":[{"application":"myapp","privileges":["admin","read"],"resources":["*"]}],"run_as":["other_user"],"metadata":{"version":1}}''
          "$ELASTICSEARCH_URL/_security/role/my_admin_role"'
      - lang: Java
        source: |
          client.security().putRole(p -> p
              .applications(a -> a
                  .application("myapp")
                  .privileges(List.of("admin","read"))
                  .resources("*")
              )
              .cluster("all")
              .description("Grants full access to all management features within the cluster.")
              .indices(i -> i
                  .fieldSecurity(f -> f
                      .grant(List.of("title","body"))
                  )
                  .names(List.of("index1","index2"))
                  .privileges("all")
                  .query(q -> q
                      .match(m -> m
                          .field("title")
                          .query(FieldValue.of("foo"))
                      )
                  )
              )
              .metadata("version", JsonData.fromJson("1"))
              .name("my_admin_role")
              .runAs("other_user")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    delete:
      tags:
      - security
      summary: Delete roles
      description: |
        Delete roles in the native realm.
        The role management APIs are generally the preferred way to manage roles, rather than using file-based role management.
        The delete roles API cannot remove roles that are defined in roles files.

        ## Required authorization

        * Cluster privileges: `manage_security`
      operationId: security-delete-role
      parameters:
      - in: path
        name: name
        description: The name of the role.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Name"
        style: simple
      - in: query
        name: refresh
        description: If `true` (the default) then refresh the affected shards to make
          this operation visible to search, if `wait_for` then wait for a refresh
          to make this operation visible to search, if `false` then do nothing with
          refreshes.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Refresh"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  found:
                    description: |-
                      If the role is successfully deleted, `found` is `true`.
                      Otherwise, `found` is `false`.
                    type: boolean
                required:
                - found
              examples:
                SecurityDeleteRoleResponseExample1:
                  description: 'A successful response from `DELETE /_security/role/my_admin_role`.
                    If the role is successfully deleted, `found` is set to `true`.

                    '
                  value: |-
                    {
                      "found" : true
                    }
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'DELETE /_security/role/my_admin_role

          '
      - lang: Python
        source: |-
          resp = client.security.delete_role(
              name="my_admin_role",
          )
      - lang: JavaScript
        source: |-
          const response = await client.security.deleteRole({
            name: "my_admin_role",
          });
      - lang: Ruby
        source: |-
          response = client.security.delete_role(
            name: "my_admin_role"
          )
      - lang: PHP
        source: |-
          $resp = $client->security()->deleteRole([
              "name" => "my_admin_role",
          ]);
      - lang: curl
        source: 'curl -X DELETE -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_security/role/my_admin_role"'
      - lang: Java
        source: |
          client.security().deleteRole(d -> d
              .name("my_admin_role")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_security/role_mapping/{name}":
    get:
      tags:
      - security
      summary: 'Get role mappings

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_security/role_mapping</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_security/role_mapping/{name}</span>\n
        \                     </div>\n                    \n\nRole mappings define
        which roles are assigned to each user.\nThe role mapping APIs are generally
        the preferred way to manage role mappings rather than using role mapping files.\nThe
        get role mappings API cannot retrieve role mappings that are defined in role
        mapping files.\n\n## Required authorization\n\n* Cluster privileges: `manage_security`\n"
      externalDocs:
        url: https://www.elastic.co/docs/deploy-manage/users-roles/cluster-or-deployment-auth/mapping-users-groups-to-roles
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/security-api-get-role-mapping.html
      operationId: security-get-role-mapping
      parameters:
      - "$ref": "#/components/parameters/security.get_role_mapping-name"
      responses:
        '200':
          "$ref": "#/components/responses/security.get_role_mapping-200"
      x-state: Generally available; Added in 5.5.0
      x-codeSamples:
      - lang: Console
        source: 'GET /_security/role_mapping/mapping1

          '
      - lang: Python
        source: |-
          resp = client.security.get_role_mapping(
              name="mapping1",
          )
      - lang: JavaScript
        source: |-
          const response = await client.security.getRoleMapping({
            name: "mapping1",
          });
      - lang: Ruby
        source: |-
          response = client.security.get_role_mapping(
            name: "mapping1"
          )
      - lang: PHP
        source: |-
          $resp = $client->security()->getRoleMapping([
              "name" => "mapping1",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_security/role_mapping/mapping1"'
      - lang: Java
        source: |
          client.security().getRoleMapping(g -> g
              .name("mapping1")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    post:
      tags:
      - security
      summary: 'Create or update role mappings

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb put\">PUT</span>\n                      <span class=\"operation-path\">/_security/role_mapping/{name}</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_security/role_mapping/{name}</span>\n
        \                     </div>\n                    \n\nRole mappings define
        which roles are assigned to each user.\nEach mapping has rules that identify
        users and a list of roles that are granted to those users.\nThe role mapping
        APIs are generally the preferred way to manage role mappings rather than using
        role mapping files. The create or update role mappings API cannot update role
        mappings that are defined in role mapping files.\n\nNOTE: This API does not
        create roles. Rather, it maps users to existing roles.\nRoles can be created
        by using the create or update roles API or roles files.\n\n**Role templates**\n\nThe
        most common use for role mappings is to create a mapping from a known value
        on the user to a fixed role name.\nFor example, all users in the `cn=admin,dc=example,dc=com`
        LDAP group should be given the superuser role in Elasticsearch.\nThe `roles`
        field is used for this purpose.\n\nFor more complex needs, it is possible
        to use Mustache templates to dynamically determine the names of the roles
        that should be granted to the user.\nThe `role_templates` field is used for
        this purpose.\n\nNOTE: To use role templates successfully, the relevant scripting
        feature must be enabled.\nOtherwise, all attempts to create a role mapping
        with role templates fail.\n\nAll of the user fields that are available in
        the role mapping rules are also available in the role templates.\nThus it
        is possible to assign a user to a role that reflects their username, their
        groups, or the name of the realm to which they authenticated.\n\nBy default
        a template is evaluated to produce a single string that is the name of the
        role which should be assigned to the user.\nIf the format of the template
        is set to \"json\" then the template is expected to produce a JSON string
        or an array of JSON strings for the role names.\n\n## Required authorization\n\n*
        Cluster privileges: `manage_security`\n"
      externalDocs:
        url: https://www.elastic.co/docs/deploy-manage/users-roles/cluster-or-deployment-auth/mapping-users-groups-to-roles
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/security-api-put-role-mapping.html
      operationId: security-put-role-mapping
      parameters:
      - "$ref": "#/components/parameters/security.put_role_mapping-name"
      - "$ref": "#/components/parameters/security.put_role_mapping-refresh"
      requestBody:
        "$ref": "#/components/requestBodies/security.put_role_mapping"
      responses:
        '200':
          "$ref": "#/components/responses/security.put_role_mapping-200"
      x-state: Generally available; Added in 5.5.0
      x-codeSamples:
      - lang: Console
        source: "POST /_security/role_mapping/mapping1\n{\n  \"roles\": [ \"user\"],\n
          \ \"enabled\": true, \n  \"rules\": {\n    \"field\" : { \"username\" :
          \"*\" }\n  },\n  \"metadata\" : { \n    \"version\" : 1\n  }\n}"
      - lang: Python
        source: |-
          resp = client.security.put_role_mapping(
              name="mapping1",
              roles=[
                  "user"
              ],
              enabled=True,
              rules={
                  "field": {
                      "username": "*"
                  }
              },
              metadata={
                  "version": 1
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.security.putRoleMapping({
            name: "mapping1",
            roles: ["user"],
            enabled: true,
            rules: {
              field: {
                username: "*",
              },
            },
            metadata: {
              version: 1,
            },
          });
      - lang: Ruby
        source: |-
          response = client.security.put_role_mapping(
            name: "mapping1",
            body: {
              "roles": [
                "user"
              ],
              "enabled": true,
              "rules": {
                "field": {
                  "username": "*"
                }
              },
              "metadata": {
                "version": 1
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->security()->putRoleMapping([
              "name" => "mapping1",
              "body" => [
                  "roles" => array(
                      "user",
                  ),
                  "enabled" => true,
                  "rules" => [
                      "field" => [
                          "username" => "*",
                      ],
                  ],
                  "metadata" => [
                      "version" => 1,
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"roles":["user"],"enabled":true,"rules":{"field":{"username":"*"}},"metadata":{"version":1}}''
          "$ELASTICSEARCH_URL/_security/role_mapping/mapping1"'
      - lang: Java
        source: |
          client.security().putRoleMapping(p -> p
              .enabled(true)
              .metadata("version", JsonData.fromJson("1"))
              .name("mapping1")
              .roles("user")
              .rules(r -> r
                  .field(NamedValue.of("username",List.of(FieldValue.of("*"))))
              )
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    delete:
      tags:
      - security
      summary: Delete role mappings
      description: |
        Role mappings define which roles are assigned to each user.
        The role mapping APIs are generally the preferred way to manage role mappings rather than using role mapping files.
        The delete role mappings API cannot remove role mappings that are defined in role mapping files.

        ## Required authorization

        * Cluster privileges: `manage_security`
      externalDocs:
        url: https://www.elastic.co/docs/deploy-manage/users-roles/cluster-or-deployment-auth/mapping-users-groups-to-roles
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/security-api-delete-role-mapping.html
      operationId: security-delete-role-mapping
      parameters:
      - in: path
        name: name
        description: |-
          The distinct name that identifies the role mapping.
          The name is used solely as an identifier to facilitate interaction via the API; it does not affect the behavior of the mapping in any way.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Name"
        style: simple
      - in: query
        name: refresh
        description: If `true` (the default) then refresh the affected shards to make
          this operation visible to search, if `wait_for` then wait for a refresh
          to make this operation visible to search, if `false` then do nothing with
          refreshes.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Refresh"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  found:
                    description: |-
                      If the mapping is successfully deleted, `found` is `true`.
                      Otherwise, `found` is `false`.
                    type: boolean
                required:
                - found
              examples:
                SecurityDeleteRoleMappingResponseExample1:
                  description: 'A successful response from `DELETE /_security/role_mapping/mapping1`.
                    If the mapping is successfully deleted, `found` is `true`.

                    '
                  value: |-
                    {
                      "found" : true
                    }
      x-state: Generally available; Added in 5.5.0
      x-codeSamples:
      - lang: Console
        source: 'DELETE /_security/role_mapping/mapping1

          '
      - lang: Python
        source: |-
          resp = client.security.delete_role_mapping(
              name="mapping1",
          )
      - lang: JavaScript
        source: |-
          const response = await client.security.deleteRoleMapping({
            name: "mapping1",
          });
      - lang: Ruby
        source: |-
          response = client.security.delete_role_mapping(
            name: "mapping1"
          )
      - lang: PHP
        source: |-
          $resp = $client->security()->deleteRoleMapping([
              "name" => "mapping1",
          ]);
      - lang: curl
        source: 'curl -X DELETE -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_security/role_mapping/mapping1"'
      - lang: Java
        source: |
          client.security().deleteRoleMapping(d -> d
              .name("mapping1")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_security/user/{username}":
    get:
      tags:
      - security
      summary: 'Get users

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_security/user</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_security/user/{username}</span>\n
        \                     </div>\n                    \n\nGet information about
        users in the native realm and built-in users.\n\n## Required authorization\n\n*
        Cluster privileges: `read_security`\n"
      operationId: security-get-user
      parameters:
      - "$ref": "#/components/parameters/security.get_user-username"
      - "$ref": "#/components/parameters/security.get_user-with_profile_uid"
      responses:
        '200':
          "$ref": "#/components/responses/security.get_user-200"
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'GET /_security/user/jacknich?with_profile_uid=true

          '
      - lang: Python
        source: |-
          resp = client.security.get_user(
              username="jacknich",
              with_profile_uid=True,
          )
      - lang: JavaScript
        source: |-
          const response = await client.security.getUser({
            username: "jacknich",
            with_profile_uid: "true",
          });
      - lang: Ruby
        source: |-
          response = client.security.get_user(
            username: "jacknich",
            with_profile_uid: "true"
          )
      - lang: PHP
        source: |-
          $resp = $client->security()->getUser([
              "username" => "jacknich",
              "with_profile_uid" => "true",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_security/user/jacknich?with_profile_uid=true"'
      - lang: Java
        source: |
          client.security().getUser(g -> g
              .username("jacknich")
              .withProfileUid(true)
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    post:
      tags:
      - security
      summary: 'Create or update users

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb put\">PUT</span>\n                      <span class=\"operation-path\">/_security/user/{username}</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_security/user/{username}</span>\n
        \                     </div>\n                    \n\nAdd and update users
        in the native realm.\nA password is required for adding a new user but is
        optional when updating an existing user.\nTo change a user's password without
        updating any other fields, use the change password API.\n\n## Required authorization\n\n*
        Cluster privileges: `manage_security`\n"
      operationId: security-put-user
      parameters:
      - "$ref": "#/components/parameters/security.put_user-username"
      - "$ref": "#/components/parameters/security.put_user-refresh"
      requestBody:
        "$ref": "#/components/requestBodies/security.put_user"
      responses:
        '200':
          "$ref": "#/components/responses/security.put_user-200"
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: |-
          POST /_security/user/jacknich
          {
            "password" : "l0ng-r4nd0m-p@ssw0rd",
            "roles" : [ "admin", "other_role1" ],
            "full_name" : "Jack Nicholson",
            "email" : "jacknich@example.com",
            "metadata" : {
              "intelligence" : 7
            }
          }
      - lang: Python
        source: |-
          resp = client.security.put_user(
              username="jacknich",
              password="l0ng-r4nd0m-p@ssw0rd",
              roles=[
                  "admin",
                  "other_role1"
              ],
              full_name="Jack Nicholson",
              email="jacknich@example.com",
              metadata={
                  "intelligence": 7
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.security.putUser({
            username: "jacknich",
            password: "l0ng-r4nd0m-p@ssw0rd",
            roles: ["admin", "other_role1"],
            full_name: "Jack Nicholson",
            email: "jacknich@example.com",
            metadata: {
              intelligence: 7,
            },
          });
      - lang: Ruby
        source: |-
          response = client.security.put_user(
            username: "jacknich",
            body: {
              "password": "l0ng-r4nd0m-p@ssw0rd",
              "roles": [
                "admin",
                "other_role1"
              ],
              "full_name": "Jack Nicholson",
              "email": "jacknich@example.com",
              "metadata": {
                "intelligence": 7
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->security()->putUser([
              "username" => "jacknich",
              "body" => [
                  "password" => "l0ng-r4nd0m-p@ssw0rd",
                  "roles" => array(
                      "admin",
                      "other_role1",
                  ),
                  "full_name" => "Jack Nicholson",
                  "email" => "jacknich@example.com",
                  "metadata" => [
                      "intelligence" => 7,
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"password":"l0ng-r4nd0m-p@ssw0rd","roles":["admin","other_role1"],"full_name":"Jack
          Nicholson","email":"jacknich@example.com","metadata":{"intelligence":7}}''
          "$ELASTICSEARCH_URL/_security/user/jacknich"'
      - lang: Java
        source: |
          client.security().putUser(p -> p
              .email("jacknich@example.com")
              .fullName("Jack Nicholson")
              .metadata("intelligence", JsonData.fromJson("7"))
              .password("l0ng-r4nd0m-p@ssw0rd")
              .roles(List.of("admin","other_role1"))
              .username("jacknich")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    delete:
      tags:
      - security
      summary: Delete users
      description: |
        Delete users from the native realm.

        ## Required authorization

        * Cluster privileges: `manage_security`
      operationId: security-delete-user
      parameters:
      - in: path
        name: username
        description: An identifier for the user.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Username"
        style: simple
      - in: query
        name: refresh
        description: If `true` (the default) then refresh the affected shards to make
          this operation visible to search, if `wait_for` then wait for a refresh
          to make this operation visible to search, if `false` then do nothing with
          refreshes.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Refresh"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  found:
                    description: |-
                      If the user is successfully deleted, the request returns `{"found": true}`.
                      Otherwise, `found` is set to `false`.
                    type: boolean
                required:
                - found
              examples:
                SecurityDeleteUserResponseExample1:
                  description: 'A successful response from `DELETE /_security/user/jacknich`.

                    '
                  value: |-
                    {
                      "found" : true
                    }
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'DELETE /_security/user/jacknich

          '
      - lang: Python
        source: |-
          resp = client.security.delete_user(
              username="jacknich",
          )
      - lang: JavaScript
        source: |-
          const response = await client.security.deleteUser({
            username: "jacknich",
          });
      - lang: Ruby
        source: |-
          response = client.security.delete_user(
            username: "jacknich"
          )
      - lang: PHP
        source: |-
          $resp = $client->security()->deleteUser([
              "username" => "jacknich",
          ]);
      - lang: curl
        source: 'curl -X DELETE -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_security/user/jacknich"'
      - lang: Java
        source: |
          client.security().deleteUser(d -> d
              .username("jacknich")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_security/user/{username}/_disable":
    post:
      tags:
      - security
      summary: 'Disable users

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb put\">PUT</span>\n                      <span class=\"operation-path\">/_security/user/{username}/_disable</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_security/user/{username}/_disable</span>\n
        \                     </div>\n                    \n\nDisable users in the
        native realm.\nBy default, when you create users, they are enabled.\nYou can
        use this API to revoke a user's access to Elasticsearch.\n\n## Required authorization\n\n*
        Cluster privileges: `manage_security`\n"
      operationId: security-disable-user
      parameters:
      - "$ref": "#/components/parameters/security.disable_user-username"
      - "$ref": "#/components/parameters/security.disable_user-refresh"
      responses:
        '200':
          "$ref": "#/components/responses/security.disable_user-200"
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'PUT /_security/user/jacknich/_disable

          '
      - lang: Python
        source: |-
          resp = client.security.disable_user(
              username="jacknich",
          )
      - lang: JavaScript
        source: |-
          const response = await client.security.disableUser({
            username: "jacknich",
          });
      - lang: Ruby
        source: |-
          response = client.security.disable_user(
            username: "jacknich"
          )
      - lang: PHP
        source: |-
          $resp = $client->security()->disableUser([
              "username" => "jacknich",
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_security/user/jacknich/_disable"'
      - lang: Java
        source: |
          client.security().disableUser(d -> d
              .username("jacknich")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_security/profile/{uid}/_disable":
    post:
      tags:
      - security
      summary: 'Disable a user profile

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb put\">PUT</span>\n                      <span class=\"operation-path\">/_security/profile/{uid}/_disable</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_security/profile/{uid}/_disable</span>\n
        \                     </div>\n                    \n\nDisable user profiles
        so that they are not visible in user profile searches.\n\nNOTE: The user profile
        feature is designed only for use by Kibana and Elastic's Observability, Enterprise
        Search, and Elastic Security solutions.\nIndividual users and external applications
        should not call this API directly.\nElastic reserves the right to change or
        remove this feature in future releases without prior notice.\n\nWhen you activate
        a user profile, its automatically enabled and visible in user profile searches.
        You can use the disable user profile API to disable a user profile so it’s
        not visible in these searches.\nTo re-enable a disabled user profile, use
        the enable user profile API .\n\n## Required authorization\n\n* Cluster privileges:
        `manage_user_profile`\n"
      operationId: security-disable-user-profile
      parameters:
      - "$ref": "#/components/parameters/security.disable_user_profile-uid"
      - "$ref": "#/components/parameters/security.disable_user_profile-refresh"
      responses:
        '200':
          "$ref": "#/components/responses/security.disable_user_profile-200"
      x-state: Generally available; Added in 8.2.0
      x-codeSamples:
      - lang: Console
        source: 'POST /_security/profile/u_79HkWkwmnBH5gqFKwoxggWPjEBOur1zLPXQPEl1VBW0_0/_disable

          '
      - lang: Python
        source: |-
          resp = client.security.disable_user_profile(
              uid="u_79HkWkwmnBH5gqFKwoxggWPjEBOur1zLPXQPEl1VBW0_0",
          )
      - lang: JavaScript
        source: |-
          const response = await client.security.disableUserProfile({
            uid: "u_79HkWkwmnBH5gqFKwoxggWPjEBOur1zLPXQPEl1VBW0_0",
          });
      - lang: Ruby
        source: |-
          response = client.security.disable_user_profile(
            uid: "u_79HkWkwmnBH5gqFKwoxggWPjEBOur1zLPXQPEl1VBW0_0"
          )
      - lang: PHP
        source: |-
          $resp = $client->security()->disableUserProfile([
              "uid" => "u_79HkWkwmnBH5gqFKwoxggWPjEBOur1zLPXQPEl1VBW0_0",
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_security/profile/u_79HkWkwmnBH5gqFKwoxggWPjEBOur1zLPXQPEl1VBW0_0/_disable"'
      - lang: Java
        source: |
          client.security().disableUserProfile(d -> d
              .uid("u_79HkWkwmnBH5gqFKwoxggWPjEBOur1zLPXQPEl1VBW0_0")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_security/user/{username}/_enable":
    post:
      tags:
      - security
      summary: 'Enable users

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb put\">PUT</span>\n                      <span class=\"operation-path\">/_security/user/{username}/_enable</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_security/user/{username}/_enable</span>\n
        \                     </div>\n                    \n\nEnable users in the
        native realm.\nBy default, when you create users, they are enabled.\n\n##
        Required authorization\n\n* Cluster privileges: `manage_security`\n"
      operationId: security-enable-user
      parameters:
      - "$ref": "#/components/parameters/security.enable_user-username"
      - "$ref": "#/components/parameters/security.enable_user-refresh"
      responses:
        '200':
          "$ref": "#/components/responses/security.enable_user-200"
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'PUT _security/user/logstash_system/_enable

          '
      - lang: Python
        source: |-
          resp = client.security.enable_user(
              username="logstash_system",
          )
      - lang: JavaScript
        source: |-
          const response = await client.security.enableUser({
            username: "logstash_system",
          });
      - lang: Ruby
        source: |-
          response = client.security.enable_user(
            username: "logstash_system"
          )
      - lang: PHP
        source: |-
          $resp = $client->security()->enableUser([
              "username" => "logstash_system",
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_security/user/logstash_system/_enable"'
      - lang: Java
        source: |
          client.security().enableUser(e -> e
              .username("logstash_system")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_security/profile/{uid}/_enable":
    post:
      tags:
      - security
      summary: 'Enable a user profile

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb put\">PUT</span>\n                      <span class=\"operation-path\">/_security/profile/{uid}/_enable</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_security/profile/{uid}/_enable</span>\n
        \                     </div>\n                    \n\nEnable user profiles
        to make them visible in user profile searches.\n\nNOTE: The user profile feature
        is designed only for use by Kibana and Elastic's Observability, Enterprise
        Search, and Elastic Security solutions.\nIndividual users and external applications
        should not call this API directly.\nElastic reserves the right to change or
        remove this feature in future releases without prior notice.\n\nWhen you activate
        a user profile, it's automatically enabled and visible in user profile searches.\nIf
        you later disable the user profile, you can use the enable user profile API
        to make the profile visible in these searches again.\n\n## Required authorization\n\n*
        Cluster privileges: `manage_user_profile`\n"
      operationId: security-enable-user-profile
      parameters:
      - "$ref": "#/components/parameters/security.enable_user_profile-uid"
      - "$ref": "#/components/parameters/security.enable_user_profile-refresh"
      responses:
        '200':
          "$ref": "#/components/responses/security.enable_user_profile-200"
      x-state: Generally available; Added in 8.2.0
      x-codeSamples:
      - lang: Console
        source: 'POST /_security/profile/u_79HkWkwmnBH5gqFKwoxggWPjEBOur1zLPXQPEl1VBW0_0/_enable

          '
      - lang: Python
        source: |-
          resp = client.security.enable_user_profile(
              uid="u_79HkWkwmnBH5gqFKwoxggWPjEBOur1zLPXQPEl1VBW0_0",
          )
      - lang: JavaScript
        source: |-
          const response = await client.security.enableUserProfile({
            uid: "u_79HkWkwmnBH5gqFKwoxggWPjEBOur1zLPXQPEl1VBW0_0",
          });
      - lang: Ruby
        source: |-
          response = client.security.enable_user_profile(
            uid: "u_79HkWkwmnBH5gqFKwoxggWPjEBOur1zLPXQPEl1VBW0_0"
          )
      - lang: PHP
        source: |-
          $resp = $client->security()->enableUserProfile([
              "uid" => "u_79HkWkwmnBH5gqFKwoxggWPjEBOur1zLPXQPEl1VBW0_0",
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_security/profile/u_79HkWkwmnBH5gqFKwoxggWPjEBOur1zLPXQPEl1VBW0_0/_enable"'
      - lang: Java
        source: |
          client.security().enableUserProfile(e -> e
              .uid("u_79HkWkwmnBH5gqFKwoxggWPjEBOur1zLPXQPEl1VBW0_0")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_security/enroll/kibana":
    get:
      tags:
      - security
      summary: Enroll Kibana
      description: |-
        Enable a Kibana instance to configure itself for communication with a secured Elasticsearch cluster.

        NOTE: This API is currently intended for internal use only by Kibana.
        Kibana uses this API internally to configure itself for communications with an Elasticsearch cluster that already has security features enabled.
      operationId: security-enroll-kibana
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  token:
                    allOf:
                    - "$ref": "#/components/schemas/security.enroll_kibana.Token"
                  http_ca:
                    description: |-
                      The CA certificate used to sign the node certificates that Elasticsearch uses for TLS on the HTTP layer.
                      The certificate is returned as a Base64 encoded string of the ASN.1 DER encoding of the certificate.
                    type: string
                required:
                - token
                - http_ca
              examples:
                EnrollKibanaResponseExample1:
                  description: A successful response from `GET /_security/enroll/kibana`.
                  value: "{\n  \"token\" : {\n    \"name\" : \"enroll-process-token-1629123923000\",
                    \n    \"value\": \"AAEAAWVsYXN0aWM...vZmxlZXQtc2VydmVyL3Rva2VuMTo3TFdaSDZ\"
                    \n  },\n  \"http_ca\" : \"MIIJlAIBAzVoGCSqGSIb3...vsDfsA3UZBAjEPfhubpQysAICAA=\",
                    \n}"
      x-state: Generally available; Added in 8.0.0
      x-codeSamples:
      - lang: Console
        source: 'GET /_security/enroll/kibana

          '
      - lang: Python
        source: resp = client.security.enroll_kibana()
      - lang: JavaScript
        source: const response = await client.security.enrollKibana();
      - lang: Ruby
        source: response = client.security.enroll_kibana
      - lang: PHP
        source: "$resp = $client->security()->enrollKibana();"
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_security/enroll/kibana"'
      - lang: Java
        source: 'client.security().enrollKibana();

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_security/enroll/node":
    get:
      tags:
      - security
      summary: Enroll a node
      description: |-
        Enroll a new node to allow it to join an existing cluster with security features enabled.

        The response contains all the necessary information for the joining node to bootstrap discovery and security related settings so that it can successfully join the cluster.
        The response contains key and certificate material that allows the caller to generate valid signed certificates for the HTTP layer of all nodes in the cluster.
      operationId: security-enroll-node
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  http_ca_key:
                    description: The CA private key that can be used by the new node
                      in order to sign its certificate for the HTTP layer, as a Base64
                      encoded string of the ASN.1 DER encoding of the key.
                    type: string
                  http_ca_cert:
                    description: The CA certificate that can be used by the new node
                      in order to sign its certificate for the HTTP layer, as a Base64
                      encoded string of the ASN.1 DER encoding of the certificate.
                    type: string
                  transport_ca_cert:
                    description: The CA certificate that is used to sign the TLS certificate
                      for the transport layer, as a Base64 encoded string of the ASN.1
                      DER encoding of the certificate.
                    type: string
                  transport_key:
                    description: The private key that the node can use for TLS for
                      its transport layer, as a Base64 encoded string of the ASN.1
                      DER encoding of the key.
                    type: string
                  transport_cert:
                    description: The certificate that the node can use for TLS for
                      its transport layer, as a Base64 encoded string of the ASN.1
                      DER encoding of the certificate.
                    type: string
                  nodes_addresses:
                    description: A list of transport addresses in the form of `host:port`
                      for the nodes that are already members of the cluster.
                    type: array
                    items:
                      type: string
                required:
                - http_ca_key
                - http_ca_cert
                - transport_ca_cert
                - transport_key
                - transport_cert
                - nodes_addresses
              examples:
                EnrollNodeResponseExample1:
                  description: A successful response from `PGET /security/enroll/node`.
                  value: "{\n  \"http_ca_key\" : \"MIIJlAIBAzCCCVoGCSqGSIb3DQEHAaCCCUsEgglHMIIJQzCCA98GCSqGSIb3DQ....vsDfsA3UZBAjEPfhubpQysAICCAA=\",
                    \n  \"http_ca_cert\" : \"MIIJlAIBAzCCCVoGCSqGSIb3DQEHAaCCCUsEgglHMIIJQzCCA98GCSqGSIb3DQ....vsDfsA3UZBAjEPfhubpQysAICCAA=\",
                    \n  \"transport_ca_cert\" : \"MIIJlAIBAzCCCVoGCSqGSIb3DQEHAaCCCUsEgglHMIIJQzCCA98GCSqG....vsDfsA3UZBAjEPfhubpQysAICCAA=\",
                    \n  \"transport_key\" : \"MIIEJgIBAzCCA98GCSqGSIb3DQEHAaCCA9AEggPMMIIDyDCCA8QGCSqGSIb3....YuEiOXvqZ6jxuVSQ0CAwGGoA==\",
                    \n  \"transport_cert\" : \"MIIEJgIBAzCCA98GCSqGSIb3DQEHAaCCA9AEggPMMIIDyDCCA8QGCSqGSIb3....YuEiOXvqZ6jxuVSQ0CAwGGoA==\",
                    \n  \"nodes_addresses\" : [                          \n    \"192.168.1.2:9300\"\n
                    \ ]\n}"
      x-state: Generally available; Added in 8.0.0
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_security/privilege/_builtin":
    get:
      tags:
      - security
      summary: Get builtin privileges
      description: |
        Get the list of cluster privileges and index privileges that are available in this version of Elasticsearch.

        ## Required authorization

        * Cluster privileges: `manage_security`
      externalDocs:
        url: https://www.elastic.co/docs/reference/elasticsearch/security-privileges
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/security-api-get-builtin-privileges.html
      operationId: security-get-builtin-privileges
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  cluster:
                    description: The list of cluster privileges that are understood
                      by this version of Elasticsearch.
                    type: array
                    items:
                      "$ref": "#/components/schemas/security._types.ClusterPrivilege"
                  index:
                    description: The list of index privileges that are understood
                      by this version of Elasticsearch.
                    type: array
                    items:
                      "$ref": "#/components/schemas/_types.IndexName"
                  remote_cluster:
                    description: The list of remote_cluster privileges that are understood
                      by this version of Elasticsearch.
                    x-state: Generally available; Added in 8.15.0
                    type: array
                    items:
                      "$ref": "#/components/schemas/security._types.RemoteClusterPrivilege"
                required:
                - cluster
                - index
                - remote_cluster
              examples:
                SecurityGetBuiltinPrivilegesResponseExample1:
                  description: A successful response from `GET /_security/privilege/_builtin`.
                  value: |-
                    {
                      "cluster" : [
                        "all",
                        "cancel_task",
                        "create_snapshot",
                        "cross_cluster_replication",
                        "cross_cluster_search",
                        "delegate_pki",
                        "grant_api_key",
                        "manage",
                        "manage_api_key",
                        "manage_autoscaling",
                        "manage_behavioral_analytics",
                        "manage_ccr",
                        "manage_connector",
                        "manage_data_frame_transforms",
                        "manage_data_stream_global_retention",
                        "manage_enrich",
                        "manage_ilm",
                        "manage_index_templates",
                        "manage_inference",
                        "manage_ingest_pipelines",
                        "manage_logstash_pipelines",
                        "manage_ml",
                        "manage_oidc",
                        "manage_own_api_key",
                        "manage_pipeline",
                        "manage_rollup",
                        "manage_saml",
                        "manage_search_application",
                        "manage_search_query_rules",
                        "manage_search_synonyms",
                        "manage_security",
                        "manage_service_account",
                        "manage_slm",
                        "manage_token",
                        "manage_transform",
                        "manage_user_profile",
                        "manage_watcher",
                        "monitor",
                        "monitor_connector",
                        "monitor_data_frame_transforms",
                        "monitor_data_stream_global_retention",
                        "monitor_enrich",
                        "monitor_inference",
                        "monitor_ml",
                        "monitor_rollup",
                        "monitor_snapshot",
                        "monitor_stats",
                        "monitor_text_structure",
                        "monitor_transform",
                        "monitor_watcher",
                        "none",
                        "post_behavioral_analytics_event",
                        "read_ccr",
                        "read_connector_secrets",
                        "read_fleet_secrets",
                        "read_ilm",
                        "read_pipeline",
                        "read_security",
                        "read_slm",
                        "transport_client",
                        "write_connector_secrets",
                        "write_fleet_secrets"
                      ],
                      "index" : [
                        "all",
                        "auto_configure",
                        "create",
                        "create_doc",
                        "create_index",
                        "cross_cluster_replication",
                        "cross_cluster_replication_internal",
                        "delete",
                        "delete_index",
                        "index",
                        "maintenance",
                        "manage",
                        "manage_data_stream_lifecycle",
                        "manage_follow_index",
                        "manage_ilm",
                        "manage_leader_index",
                        "monitor",
                        "none",
                        "read",
                        "read_cross_cluster",
                        "view_index_metadata",
                        "write"
                      ],
                      "remote_cluster" : [
                        "monitor_enrich",
                        "monitor_stats"
                      ]
                    }
      x-state: Generally available; Added in 7.3.0
      x-codeSamples:
      - lang: Console
        source: 'GET /_security/privilege/_builtin

          '
      - lang: Python
        source: resp = client.security.get_builtin_privileges()
      - lang: JavaScript
        source: const response = await client.security.getBuiltinPrivileges();
      - lang: Ruby
        source: response = client.security.get_builtin_privileges
      - lang: PHP
        source: "$resp = $client->security()->getBuiltinPrivileges();"
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_security/privilege/_builtin"'
      - lang: Java
        source: 'client.security().getBuiltinPrivileges();

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_security/service/{namespace}/{service}":
    get:
      tags:
      - security
      summary: 'Get service accounts

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_security/service</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_security/service/{namespace}</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_security/service/{namespace}/{service}</span>\n
        \                     </div>\n                    \n\nGet a list of service
        accounts that match the provided path parameters.\n\nNOTE: Currently, only
        the `elastic/fleet-server` service account is available.\n\n## Required authorization\n\n*
        Cluster privileges: `manage_service_account`\n"
      externalDocs:
        url: https://www.elastic.co/docs/deploy-manage/users-roles/cluster-or-deployment-auth/service-accounts
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/security-api-get-service-accounts.html
      operationId: security-get-service-accounts
      parameters:
      - "$ref": "#/components/parameters/security.get_service_accounts-namespace"
      - "$ref": "#/components/parameters/security.get_service_accounts-service"
      responses:
        '200':
          "$ref": "#/components/responses/security.get_service_accounts-200"
      x-state: Generally available; Added in 7.13.0
      x-codeSamples:
      - lang: Console
        source: 'GET /_security/service/elastic/fleet-server

          '
      - lang: Python
        source: |-
          resp = client.security.get_service_accounts(
              namespace="elastic",
              service="fleet-server",
          )
      - lang: JavaScript
        source: |-
          const response = await client.security.getServiceAccounts({
            namespace: "elastic",
            service: "fleet-server",
          });
      - lang: Ruby
        source: |-
          response = client.security.get_service_accounts(
            namespace: "elastic",
            service: "fleet-server"
          )
      - lang: PHP
        source: |-
          $resp = $client->security()->getServiceAccounts([
              "namespace" => "elastic",
              "service" => "fleet-server",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_security/service/elastic/fleet-server"'
      - lang: Java
        source: |
          client.security().getServiceAccounts(g -> g
              .namespace("elastic")
              .service("fleet-server")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_security/service/{namespace}/{service}/credential":
    get:
      tags:
      - security
      summary: Get service account credentials
      description: |
        To use this API, you must have at least the `read_security` cluster privilege (or a greater privilege such as `manage_service_account` or `manage_security`).

        The response includes service account tokens that were created with the create service account tokens API as well as file-backed tokens from all nodes of the cluster.

        NOTE: For tokens backed by the `service_tokens` file, the API collects them from all nodes of the cluster.
        Tokens with the same name from different nodes are assumed to be the same token and are only counted once towards the total number of service tokens.

        ## Required authorization

        * Cluster privileges: `read_security`
      externalDocs:
        url: https://www.elastic.co/docs/deploy-manage/users-roles/cluster-or-deployment-auth/service-accounts
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/security-api-get-service-credentials.html
      operationId: security-get-service-credentials
      parameters:
      - in: path
        name: namespace
        description: The name of the namespace.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Namespace"
        style: simple
      - in: path
        name: service
        description: The service name.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Name"
        style: simple
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  service_account:
                    type: string
                  count:
                    type: number
                  tokens:
                    type: object
                    additionalProperties:
                      "$ref": "#/components/schemas/_types.Metadata"
                  nodes_credentials:
                    description: Service account credentials collected from all nodes
                      of the cluster.
                    allOf:
                    - "$ref": "#/components/schemas/security.get_service_credentials.NodesCredentials"
                required:
                - service_account
                - count
                - tokens
                - nodes_credentials
              examples:
                GetServiceCredentialsResponseExample1:
                  description: 'A successful response from `GET /_security/service/elastic/fleet-server/credential`.
                    The response contains all credentials for the `elastic/fleet-server`
                    service account.

                    '
                  value: "{\n  \"service_account\": \"elastic/fleet-server\",\n  \"count\":
                    3,\n  \"tokens\": {\n    \"token1\": {},        \n    \"token42\":
                    {}        \n  },\n  \"nodes_credentials\": { \n    \"_nodes\":
                    {          \n      \"total\": 3,\n      \"successful\": 3,\n      \"failed\":
                    0\n    },\n    \"file_tokens\": {      \n      \"my-token\": {\n
                    \       \"nodes\": [ \"node0\", \"node1\" ] \n      }\n    }\n
                    \ }\n}"
      x-state: Generally available; Added in 7.13.0
      x-codeSamples:
      - lang: Console
        source: 'GET /_security/service/elastic/fleet-server/credential

          '
      - lang: Python
        source: |-
          resp = client.security.get_service_credentials(
              namespace="elastic",
              service="fleet-server",
          )
      - lang: JavaScript
        source: |-
          const response = await client.security.getServiceCredentials({
            namespace: "elastic",
            service: "fleet-server",
          });
      - lang: Ruby
        source: |-
          response = client.security.get_service_credentials(
            namespace: "elastic",
            service: "fleet-server"
          )
      - lang: PHP
        source: |-
          $resp = $client->security()->getServiceCredentials([
              "namespace" => "elastic",
              "service" => "fleet-server",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_security/service/elastic/fleet-server/credential"'
      - lang: Java
        source: |
          client.security().getServiceCredentials(g -> g
              .namespace("elastic")
              .service("fleet-server")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_security/settings":
    get:
      tags:
      - security
      summary: Get security index settings
      description: |
        Get the user-configurable settings for the security internal index (`.security` and associated indices).
        Only a subset of the index settings — those that are user-configurable—will be shown.
        This includes:

        * `index.auto_expand_replicas`
        * `index.number_of_replicas`

        ## Required authorization

        * Cluster privileges: `read_security`
      operationId: security-get-settings
      parameters:
      - in: query
        name: master_timeout
        description: |-
          Period to wait for a connection to the master node.
          If no response is received before the timeout expires, the request fails and returns an error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  security:
                    description: Settings for the index used for most security configuration,
                      including native realm users and roles configured with the API.
                    allOf:
                    - "$ref": "#/components/schemas/security._types.SecuritySettings"
                  security-profile:
                    description: Settings for the index used to store profile information.
                    allOf:
                    - "$ref": "#/components/schemas/security._types.SecuritySettings"
                  security-tokens:
                    description: Settings for the index used to store tokens.
                    allOf:
                    - "$ref": "#/components/schemas/security._types.SecuritySettings"
                required:
                - security
                - security-profile
                - security-tokens
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'GET /_security/settings

          '
      - lang: Python
        source: resp = client.security.get_settings()
      - lang: JavaScript
        source: const response = await client.security.getSettings();
      - lang: Ruby
        source: response = client.security.get_settings
      - lang: PHP
        source: "$resp = $client->security()->getSettings();"
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_security/settings"'
      - lang: Java
        source: 'client.security().getSettings(g -> g);

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    put:
      tags:
      - security
      summary: Update security index settings
      description: |
        Update the user-configurable settings for the security internal index (`.security` and associated indices). Only a subset of settings are allowed to be modified. This includes `index.auto_expand_replicas` and `index.number_of_replicas`.

        NOTE: If `index.auto_expand_replicas` is set, `index.number_of_replicas` will be ignored during updates.

        If a specific index is not in use on the system and settings are provided for it, the request will be rejected.
        This API does not yet support configuring the settings for indices before they are in use.

        ## Required authorization

        * Cluster privileges: `manage_security`
      operationId: security-update-settings
      parameters:
      - in: query
        name: master_timeout
        description: |-
          The period to wait for a connection to the master node.
          If no response is received before the timeout expires, the request fails and returns an error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: timeout
        description: |-
          The period to wait for a response.
          If no response is received before the timeout expires, the request fails and returns an error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                security:
                  description: Settings for the index used for most security configuration,
                    including native realm users and roles configured with the API.
                  allOf:
                  - "$ref": "#/components/schemas/security._types.SecuritySettings"
                security-profile:
                  description: Settings for the index used to store profile information.
                  allOf:
                  - "$ref": "#/components/schemas/security._types.SecuritySettings"
                security-tokens:
                  description: Settings for the index used to store tokens.
                  allOf:
                  - "$ref": "#/components/schemas/security._types.SecuritySettings"
            examples:
              SecurityUpdateSettingsRequestExample1:
                description: Run `PUT /_security/settings` to modify the security
                  settings.
                value: |-
                  {
                      "security": {
                          "index.auto_expand_replicas": "0-all"
                      },
                      "security-tokens": {
                          "index.auto_expand_replicas": "0-all"
                      },
                      "security-profile": {
                          "index.auto_expand_replicas": "0-all"
                      }
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  acknowledged:
                    type: boolean
                required:
                - acknowledged
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: |-
          PUT /_security/settings
          {
              "security": {
                  "index.auto_expand_replicas": "0-all"
              },
              "security-tokens": {
                  "index.auto_expand_replicas": "0-all"
              },
              "security-profile": {
                  "index.auto_expand_replicas": "0-all"
              }
          }
      - lang: Python
        source: |-
          resp = client.security.update_settings(
              security={
                  "index.auto_expand_replicas": "0-all"
              },
              security-tokens={
                  "index.auto_expand_replicas": "0-all"
              },
              security-profile={
                  "index.auto_expand_replicas": "0-all"
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.security.updateSettings({
            security: {
              "index.auto_expand_replicas": "0-all",
            },
            "security-tokens": {
              "index.auto_expand_replicas": "0-all",
            },
            "security-profile": {
              "index.auto_expand_replicas": "0-all",
            },
          });
      - lang: Ruby
        source: |-
          response = client.security.update_settings(
            body: {
              "security": {
                "index.auto_expand_replicas": "0-all"
              },
              "security-tokens": {
                "index.auto_expand_replicas": "0-all"
              },
              "security-profile": {
                "index.auto_expand_replicas": "0-all"
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->security()->updateSettings([
              "body" => [
                  "security" => [
                      "index.auto_expand_replicas" => "0-all",
                  ],
                  "security-tokens" => [
                      "index.auto_expand_replicas" => "0-all",
                  ],
                  "security-profile" => [
                      "index.auto_expand_replicas" => "0-all",
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"security":{"index.auto_expand_replicas":"0-all"},"security-tokens":{"index.auto_expand_replicas":"0-all"},"security-profile":{"index.auto_expand_replicas":"0-all"}}''
          "$ELASTICSEARCH_URL/_security/settings"'
      - lang: Java
        source: |
          client.security().updateSettings(u -> u
              .security(s -> s)
              .securityProfile(s -> s)
              .securityTokens(s -> s)
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_security/stats":
    get:
      tags:
      - security
      summary: Get security stats
      description: |
        Gather security usage statistics from all node(s) within the cluster.

        ## Required authorization

        * Cluster privileges: `monitor`
      operationId: security-get-stats
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  nodes:
                    description: A map of node IDs to security statistics for that
                      node.
                    type: object
                    additionalProperties:
                      "$ref": "#/components/schemas/security._types.NodeSecurityStats"
                required:
                - nodes
              examples:
                SecurityStatsExample1:
                  description: A successful response from `GET /_security/stats`.
                  value: |-
                    {
                      "nodes": {
                        "CLeCBfYETO2mQ1R2Il5-SA": {
                          "roles": {
                            "dls": {
                              "bit_set_cache": {
                                "count": 1,
                                "memory": "16b",
                                "memory_in_bytes": 16,
                                "hits": 212,
                                "misses": 1,
                                "evictions": 0,
                                "hits_time_in_millis": 5,
                                "misses_time_in_millis": 0
                              }
                            }
                          }
                        }
                      }
                    }
      x-state: Generally available; Added in 9.2.0
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_security/oauth2/token":
    post:
      tags:
      - security
      summary: Get a token
      description: |
        Create a bearer token for access without requiring basic authentication.
        The tokens are created by the Elasticsearch Token Service, which is automatically enabled when you configure TLS on the HTTP interface.
        Alternatively, you can explicitly enable the `xpack.security.authc.token.enabled` setting.
        When you are running in production mode, a bootstrap check prevents you from enabling the token service unless you also enable TLS on the HTTP interface.

        The get token API takes the same parameters as a typical OAuth 2.0 token API except for the use of a JSON request body.

        A successful get token API call returns a JSON structure that contains the access token, the amount of time (seconds) that the token expires in, the type, and the scope if available.

        The tokens returned by the get token API have a finite period of time for which they are valid and after that time period, they can no longer be used.
        That time period is defined by the `xpack.security.authc.token.timeout` setting.
        If you want to invalidate a token immediately, you can do so by using the invalidate token API.

        ## Required authorization

        * Cluster privileges: `manage_token`
      externalDocs:
        url: https://www.elastic.co/docs/deploy-manage/security/set-up-basic-security-plus-https#encrypt-http-communication
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/security-api-get-token.html
      operationId: security-get-token
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                grant_type:
                  description: |+
                    The type of grant.
                    Supported grant types are: `password`, `_kerberos`, `client_credentials`, and `refresh_token`.

                    Supported values include:
                      - `password`: This grant type implements the Resource Owner Password Credentials Grant of OAuth2.
                    In this grant, a trusted client exchanges the end user's credentials for an access token and (possibly) a refresh token.
                    The request needs to be made by an authenticated user but happens on behalf of another authenticated user (the one whose credentials are passed as request parameters).
                    This grant type is not suitable or designed for the self-service user creation of tokens.
                      - `client_credentials`: This grant type implements the Client Credentials Grant of OAuth2.
                    It is geared for machine to machine communication and is not suitable or designed for the self-service user creation of tokens.
                    It generates only access tokens that cannot be refreshed.
                    The premise is that the entity that uses `client_credentials` has constant access to a set of (client, not end-user) credentials and can authenticate itself at will.
                      - `_kerberos`: This grant type is supported internally and implements SPNEGO based Kerberos support.
                    The `_kerberos` grant type may change from version to version.
                      - `refresh_token`: This grant type implements the Refresh Token Grant of OAuth2.
                    In this grant a user exchanges a previously issued refresh token for a new access token and a new refresh token.

                  allOf:
                  - "$ref": "#/components/schemas/security.get_token.AccessTokenGrantType"
                scope:
                  description: |-
                    The scope of the token.
                    Currently tokens are only issued for a scope of FULL regardless of the value sent with the request.
                  type: string
                password:
                  description: |-
                    The user's password.
                    If you specify the `password` grant type, this parameter is required.
                    This parameter is not valid with any other supported grant type.
                  allOf:
                  - "$ref": "#/components/schemas/_types.Password"
                kerberos_ticket:
                  description: |-
                    The base64 encoded kerberos ticket.
                    If you specify the `_kerberos` grant type, this parameter is required.
                    This parameter is not valid with any other supported grant type.
                  type: string
                refresh_token:
                  description: |-
                    The string that was returned when you created the token, which enables you to extend its life.
                    If you specify the `refresh_token` grant type, this parameter is required.
                    This parameter is not valid with any other supported grant type.
                  type: string
                username:
                  description: |-
                    The username that identifies the user.
                    If you specify the `password` grant type, this parameter is required.
                    This parameter is not valid with any other supported grant type.
                  allOf:
                  - "$ref": "#/components/schemas/_types.Username"
            examples:
              GetUserAccessTokenRequestExample1:
                summary: A client_credentials grant type example
                description: 'Run `POST /_security/oauth2/token` to obtain a token
                  using the `client_credentials` grant type, which simply creates
                  a token as the authenticated user.

                  '
                value: |-
                  {
                    "grant_type" : "client_credentials"
                  }
              GetUserAccessTokenRequestExample2:
                summary: A password grant type example
                description: 'Run `POST /_security/oauth2/token` to obtain a token
                  for the `test_admin` user using the password grant type. This request
                  needs to be made by an authenticated user with sufficient privileges
                  that may or may not be the same as the one whose username is passed
                  in the `username` parameter.

                  '
                value: |-
                  {
                    "grant_type" : "password",
                    "username" : "test_admin",
                    "password" : "x-pack-test-password"
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  access_token:
                    type: string
                  expires_in:
                    type: number
                  scope:
                    type: string
                  type:
                    type: string
                  refresh_token:
                    type: string
                  kerberos_authentication_response_token:
                    type: string
                  authentication:
                    allOf:
                    - "$ref": "#/components/schemas/security.get_token.AuthenticatedUser"
                required:
                - access_token
                - expires_in
                - type
                - authentication
              examples:
                GetUserAccessTokenResponseExample1:
                  summary: A client_credentials grant type example
                  description: A successful response from `POST /_security/oauth2/token`.
                  value: |-
                    {
                      "access_token" : "dGhpcyBpcyBub3QgYSByZWFsIHRva2VuIGJ1dCBpdCBpcyBvbmx5IHRlc3QgZGF0YS4gZG8gbm90IHRyeSB0byByZWFkIHRva2VuIQ==",
                      "type" : "Bearer",
                      "expires_in" : 1200,
                      "authentication" : {
                        "username" : "test_admin",
                        "roles" : [
                          "superuser"
                        ],
                        "full_name" : null,
                        "email" : null,
                        "metadata" : { },
                        "enabled" : true,
                        "authentication_realm" : {
                          "name" : "file",
                          "type" : "file"
                        },
                        "lookup_realm" : {
                          "name" : "file",
                          "type" : "file"
                        },
                        "authentication_type" : "realm"
                      }
                    }
                GetUserAccessTokenResponseExample2:
                  summary: A password grant type example
                  description: A successful response from `POST /_security/oauth2/token`.
                  value: |-
                    {
                      "access_token" : "dGhpcyBpcyBub3QgYSByZWFsIHRva2VuIGJ1dCBpdCBpcyBvbmx5IHRlc3QgZGF0YS4gZG8gbm90IHRyeSB0byByZWFkIHRva2VuIQ==",
                      "type" : "Bearer",
                      "expires_in" : 1200,
                      "authentication" : {
                        "username" : "test_admin",
                        "roles" : [
                          "superuser"
                        ],
                        "full_name" : null,
                        "email" : null,
                        "metadata" : { },
                        "enabled" : true,
                        "authentication_realm" : {
                          "name" : "file",
                          "type" : "file"
                        },
                        "lookup_realm" : {
                          "name" : "file",
                          "type" : "file"
                        },
                        "authentication_type" : "realm"
                      }
                    }
      x-state: Generally available; Added in 5.5.0
      x-codeSamples:
      - lang: Console
        source: |-
          POST /_security/oauth2/token
          {
            "grant_type" : "client_credentials"
          }
      - lang: Python
        source: |-
          resp = client.security.get_token(
              grant_type="client_credentials",
          )
      - lang: JavaScript
        source: |-
          const response = await client.security.getToken({
            grant_type: "client_credentials",
          });
      - lang: Ruby
        source: |-
          response = client.security.get_token(
            body: {
              "grant_type": "client_credentials"
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->security()->getToken([
              "body" => [
                  "grant_type" => "client_credentials",
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"grant_type":"client_credentials"}'' "$ELASTICSEARCH_URL/_security/oauth2/token"'
      - lang: Java
        source: |
          client.security().getToken(g -> g
              .grantType(AccessTokenGrantType.ClientCredentials)
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    delete:
      tags:
      - security
      summary: Invalidate a token
      description: |-
        The access tokens returned by the get token API have a finite period of time for which they are valid.
        After that time period, they can no longer be used.
        The time period is defined by the `xpack.security.authc.token.timeout` setting.

        The refresh tokens returned by the get token API are only valid for 24 hours.
        They can also be used exactly once.
        If you want to invalidate one or more access or refresh tokens immediately, use this invalidate token API.

        NOTE: While all parameters are optional, at least one of them is required.
        More specifically, either one of `token` or `refresh_token` parameters is required.
        If none of these two are specified, then `realm_name` and/or `username` need to be specified.
      operationId: security-invalidate-token
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                token:
                  description: |-
                    An access token.
                    This parameter cannot be used if any of `refresh_token`, `realm_name`, or `username` are used.
                  type: string
                refresh_token:
                  description: |-
                    A refresh token.
                    This parameter cannot be used if any of `refresh_token`, `realm_name`, or `username` are used.
                  type: string
                realm_name:
                  description: |-
                    The name of an authentication realm.
                    This parameter cannot be used with either `refresh_token` or `token`.
                  allOf:
                  - "$ref": "#/components/schemas/_types.Name"
                username:
                  description: |-
                    The username of a user.
                    This parameter cannot be used with either `refresh_token` or `token`.
                  allOf:
                  - "$ref": "#/components/schemas/_types.Username"
            examples:
              SecurityInvalidateTokenRequestExample1:
                summary: Invalidate an access token
                description: 'Run `DELETE /_security/oauth2/token` to invalidate an
                  access token.

                  '
                value: |-
                  {
                    "token" : "dGhpcyBpcyBub3QgYSByZWFsIHRva2VuIGJ1dCBpdCBpcyBvbmx5IHRlc3QgZGF0YS4gZG8gbm90IHRyeSB0byByZWFkIHRva2VuIQ=="
                  }
              SecurityInvalidateTokenRequestExample2:
                summary: Invalidate a refresh token
                description: 'Run `DELETE /_security/oauth2/token` to invalidate a
                  refresh token.

                  '
                value: |-
                  {
                    "refresh_token" : "vLBPvmAB6KvwvJZr27cS"
                  }
              SecurityInvalidateTokenRequestExample3:
                summary: Invalidate tokens by realm
                description: Run `DELETE /_security/oauth2/token` to invalidate all
                  access tokens and refresh tokens for the `saml1` realm.
                value: |-
                  {
                    "realm_name" : "saml1"
                  }
              SecurityInvalidateTokenRequestExample4:
                summary: Invalidate tokens by user
                description: Run `DELETE /_security/oauth2/token` to invalidate all
                  access tokens and refresh tokens for the user `myuser` in all realms.
                value: |-
                  {
                    "username" : "myuser"
                  }
              SecurityInvalidateTokenRequestExample5:
                summary: Invalidate tokens by user and realm
                description: Run `DELETE /_security/oauth2/token` to invalidate all
                  access tokens and refresh tokens for the user `myuser` in the `saml1`
                  realm.
                value: |-
                  {
                    "username" : "myuser",
                    "realm_name" : "saml1"
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  error_count:
                    description: The number of errors that were encountered when invalidating
                      the tokens.
                    type: number
                  error_details:
                    description: |-
                      Details about the errors.
                      This field is not present in the response when `error_count` is `0`.
                    type: array
                    items:
                      "$ref": "#/components/schemas/_types.ErrorCause"
                  invalidated_tokens:
                    description: The number of the tokens that were invalidated as
                      part of this request.
                    type: number
                  previously_invalidated_tokens:
                    description: The number of tokens that were already invalidated.
                    type: number
                required:
                - error_count
                - invalidated_tokens
                - previously_invalidated_tokens
              examples:
                SecurityInvalidateTokenResponseExample1:
                  description: 'A partially successful response from `DELETE /_security/oauth2/token`.
                    The response includes the number of the tokens that were invalidated,
                    the number of errors that were encountered when invalidating the
                    tokens, and details about these errors.

                    '
                  value: "{\n  \"invalidated_tokens\":9, \n  \"previously_invalidated_tokens\":15,
                    \n  \"error_count\":2, \n  \"error_details\":[ \n    {\n      \"type\":\"exception\",\n
                    \     \"reason\":\"Elasticsearch exception [type=exception, reason=foo]\",\n
                    \     \"caused_by\":{\n        \"type\":\"exception\",\n        \"reason\":\"Elasticsearch
                    exception [type=illegal_argument_exception, reason=bar]\"\n      }\n
                    \   },\n    {\n      \"type\":\"exception\",\n      \"reason\":\"Elasticsearch
                    exception [type=exception, reason=boo]\",\n      \"caused_by\":{\n
                    \       \"type\":\"exception\",\n        \"reason\":\"Elasticsearch
                    exception [type=illegal_argument_exception, reason=far]\"\n      }\n
                    \   }\n  ]\n}"
      x-state: Generally available; Added in 5.5.0
      x-codeSamples:
      - lang: Console
        source: |-
          DELETE /_security/oauth2/token
          {
            "token" : "dGhpcyBpcyBub3QgYSByZWFsIHRva2VuIGJ1dCBpdCBpcyBvbmx5IHRlc3QgZGF0YS4gZG8gbm90IHRyeSB0byByZWFkIHRva2VuIQ=="
          }
      - lang: Python
        source: |-
          resp = client.security.invalidate_token(
              token="dGhpcyBpcyBub3QgYSByZWFsIHRva2VuIGJ1dCBpdCBpcyBvbmx5IHRlc3QgZGF0YS4gZG8gbm90IHRyeSB0byByZWFkIHRva2VuIQ==",
          )
      - lang: JavaScript
        source: |-
          const response = await client.security.invalidateToken({
            token:
              "dGhpcyBpcyBub3QgYSByZWFsIHRva2VuIGJ1dCBpdCBpcyBvbmx5IHRlc3QgZGF0YS4gZG8gbm90IHRyeSB0byByZWFkIHRva2VuIQ==",
          });
      - lang: Ruby
        source: |-
          response = client.security.invalidate_token(
            body: {
              "token": "dGhpcyBpcyBub3QgYSByZWFsIHRva2VuIGJ1dCBpdCBpcyBvbmx5IHRlc3QgZGF0YS4gZG8gbm90IHRyeSB0byByZWFkIHRva2VuIQ=="
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->security()->invalidateToken([
              "body" => [
                  "token" => "dGhpcyBpcyBub3QgYSByZWFsIHRva2VuIGJ1dCBpdCBpcyBvbmx5IHRlc3QgZGF0YS4gZG8gbm90IHRyeSB0byByZWFkIHRva2VuIQ==",
              ],
          ]);
      - lang: curl
        source: 'curl -X DELETE -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"token":"dGhpcyBpcyBub3QgYSByZWFsIHRva2VuIGJ1dCBpdCBpcyBvbmx5IHRlc3QgZGF0YS4gZG8gbm90IHRyeSB0byByZWFkIHRva2VuIQ=="}''
          "$ELASTICSEARCH_URL/_security/oauth2/token"'
      - lang: Java
        source: |
          client.security().invalidateToken(i -> i
              .token("dGhpcyBpcyBub3QgYSByZWFsIHRva2VuIGJ1dCBpdCBpcyBvbmx5IHRlc3QgZGF0YS4gZG8gbm90IHRyeSB0byByZWFkIHRva2VuIQ==")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_security/user/_privileges":
    get:
      tags:
      - security
      summary: Get user privileges
      description: |-
        Get the security privileges for the logged in user.
        All users can use this API, but only to determine their own privileges.
        To check the privileges of other users, you must use the run as feature.
        To check whether a user has a specific list of privileges, use the has privileges API.
      operationId: security-get-user-privileges
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  applications:
                    type: array
                    items:
                      "$ref": "#/components/schemas/security._types.ApplicationPrivileges"
                  cluster:
                    type: array
                    items:
                      type: string
                  remote_cluster:
                    type: array
                    items:
                      "$ref": "#/components/schemas/security._types.RemoteClusterPrivileges"
                  global:
                    type: array
                    items:
                      "$ref": "#/components/schemas/security._types.GlobalPrivilege"
                  indices:
                    type: array
                    items:
                      "$ref": "#/components/schemas/security._types.UserIndicesPrivileges"
                  remote_indices:
                    type: array
                    items:
                      "$ref": "#/components/schemas/security._types.RemoteUserIndicesPrivileges"
                  run_as:
                    type: array
                    items:
                      type: string
                required:
                - applications
                - cluster
                - global
                - indices
                - run_as
              examples:
                SecurityGetUserPrivilegesResponseExample1:
                  description: A successful response from `GET /_security/user/_privileges`.
                  value: |-
                    {
                      "cluster" : [
                        "all"
                      ],
                      "global" : [ ],
                      "indices" : [
                        {
                          "names" : [
                            "*"
                          ],
                          "privileges" : [
                            "all"
                          ],
                          "allow_restricted_indices" : true
                        }
                      ],
                      "applications" : [
                        {
                          "application" : "*",
                          "privileges" : [
                            "*"
                          ],
                          "resources" : [
                            "*"
                          ]
                        }
                      ],
                      "run_as" : [
                        "*"
                      ]
                    }
      x-state: Generally available; Added in 6.5.0
      x-codeSamples:
      - lang: Console
        source: 'GET /_security/user/_privileges

          '
      - lang: Python
        source: resp = client.security.get_user_privileges()
      - lang: JavaScript
        source: const response = await client.security.getUserPrivileges();
      - lang: Ruby
        source: response = client.security.get_user_privileges
      - lang: PHP
        source: "$resp = $client->security()->getUserPrivileges();"
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_security/user/_privileges"'
      - lang: Java
        source: 'client.security().getUserPrivileges();

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_security/profile/{uid}":
    get:
      tags:
      - security
      summary: Get a user profile
      description: |
        Get a user's profile using the unique profile ID.

        NOTE: The user profile feature is designed only for use by Kibana and Elastic's Observability, Enterprise Search, and Elastic Security solutions.
        Individual users and external applications should not call this API directly.
        Elastic reserves the right to change or remove this feature in future releases without prior notice.

        ## Required authorization

        * Cluster privileges: `read_security`
      operationId: security-get-user-profile
      parameters:
      - in: path
        name: uid
        description: A unique identifier for the user profile.
        required: true
        deprecated: false
        schema:
          oneOf:
          - "$ref": "#/components/schemas/security._types.UserProfileId"
          - type: array
            items:
              "$ref": "#/components/schemas/security._types.UserProfileId"
        style: simple
      - in: query
        name: data
        description: |-
          A comma-separated list of filters for the `data` field of the profile document.
          To return all content use `data=*`.
          To return a subset of content use `data=<key>` to retrieve content nested under the specified `<key>`.
          By default returns no `data` content.
        deprecated: false
        schema:
          oneOf:
          - type: string
          - type: array
            items:
              type: string
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  profiles:
                    description: |-
                      A successful call returns the JSON representation of the user profile and its internal versioning numbers.
                      The API returns an empty object if no profile document is found for the provided `uid`.
                      The content of the data field is not returned by default to avoid deserializing a potential large payload.
                    type: array
                    items:
                      "$ref": "#/components/schemas/security._types.UserProfileWithMetadata"
                  errors:
                    allOf:
                    - "$ref": "#/components/schemas/security.get_user_profile.GetUserProfileErrors"
                required:
                - profiles
              examples:
                GetUserProfileResponseExample1:
                  summary: Profile details for a UUID
                  description: 'A successful response from `GET /_security/profile/u_79HkWkwmnBH5gqFKwoxggWPjEBOur1zLPXQPEl1VBW0_0`.
                    By default, no content is returned in the `data` field.

                    '
                  value: "{\n  \"profiles\": [\n    {\n      \"uid\": \"u_79HkWkwmnBH5gqFKwoxggWPjEBOur1zLPXQPEl1VBW0_0\",\n
                    \     \"enabled\": true,\n      \"last_synchronized\": 1642650651037,\n
                    \     \"user\": {\n        \"username\": \"jacknich\",\n        \"roles\":
                    [\n          \"admin\", \"other_role1\"\n        ],\n        \"realm_name\":
                    \"native\",\n        \"full_name\": \"Jack Nicholson\",\n        \"email\":
                    \"jacknich@example.com\"\n      },\n      \"labels\": {\n        \"direction\":
                    \"north\"\n      },\n      \"data\": {}, \n      \"_doc\": {\n
                    \       \"_primary_term\": 88,\n        \"_seq_no\": 66\n      }\n
                    \   }\n  ]\n}"
                GetUserProfileResponseExample2:
                  summary: Profile details for a UUID and data key
                  description: 'A successful response from `GET /_security/profile/u_79HkWkwmnBH5gqFKwoxggWPjEBOur1zLPXQPEl1VBW0_0?data=app1.key1`.

                    '
                  value: |-
                    {
                      "profiles": [
                        {
                          "uid": "u_79HkWkwmnBH5gqFKwoxggWPjEBOur1zLPXQPEl1VBW0_0",
                          "enabled": true,
                          "last_synchronized": 1642650651037,
                          "user": {
                            "username": "jacknich",
                            "roles": [
                              "admin", "other_role1"
                            ],
                            "realm_name": "native",
                            "full_name": "Jack Nicholson",
                            "email": "jacknich@example.com"
                          },
                          "labels": {
                            "direction": "north"
                          },
                          "data": {
                            "app1": {
                              "key1": "value1"
                            }
                          },
                          "_doc": {
                            "_primary_term": 88,
                            "_seq_no": 66
                          }
                        }
                      ]
                    }
                GetUserProfileResponseExample3:
                  summary: Profile details with errors
                  description: 'A response that contains errors that occurred while
                    retrieving user profiles.

                    '
                  value: |-
                    {
                      "profiles": [],
                      "errors": {
                        "count": 1,
                        "details": {
                          "u_FmxQt3gr1BBH5wpnz9HkouPj3Q710XkOgg1PWkwLPBW_5": {
                            "type": "resource_not_found_exception",
                            "reason": "profile document not found"
                          }
                        }
                      }
                    }
      x-state: Generally available; Added in 8.2.0
      x-codeSamples:
      - lang: Console
        source: 'GET /_security/profile/u_79HkWkwmnBH5gqFKwoxggWPjEBOur1zLPXQPEl1VBW0_0

          '
      - lang: Python
        source: |-
          resp = client.security.get_user_profile(
              uid="u_79HkWkwmnBH5gqFKwoxggWPjEBOur1zLPXQPEl1VBW0_0",
          )
      - lang: JavaScript
        source: |-
          const response = await client.security.getUserProfile({
            uid: "u_79HkWkwmnBH5gqFKwoxggWPjEBOur1zLPXQPEl1VBW0_0",
          });
      - lang: Ruby
        source: |-
          response = client.security.get_user_profile(
            uid: "u_79HkWkwmnBH5gqFKwoxggWPjEBOur1zLPXQPEl1VBW0_0"
          )
      - lang: PHP
        source: |-
          $resp = $client->security()->getUserProfile([
              "uid" => "u_79HkWkwmnBH5gqFKwoxggWPjEBOur1zLPXQPEl1VBW0_0",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_security/profile/u_79HkWkwmnBH5gqFKwoxggWPjEBOur1zLPXQPEl1VBW0_0"'
      - lang: Java
        source: |
          client.security().getUserProfile(g -> g
              .uid("u_79HkWkwmnBH5gqFKwoxggWPjEBOur1zLPXQPEl1VBW0_0")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_security/api_key/grant":
    post:
      tags:
      - security
      summary: Grant an API key
      description: |
        Create an API key on behalf of another user.
        This API is similar to the create API keys API, however it creates the API key for a user that is different than the user that runs the API.
        The caller must have authentication credentials for the user on whose behalf the API key will be created.
        It is not possible to use this API to create an API key without that user's credentials.
        The supported user authentication credential types are:

        * username and password
        * Elasticsearch access tokens
        * JWTs

        The user, for whom the authentication credentials is provided, can optionally "run as" (impersonate) another user.
        In this case, the API key will be created on behalf of the impersonated user.

        This API is intended be used by applications that need to create and manage API keys for end users, but cannot guarantee that those users have permission to create API keys on their own behalf.
        The API keys are created by the Elasticsearch API key service, which is automatically enabled.

        A successful grant API key API call returns a JSON structure that contains the API key, its unique id, and its name.
        If applicable, it also returns expiration information for the API key in milliseconds.

        By default, API keys never expire. You can specify expiration information when you create the API keys.

        ## Required authorization

        * Cluster privileges: `grant_api_key`
      operationId: security-grant-api-key
      parameters:
      - in: query
        name: refresh
        description: |-
          If 'true', Elasticsearch refreshes the affected shards to make this operation
          visible to search.
          If 'wait_for', it waits for a refresh to make this operation visible to search.
          If 'false', nothing is done with refreshes.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Refresh"
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                api_key:
                  description: The API key.
                  allOf:
                  - "$ref": "#/components/schemas/security.grant_api_key.GrantApiKey"
                grant_type:
                  description: 'The type of grant. Supported grant types are: `access_token`,
                    `password`.'
                  allOf:
                  - "$ref": "#/components/schemas/security.grant_api_key.ApiKeyGrantType"
                access_token:
                  description: |-
                    The user's access token.
                    If you specify the `access_token` grant type, this parameter is required.
                    It is not valid with other grant types.
                  type: string
                username:
                  description: |-
                    The user name that identifies the user.
                    If you specify the `password` grant type, this parameter is required.
                    It is not valid with other grant types.
                  allOf:
                  - "$ref": "#/components/schemas/_types.Username"
                password:
                  description: |-
                    The user's password.
                    If you specify the `password` grant type, this parameter is required.
                    It is not valid with other grant types.
                  allOf:
                  - "$ref": "#/components/schemas/_types.Password"
                run_as:
                  description: The name of the user to be impersonated.
                  allOf:
                  - "$ref": "#/components/schemas/_types.Username"
              required:
              - api_key
              - grant_type
            examples:
              SecurityGrantApiKeyRequestExample1:
                summary: Grant an API key
                description: 'Run `POST /_security/api_key/grant` to create an API
                  key on behalf of the `test_admin` user.

                  '
                value: |-
                  {
                    "grant_type": "password",
                    "username" : "test_admin",
                    "password" : "x-pack-test-password",
                    "api_key" : {
                      "name": "my-api-key",
                      "expiration": "1d",
                      "role_descriptors": {
                        "role-a": {
                          "cluster": ["all"],
                          "indices": [
                            {
                            "names": ["index-a*"],
                            "privileges": ["read"]
                            }
                          ]
                        },
                        "role-b": {
                          "cluster": ["all"],
                          "indices": [
                            {
                            "names": ["index-b*"],
                            "privileges": ["all"]
                            }
                          ]
                        }
                      },
                      "metadata": {
                        "application": "my-application",
                        "environment": {
                          "level": 1,
                          "trusted": true,
                          "tags": ["dev", "staging"]
                        }
                      }
                    }
                  }
              SecurityGrantApiKeyRequestExample2:
                summary: Grant an API key with run_as
                description: 'Run `POST /_security/api_key/grant`. The user (`test_admin`)
                  whose credentials are provided can "run as" another user (`test_user`).
                  The API key will be granted to the impersonated user (`test_user`).

                  '
                value: "{\n  \"grant_type\": \"password\",\n  \"username\" : \"test_admin\",
                  \ \n  \"password\" : \"x-pack-test-password\",  \n  \"run_as\":
                  \"test_user\",  \n  \"api_key\" : {\n    \"name\": \"another-api-key\"\n
                  \ }\n}"
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  api_key:
                    type: string
                  id:
                    allOf:
                    - "$ref": "#/components/schemas/_types.Id"
                  name:
                    allOf:
                    - "$ref": "#/components/schemas/_types.Name"
                  expiration:
                    allOf:
                    - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
                  encoded:
                    type: string
                required:
                - api_key
                - id
                - name
                - encoded
      x-state: Generally available; Added in 7.9.0
      x-codeSamples:
      - lang: Console
        source: |-
          POST /_security/api_key/grant
          {
            "grant_type": "password",
            "username" : "test_admin",
            "password" : "x-pack-test-password",
            "api_key" : {
              "name": "my-api-key",
              "expiration": "1d",
              "role_descriptors": {
                "role-a": {
                  "cluster": ["all"],
                  "indices": [
                    {
                    "names": ["index-a*"],
                    "privileges": ["read"]
                    }
                  ]
                },
                "role-b": {
                  "cluster": ["all"],
                  "indices": [
                    {
                    "names": ["index-b*"],
                    "privileges": ["all"]
                    }
                  ]
                }
              },
              "metadata": {
                "application": "my-application",
                "environment": {
                  "level": 1,
                  "trusted": true,
                  "tags": ["dev", "staging"]
                }
              }
            }
          }
      - lang: Python
        source: |-
          resp = client.security.grant_api_key(
              grant_type="password",
              username="test_admin",
              password="x-pack-test-password",
              api_key={
                  "name": "my-api-key",
                  "expiration": "1d",
                  "role_descriptors": {
                      "role-a": {
                          "cluster": [
                              "all"
                          ],
                          "indices": [
                              {
                                  "names": [
                                      "index-a*"
                                  ],
                                  "privileges": [
                                      "read"
                                  ]
                              }
                          ]
                      },
                      "role-b": {
                          "cluster": [
                              "all"
                          ],
                          "indices": [
                              {
                                  "names": [
                                      "index-b*"
                                  ],
                                  "privileges": [
                                      "all"
                                  ]
                              }
                          ]
                      }
                  },
                  "metadata": {
                      "application": "my-application",
                      "environment": {
                          "level": 1,
                          "trusted": True,
                          "tags": [
                              "dev",
                              "staging"
                          ]
                      }
                  }
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.security.grantApiKey({
            grant_type: "password",
            username: "test_admin",
            password: "x-pack-test-password",
            api_key: {
              name: "my-api-key",
              expiration: "1d",
              role_descriptors: {
                "role-a": {
                  cluster: ["all"],
                  indices: [
                    {
                      names: ["index-a*"],
                      privileges: ["read"],
                    },
                  ],
                },
                "role-b": {
                  cluster: ["all"],
                  indices: [
                    {
                      names: ["index-b*"],
                      privileges: ["all"],
                    },
                  ],
                },
              },
              metadata: {
                application: "my-application",
                environment: {
                  level: 1,
                  trusted: true,
                  tags: ["dev", "staging"],
                },
              },
            },
          });
      - lang: Ruby
        source: |-
          response = client.security.grant_api_key(
            body: {
              "grant_type": "password",
              "username": "test_admin",
              "password": "x-pack-test-password",
              "api_key": {
                "name": "my-api-key",
                "expiration": "1d",
                "role_descriptors": {
                  "role-a": {
                    "cluster": [
                      "all"
                    ],
                    "indices": [
                      {
                        "names": [
                          "index-a*"
                        ],
                        "privileges": [
                          "read"
                        ]
                      }
                    ]
                  },
                  "role-b": {
                    "cluster": [
                      "all"
                    ],
                    "indices": [
                      {
                        "names": [
                          "index-b*"
                        ],
                        "privileges": [
                          "all"
                        ]
                      }
                    ]
                  }
                },
                "metadata": {
                  "application": "my-application",
                  "environment": {
                    "level": 1,
                    "trusted": true,
                    "tags": [
                      "dev",
                      "staging"
                    ]
                  }
                }
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->security()->grantApiKey([
              "body" => [
                  "grant_type" => "password",
                  "username" => "test_admin",
                  "password" => "x-pack-test-password",
                  "api_key" => [
                      "name" => "my-api-key",
                      "expiration" => "1d",
                      "role_descriptors" => [
                          "role-a" => [
                              "cluster" => array(
                                  "all",
                              ),
                              "indices" => array(
                                  [
                                      "names" => array(
                                          "index-a*",
                                      ),
                                      "privileges" => array(
                                          "read",
                                      ),
                                  ],
                              ),
                          ],
                          "role-b" => [
                              "cluster" => array(
                                  "all",
                              ),
                              "indices" => array(
                                  [
                                      "names" => array(
                                          "index-b*",
                                      ),
                                      "privileges" => array(
                                          "all",
                                      ),
                                  ],
                              ),
                          ],
                      ],
                      "metadata" => [
                          "application" => "my-application",
                          "environment" => [
                              "level" => 1,
                              "trusted" => true,
                              "tags" => array(
                                  "dev",
                                  "staging",
                              ),
                          ],
                      ],
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"grant_type":"password","username":"test_admin","password":"x-pack-test-password","api_key":{"name":"my-api-key","expiration":"1d","role_descriptors":{"role-a":{"cluster":["all"],"indices":[{"names":["index-a*"],"privileges":["read"]}]},"role-b":{"cluster":["all"],"indices":[{"names":["index-b*"],"privileges":["all"]}]}},"metadata":{"application":"my-application","environment":{"level":1,"trusted":true,"tags":["dev","staging"]}}}}''
          "$ELASTICSEARCH_URL/_security/api_key/grant"'
      - lang: Java
        source: |
          client.security().grantApiKey(g -> g
              .apiKey(a -> a
                  .name("my-api-key")
                  .expiration(e -> e
                      .time("1d")
                  )
                  .roleDescriptors(Map.of("role-b", RoleDescriptor.of(r -> r
                          .cluster("all")
                          .indices(i -> i
                              .names("index-b*")
                              .privileges("all")
                          )
                      ),"role-a", RoleDescriptor.of(r -> r
                          .cluster("all")
                          .indices(i -> i
                              .names("index-a*")
                              .privileges("read")
                          )
                      )))
                  .metadata(Map.of("environment", JsonData.fromJson("{\"level\":1,\"trusted\":true,\"tags\":[\"dev\",\"staging\"]}"),"application", JsonData.fromJson("\"my-application\"")))
              )
              .grantType(ApiKeyGrantType.Password)
              .password("x-pack-test-password")
              .username("test_admin")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_security/user/{user}/_has_privileges":
    post:
      tags:
      - security
      summary: 'Check user privileges

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_security/user/_has_privileges</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_security/user/_has_privileges</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_security/user/{user}/_has_privileges</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_security/user/{user}/_has_privileges</span>\n
        \                     </div>\n                    \n\nDetermine whether the
        specified user has a specified list of privileges.\nAll users can use this
        API, but only to determine their own privileges.\nTo check the privileges
        of other users, you must use the run as feature."
      externalDocs:
        url: https://www.elastic.co/docs/reference/elasticsearch/security-privileges
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/security-api-has-privileges.html
      operationId: security-has-privileges
      parameters:
      - "$ref": "#/components/parameters/security.has_privileges-user"
      requestBody:
        "$ref": "#/components/requestBodies/security.has_privileges"
      responses:
        '200':
          "$ref": "#/components/responses/security.has_privileges-200"
      x-state: Generally available; Added in 6.4.0
      x-codeSamples:
      - lang: Console
        source: |-
          GET /_security/user/_has_privileges
          {
            "cluster": [ "monitor", "manage" ],
            "index" : [
              {
                "names": [ "suppliers", "products" ],
                "privileges": [ "read" ]
              },
              {
                "names": [ "inventory" ],
                "privileges" : [ "read", "write" ]
              }
            ],
            "application": [
              {
                "application": "inventory_manager",
                "privileges" : [ "read", "data:write/inventory" ],
                "resources" : [ "product/1852563" ]
              }
            ]
          }
      - lang: Python
        source: |-
          resp = client.security.has_privileges(
              cluster=[
                  "monitor",
                  "manage"
              ],
              index=[
                  {
                      "names": [
                          "suppliers",
                          "products"
                      ],
                      "privileges": [
                          "read"
                      ]
                  },
                  {
                      "names": [
                          "inventory"
                      ],
                      "privileges": [
                          "read",
                          "write"
                      ]
                  }
              ],
              application=[
                  {
                      "application": "inventory_manager",
                      "privileges": [
                          "read",
                          "data:write/inventory"
                      ],
                      "resources": [
                          "product/1852563"
                      ]
                  }
              ],
          )
      - lang: JavaScript
        source: |-
          const response = await client.security.hasPrivileges({
            cluster: ["monitor", "manage"],
            index: [
              {
                names: ["suppliers", "products"],
                privileges: ["read"],
              },
              {
                names: ["inventory"],
                privileges: ["read", "write"],
              },
            ],
            application: [
              {
                application: "inventory_manager",
                privileges: ["read", "data:write/inventory"],
                resources: ["product/1852563"],
              },
            ],
          });
      - lang: Ruby
        source: |-
          response = client.security.has_privileges(
            body: {
              "cluster": [
                "monitor",
                "manage"
              ],
              "index": [
                {
                  "names": [
                    "suppliers",
                    "products"
                  ],
                  "privileges": [
                    "read"
                  ]
                },
                {
                  "names": [
                    "inventory"
                  ],
                  "privileges": [
                    "read",
                    "write"
                  ]
                }
              ],
              "application": [
                {
                  "application": "inventory_manager",
                  "privileges": [
                    "read",
                    "data:write/inventory"
                  ],
                  "resources": [
                    "product/1852563"
                  ]
                }
              ]
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->security()->hasPrivileges([
              "body" => [
                  "cluster" => array(
                      "monitor",
                      "manage",
                  ),
                  "index" => array(
                      [
                          "names" => array(
                              "suppliers",
                              "products",
                          ),
                          "privileges" => array(
                              "read",
                          ),
                      ],
                      [
                          "names" => array(
                              "inventory",
                          ),
                          "privileges" => array(
                              "read",
                              "write",
                          ),
                      ],
                  ),
                  "application" => array(
                      [
                          "application" => "inventory_manager",
                          "privileges" => array(
                              "read",
                              "data:write/inventory",
                          ),
                          "resources" => array(
                              "product/1852563",
                          ),
                      ],
                  ),
              ],
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"cluster":["monitor","manage"],"index":[{"names":["suppliers","products"],"privileges":["read"]},{"names":["inventory"],"privileges":["read","write"]}],"application":[{"application":"inventory_manager","privileges":["read","data:write/inventory"],"resources":["product/1852563"]}]}''
          "$ELASTICSEARCH_URL/_security/user/_has_privileges"'
      - lang: Java
        source: |
          client.security().hasPrivileges(h -> h
              .application(a -> a
                  .application("inventory_manager")
                  .privileges(List.of("read","data:write/inventory"))
                  .resources("product/1852563")
              )
              .cluster(List.of("monitor","manage"))
              .index(List.of(IndexPrivilegesCheck.of(i -> i
                      .names(List.of("suppliers","products"))
                      .privileges("read")
                  ),IndexPrivilegesCheck.of(i -> i
                      .names("inventory")
                      .privileges(List.of("read","write"))
                  )))
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_security/profile/_has_privileges":
    post:
      tags:
      - security
      summary: 'Check user profile privileges

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_security/profile/_has_privileges</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_security/profile/_has_privileges</span>\n
        \                     </div>\n                    \n\nDetermine whether the
        users associated with the specified user profile IDs have all the requested
        privileges.\n\nNOTE: The user profile feature is designed only for use by
        Kibana and Elastic's Observability, Enterprise Search, and Elastic Security
        solutions. Individual users and external applications should not call this
        API directly.\nElastic reserves the right to change or remove this feature
        in future releases without prior notice.\n\n## Required authorization\n\n*
        Cluster privileges: `read_security`\n"
      externalDocs:
        url: https://www.elastic.co/docs/deploy-manage/users-roles/cluster-or-deployment-auth/user-profiles
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/security-api-has-privileges-user-profile.html
      operationId: security-has-privileges-user-profile
      requestBody:
        "$ref": "#/components/requestBodies/security.has_privileges_user_profile"
      responses:
        '200':
          "$ref": "#/components/responses/security.has_privileges_user_profile-200"
      x-state: Generally available; Added in 8.3.0
      x-codeSamples:
      - lang: Console
        source: |-
          POST /_security/profile/_has_privileges
          {
            "uids": [
              "u_LQPnxDxEjIH0GOUoFkZr5Y57YUwSkL9Joiq-g4OCbPc_0",
              "u_rzRnxDgEHIH0GOUoFkZr5Y27YUwSk19Joiq=g4OCxxB_1",
              "u_does-not-exist_0"
            ],
            "privileges": {
              "cluster": [ "monitor", "create_snapshot", "manage_ml" ],
              "index" : [
                {
                  "names": [ "suppliers", "products" ],
                  "privileges": [ "create_doc"]
                },
                {
                  "names": [ "inventory" ],
                  "privileges" : [ "read", "write" ]
                }
              ],
              "application": [
                {
                  "application": "inventory_manager",
                  "privileges" : [ "read", "data:write/inventory" ],
                  "resources" : [ "product/1852563" ]
                }
              ]
            }
          }
      - lang: Python
        source: |-
          resp = client.security.has_privileges_user_profile(
              uids=[
                  "u_LQPnxDxEjIH0GOUoFkZr5Y57YUwSkL9Joiq-g4OCbPc_0",
                  "u_rzRnxDgEHIH0GOUoFkZr5Y27YUwSk19Joiq=g4OCxxB_1",
                  "u_does-not-exist_0"
              ],
              privileges={
                  "cluster": [
                      "monitor",
                      "create_snapshot",
                      "manage_ml"
                  ],
                  "index": [
                      {
                          "names": [
                              "suppliers",
                              "products"
                          ],
                          "privileges": [
                              "create_doc"
                          ]
                      },
                      {
                          "names": [
                              "inventory"
                          ],
                          "privileges": [
                              "read",
                              "write"
                          ]
                      }
                  ],
                  "application": [
                      {
                          "application": "inventory_manager",
                          "privileges": [
                              "read",
                              "data:write/inventory"
                          ],
                          "resources": [
                              "product/1852563"
                          ]
                      }
                  ]
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.security.hasPrivilegesUserProfile({
            uids: [
              "u_LQPnxDxEjIH0GOUoFkZr5Y57YUwSkL9Joiq-g4OCbPc_0",
              "u_rzRnxDgEHIH0GOUoFkZr5Y27YUwSk19Joiq=g4OCxxB_1",
              "u_does-not-exist_0",
            ],
            privileges: {
              cluster: ["monitor", "create_snapshot", "manage_ml"],
              index: [
                {
                  names: ["suppliers", "products"],
                  privileges: ["create_doc"],
                },
                {
                  names: ["inventory"],
                  privileges: ["read", "write"],
                },
              ],
              application: [
                {
                  application: "inventory_manager",
                  privileges: ["read", "data:write/inventory"],
                  resources: ["product/1852563"],
                },
              ],
            },
          });
      - lang: Ruby
        source: |-
          response = client.security.has_privileges_user_profile(
            body: {
              "uids": [
                "u_LQPnxDxEjIH0GOUoFkZr5Y57YUwSkL9Joiq-g4OCbPc_0",
                "u_rzRnxDgEHIH0GOUoFkZr5Y27YUwSk19Joiq=g4OCxxB_1",
                "u_does-not-exist_0"
              ],
              "privileges": {
                "cluster": [
                  "monitor",
                  "create_snapshot",
                  "manage_ml"
                ],
                "index": [
                  {
                    "names": [
                      "suppliers",
                      "products"
                    ],
                    "privileges": [
                      "create_doc"
                    ]
                  },
                  {
                    "names": [
                      "inventory"
                    ],
                    "privileges": [
                      "read",
                      "write"
                    ]
                  }
                ],
                "application": [
                  {
                    "application": "inventory_manager",
                    "privileges": [
                      "read",
                      "data:write/inventory"
                    ],
                    "resources": [
                      "product/1852563"
                    ]
                  }
                ]
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->security()->hasPrivilegesUserProfile([
              "body" => [
                  "uids" => array(
                      "u_LQPnxDxEjIH0GOUoFkZr5Y57YUwSkL9Joiq-g4OCbPc_0",
                      "u_rzRnxDgEHIH0GOUoFkZr5Y27YUwSk19Joiq=g4OCxxB_1",
                      "u_does-not-exist_0",
                  ),
                  "privileges" => [
                      "cluster" => array(
                          "monitor",
                          "create_snapshot",
                          "manage_ml",
                      ),
                      "index" => array(
                          [
                              "names" => array(
                                  "suppliers",
                                  "products",
                              ),
                              "privileges" => array(
                                  "create_doc",
                              ),
                          ],
                          [
                              "names" => array(
                                  "inventory",
                              ),
                              "privileges" => array(
                                  "read",
                                  "write",
                              ),
                          ],
                      ),
                      "application" => array(
                          [
                              "application" => "inventory_manager",
                              "privileges" => array(
                                  "read",
                                  "data:write/inventory",
                              ),
                              "resources" => array(
                                  "product/1852563",
                              ),
                          ],
                      ),
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"uids":["u_LQPnxDxEjIH0GOUoFkZr5Y57YUwSkL9Joiq-g4OCbPc_0","u_rzRnxDgEHIH0GOUoFkZr5Y27YUwSk19Joiq=g4OCxxB_1","u_does-not-exist_0"],"privileges":{"cluster":["monitor","create_snapshot","manage_ml"],"index":[{"names":["suppliers","products"],"privileges":["create_doc"]},{"names":["inventory"],"privileges":["read","write"]}],"application":[{"application":"inventory_manager","privileges":["read","data:write/inventory"],"resources":["product/1852563"]}]}}''
          "$ELASTICSEARCH_URL/_security/profile/_has_privileges"'
      - lang: Java
        source: |
          client.security().hasPrivilegesUserProfile(h -> h
              .privileges(p -> p
                  .application(a -> a
                      .application("inventory_manager")
                      .privileges(List.of("read","data:write/inventory"))
                      .resources("product/1852563")
                  )
                  .cluster(List.of("monitor","create_snapshot","manage_ml"))
                  .index(List.of(IndexPrivilegesCheck.of(i -> i
                          .names(List.of("suppliers","products"))
                          .privileges("create_doc")
                      ),IndexPrivilegesCheck.of(i -> i
                          .names("inventory")
                          .privileges(List.of("read","write"))
                      )))
              )
              .uids(List.of("u_LQPnxDxEjIH0GOUoFkZr5Y57YUwSkL9Joiq-g4OCbPc_0","u_rzRnxDgEHIH0GOUoFkZr5Y27YUwSk19Joiq=g4OCxxB_1","u_does-not-exist_0"))
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_security/oidc/authenticate":
    post:
      tags:
      - security
      summary: Authenticate OpenID Connect
      description: |-
        Exchange an OpenID Connect authentication response message for an Elasticsearch internal access token and refresh token that can be subsequently used for authentication.

        Elasticsearch exposes all the necessary OpenID Connect related functionality with the OpenID Connect APIs.
        These APIs are used internally by Kibana in order to provide OpenID Connect based authentication, but can also be used by other, custom web applications or other clients.
      operationId: security-oidc-authenticate
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                nonce:
                  description: |-
                    Associate a client session with an ID token and mitigate replay attacks.
                    This value needs to be the same as the one that was provided to the `/_security/oidc/prepare` API or the one that was generated by Elasticsearch and included in the response to that call.
                  type: string
                realm:
                  description: |-
                    The name of the OpenID Connect realm.
                    This property is useful in cases where multiple realms are defined.
                  type: string
                redirect_uri:
                  description: |-
                    The URL to which the OpenID Connect Provider redirected the User Agent in response to an authentication request after a successful authentication.
                    This URL must be provided as-is (URL encoded), taken from the body of the response or as the value of a location header in the response from the OpenID Connect Provider.
                  type: string
                state:
                  description: |-
                    Maintain state between the authentication request and the response.
                    This value needs to be the same as the one that was provided to the `/_security/oidc/prepare` API or the one that was generated by Elasticsearch and included in the response to that call.
                  type: string
              required:
              - nonce
              - redirect_uri
              - state
            examples:
              OidcAuthenticateRequestExample1:
                description: 'Run `POST /_security/oidc/authenticate` to exchange
                  the response that was returned from the OpenID Connect Provider
                  after a successful authentication for an Elasticsearch access token
                  and refresh token. This example is from an authentication that uses
                  the authorization code grant flow.

                  '
                value: |-
                  {
                    "redirect_uri" : "https://oidc-kibana.elastic.co:5603/api/security/oidc/callback?code=jtI3Ntt8v3_XvcLzCFGq&state=4dbrihtIAt3wBTwo6DxK-vdk-sSyDBV8Yf0AjdkdT5I",
                    "state" : "4dbrihtIAt3wBTwo6DxK-vdk-sSyDBV8Yf0AjdkdT5I",
                    "nonce" : "WaBPH0KqPVdG5HHdSxPRjfoZbXMCicm5v1OiAj0DUFM",
                    "realm" : "oidc1"
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  access_token:
                    description: The Elasticsearch access token.
                    type: string
                  expires_in:
                    description: The duration (in seconds) of the tokens.
                    type: number
                  refresh_token:
                    description: The Elasticsearch refresh token.
                    type: string
                  type:
                    description: The type of token.
                    type: string
                required:
                - access_token
                - expires_in
                - refresh_token
                - type
              examples:
                OidcAuthenticateResponseExample1:
                  description: 'A successful response from `POST /_security/oidc/authenticate`.
                    It contains the access and refresh tokens that were generated,
                    the token duration (in seconds), and the type.

                    '
                  value: |-
                    {
                      "access_token" : "dGhpcyBpcyBub3QgYSByZWFsIHRva2VuIGJ1dCBpdCBpcyBvbmx5IHRlc3QgZGF0YS4gZG8gbm90IHRyeSB0byByZWFkIHRva2VuIQ==",
                      "type" : "Bearer",
                      "expires_in" : 1200,
                      "refresh_token": "vLBPvmAB6KvwvJZr27cS"
                    }
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: |-
          POST /_security/oidc/authenticate
          {
            "redirect_uri" : "https://oidc-kibana.elastic.co:5603/api/security/oidc/callback?code=jtI3Ntt8v3_XvcLzCFGq&state=4dbrihtIAt3wBTwo6DxK-vdk-sSyDBV8Yf0AjdkdT5I",
            "state" : "4dbrihtIAt3wBTwo6DxK-vdk-sSyDBV8Yf0AjdkdT5I",
            "nonce" : "WaBPH0KqPVdG5HHdSxPRjfoZbXMCicm5v1OiAj0DUFM",
            "realm" : "oidc1"
          }
      - lang: Python
        source: |-
          resp = client.security.oidc_authenticate(
              redirect_uri="https://oidc-kibana.elastic.co:5603/api/security/oidc/callback?code=jtI3Ntt8v3_XvcLzCFGq&state=4dbrihtIAt3wBTwo6DxK-vdk-sSyDBV8Yf0AjdkdT5I",
              state="4dbrihtIAt3wBTwo6DxK-vdk-sSyDBV8Yf0AjdkdT5I",
              nonce="WaBPH0KqPVdG5HHdSxPRjfoZbXMCicm5v1OiAj0DUFM",
              realm="oidc1",
          )
      - lang: JavaScript
        source: |-
          const response = await client.security.oidcAuthenticate({
            redirect_uri:
              "https://oidc-kibana.elastic.co:5603/api/security/oidc/callback?code=jtI3Ntt8v3_XvcLzCFGq&state=4dbrihtIAt3wBTwo6DxK-vdk-sSyDBV8Yf0AjdkdT5I",
            state: "4dbrihtIAt3wBTwo6DxK-vdk-sSyDBV8Yf0AjdkdT5I",
            nonce: "WaBPH0KqPVdG5HHdSxPRjfoZbXMCicm5v1OiAj0DUFM",
            realm: "oidc1",
          });
      - lang: Ruby
        source: |-
          response = client.security.oidc_authenticate(
            body: {
              "redirect_uri": "https://oidc-kibana.elastic.co:5603/api/security/oidc/callback?code=jtI3Ntt8v3_XvcLzCFGq&state=4dbrihtIAt3wBTwo6DxK-vdk-sSyDBV8Yf0AjdkdT5I",
              "state": "4dbrihtIAt3wBTwo6DxK-vdk-sSyDBV8Yf0AjdkdT5I",
              "nonce": "WaBPH0KqPVdG5HHdSxPRjfoZbXMCicm5v1OiAj0DUFM",
              "realm": "oidc1"
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->security()->oidcAuthenticate([
              "body" => [
                  "redirect_uri" => "https://oidc-kibana.elastic.co:5603/api/security/oidc/callback?code=jtI3Ntt8v3_XvcLzCFGq&state=4dbrihtIAt3wBTwo6DxK-vdk-sSyDBV8Yf0AjdkdT5I",
                  "state" => "4dbrihtIAt3wBTwo6DxK-vdk-sSyDBV8Yf0AjdkdT5I",
                  "nonce" => "WaBPH0KqPVdG5HHdSxPRjfoZbXMCicm5v1OiAj0DUFM",
                  "realm" => "oidc1",
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"redirect_uri":"https://oidc-kibana.elastic.co:5603/api/security/oidc/callback?code=jtI3Ntt8v3_XvcLzCFGq&state=4dbrihtIAt3wBTwo6DxK-vdk-sSyDBV8Yf0AjdkdT5I","state":"4dbrihtIAt3wBTwo6DxK-vdk-sSyDBV8Yf0AjdkdT5I","nonce":"WaBPH0KqPVdG5HHdSxPRjfoZbXMCicm5v1OiAj0DUFM","realm":"oidc1"}''
          "$ELASTICSEARCH_URL/_security/oidc/authenticate"'
      - lang: Java
        source: |
          client.security().oidcAuthenticate(o -> o
              .nonce("WaBPH0KqPVdG5HHdSxPRjfoZbXMCicm5v1OiAj0DUFM")
              .realm("oidc1")
              .redirectUri("https://oidc-kibana.elastic.co:5603/api/security/oidc/callback?code=jtI3Ntt8v3_XvcLzCFGq&state=4dbrihtIAt3wBTwo6DxK-vdk-sSyDBV8Yf0AjdkdT5I")
              .state("4dbrihtIAt3wBTwo6DxK-vdk-sSyDBV8Yf0AjdkdT5I")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_security/oidc/logout":
    post:
      tags:
      - security
      summary: Logout of OpenID Connect
      description: |-
        Invalidate an access token and a refresh token that were generated as a response to the `/_security/oidc/authenticate` API.

        If the OpenID Connect authentication realm in Elasticsearch is accordingly configured, the response to this call will contain a URI pointing to the end session endpoint of the OpenID Connect Provider in order to perform single logout.

        Elasticsearch exposes all the necessary OpenID Connect related functionality with the OpenID Connect APIs.
        These APIs are used internally by Kibana in order to provide OpenID Connect based authentication, but can also be used by other, custom web applications or other clients.
      operationId: security-oidc-logout
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                token:
                  description: The access token to be invalidated.
                  type: string
                refresh_token:
                  description: The refresh token to be invalidated.
                  type: string
              required:
              - token
            examples:
              OidcLogoutRequestExample1:
                description: Run `POST /_security/oidc/logout` to perform the logout.
                value: |-
                  {
                    "token" : "dGhpcyBpcyBub3QgYSByZWFsIHRva2VuIGJ1dCBpdCBpcyBvbmx5IHRlc3QgZGF0YS4gZG8gbm90IHRyeSB0byByZWFkIHRva2VuIQ==",
                    "refresh_token": "vLBPvmAB6KvwvJZr27cS"
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  redirect:
                    description: A URI that points to the end session endpoint of
                      the OpenID Connect Provider with all the parameters of the logout
                      request as HTTP GET parameters.
                    type: string
                required:
                - redirect
              examples:
                OidcLogoutResponseExample1:
                  description: A successful response from `POST /_security/oidc/logout`,
                    which contains the URI pointing to the End Session Endpoint of
                    the OpenID Connect Provider with all the parameters of the Logout
                    Request as HTTP GET parameters.
                  value: |-
                    {
                      "redirect" : "https://op-provider.org/logout?id_token_hint=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c&post_logout_redirect_uri=http%3A%2F%2Foidc-kibana.elastic.co%2Floggedout&state=lGYK0EcSLjqH6pkT5EVZjC6eIW5YCGgywj2sxROO"
                    }
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: |-
          POST /_security/oidc/logout
          {
            "token" : "dGhpcyBpcyBub3QgYSByZWFsIHRva2VuIGJ1dCBpdCBpcyBvbmx5IHRlc3QgZGF0YS4gZG8gbm90IHRyeSB0byByZWFkIHRva2VuIQ==",
            "refresh_token": "vLBPvmAB6KvwvJZr27cS"
          }
      - lang: Python
        source: |-
          resp = client.security.oidc_logout(
              token="dGhpcyBpcyBub3QgYSByZWFsIHRva2VuIGJ1dCBpdCBpcyBvbmx5IHRlc3QgZGF0YS4gZG8gbm90IHRyeSB0byByZWFkIHRva2VuIQ==",
              refresh_token="vLBPvmAB6KvwvJZr27cS",
          )
      - lang: JavaScript
        source: |-
          const response = await client.security.oidcLogout({
            token:
              "dGhpcyBpcyBub3QgYSByZWFsIHRva2VuIGJ1dCBpdCBpcyBvbmx5IHRlc3QgZGF0YS4gZG8gbm90IHRyeSB0byByZWFkIHRva2VuIQ==",
            refresh_token: "vLBPvmAB6KvwvJZr27cS",
          });
      - lang: Ruby
        source: |-
          response = client.security.oidc_logout(
            body: {
              "token": "dGhpcyBpcyBub3QgYSByZWFsIHRva2VuIGJ1dCBpdCBpcyBvbmx5IHRlc3QgZGF0YS4gZG8gbm90IHRyeSB0byByZWFkIHRva2VuIQ==",
              "refresh_token": "vLBPvmAB6KvwvJZr27cS"
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->security()->oidcLogout([
              "body" => [
                  "token" => "dGhpcyBpcyBub3QgYSByZWFsIHRva2VuIGJ1dCBpdCBpcyBvbmx5IHRlc3QgZGF0YS4gZG8gbm90IHRyeSB0byByZWFkIHRva2VuIQ==",
                  "refresh_token" => "vLBPvmAB6KvwvJZr27cS",
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"token":"dGhpcyBpcyBub3QgYSByZWFsIHRva2VuIGJ1dCBpdCBpcyBvbmx5IHRlc3QgZGF0YS4gZG8gbm90IHRyeSB0byByZWFkIHRva2VuIQ==","refresh_token":"vLBPvmAB6KvwvJZr27cS"}''
          "$ELASTICSEARCH_URL/_security/oidc/logout"'
      - lang: Java
        source: |
          client.security().oidcLogout(o -> o
              .refreshToken("vLBPvmAB6KvwvJZr27cS")
              .token("dGhpcyBpcyBub3QgYSByZWFsIHRva2VuIGJ1dCBpdCBpcyBvbmx5IHRlc3QgZGF0YS4gZG8gbm90IHRyeSB0byByZWFkIHRva2VuIQ==")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_security/oidc/prepare":
    post:
      tags:
      - security
      summary: Prepare OpenID connect authentication
      description: |-
        Create an oAuth 2.0 authentication request as a URL string based on the configuration of the OpenID Connect authentication realm in Elasticsearch.

        The response of this API is a URL pointing to the Authorization Endpoint of the configured OpenID Connect Provider, which can be used to redirect the browser of the user in order to continue the authentication process.

        Elasticsearch exposes all the necessary OpenID Connect related functionality with the OpenID Connect APIs.
        These APIs are used internally by Kibana in order to provide OpenID Connect based authentication, but can also be used by other, custom web applications or other clients.
      operationId: security-oidc-prepare-authentication
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                iss:
                  description: |-
                    In the case of a third party initiated single sign on, this is the issuer identifier for the OP that the RP is to send the authentication request to.
                    It cannot be specified when *realm* is specified.
                    One of *realm* or *iss* is required.
                  type: string
                login_hint:
                  description: |-
                    In the case of a third party initiated single sign on, it is a string value that is included in the authentication request as the *login_hint* parameter.
                    This parameter is not valid when *realm* is specified.
                  type: string
                nonce:
                  description: |-
                    The value used to associate a client session with an ID token and to mitigate replay attacks.
                    If the caller of the API does not provide a value, Elasticsearch will generate one with sufficient entropy and return it in the response.
                  type: string
                realm:
                  description: |-
                    The name of the OpenID Connect realm in Elasticsearch the configuration of which should be used in order to generate the authentication request.
                    It cannot be specified when *iss* is specified.
                    One of *realm* or *iss* is required.
                  type: string
                state:
                  description: |-
                    The value used to maintain state between the authentication request and the response, typically used as a Cross-Site Request Forgery mitigation.
                    If the caller of the API does not provide a value, Elasticsearch will generate one with sufficient entropy and return it in the response.
                  type: string
            examples:
              OidcPrepareAuthenticationRequestExample1:
                summary: Prepare with realm
                description: 'Run `POST /_security/oidc/prepare` to generate an authentication
                  request for the OpenID Connect Realm `oidc1`.

                  '
                value: |-
                  {
                    "realm" : "oidc1"
                  }
              OidcPrepareAuthenticationRequestExample2:
                summary: Prepare with realm, state, and nonce
                description: 'Run `POST /_security/oidc/prepare` to generate an authentication
                  request for the OpenID Connect Realm `oidc1`, where the values for
                  the `state` and the `nonce` have been generated by the client.

                  '
                value: |-
                  {
                    "realm" : "oidc1",
                    "state" : "lGYK0EcSLjqH6pkT5EVZjC6eIW5YCGgywj2sxROO",
                    "nonce" : "zOBXLJGUooRrbLbQk5YCcyC8AXw3iloynvluYhZ5"
                  }
              OidcPrepareAuthenticationRequestExample3:
                summary: Prepare by realm
                description: 'Run `POST /_security/oidc/prepare` to generate an authentication
                  request for a third party initiated single sign on. Specify the
                  issuer that should be used for matching the appropriate OpenID Connect
                  Authentication realm.

                  '
                value: |-
                  {
                    "iss" : "http://127.0.0.1:8080",
                    "login_hint": "this_is_an_opaque_string"
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  nonce:
                    type: string
                  realm:
                    type: string
                  redirect:
                    description: A URI that points to the authorization endpoint of
                      the OpenID Connect Provider with all the parameters of the authentication
                      request as HTTP GET parameters.
                    type: string
                  state:
                    type: string
                required:
                - nonce
                - realm
                - redirect
                - state
              examples:
                OidcPrepareAuthenticationResponseExample1:
                  description: 'A successful response from `POST /_security/oidc/prepare`.
                    It contains the URI pointing to the Authorization Endpoint of
                    the OpenID Connect Provider with all the parameters of the Authentication
                    Request as HTTP GET parameters.

                    '
                  value: |-
                    {
                      "redirect" : "http://127.0.0.1:8080/c2id-login?scope=openid&response_type=id_token&redirect_uri=https%3A%2F%2Fmy.fantastic.rp%2Fcb&state=4dbrihtIAt3wBTwo6DxK-vdk-sSyDBV8Yf0AjdkdT5I&nonce=WaBPH0KqPVdG5HHdSxPRjfoZbXMCicm5v1OiAj0DUFM&client_id=elasticsearch-rp",
                      "state" : "4dbrihtIAt3wBTwo6DxK-vdk-sSyDBV8Yf0AjdkdT5I",
                      "nonce" : "WaBPH0KqPVdG5HHdSxPRjfoZbXMCicm5v1OiAj0DUFM",
                      "realm" : "oidc1"
                    }
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: |-
          POST /_security/oidc/prepare
          {
            "realm" : "oidc1"
          }
      - lang: Python
        source: |-
          resp = client.security.oidc_prepare_authentication(
              realm="oidc1",
          )
      - lang: JavaScript
        source: |-
          const response = await client.security.oidcPrepareAuthentication({
            realm: "oidc1",
          });
      - lang: Ruby
        source: |-
          response = client.security.oidc_prepare_authentication(
            body: {
              "realm": "oidc1"
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->security()->oidcPrepareAuthentication([
              "body" => [
                  "realm" => "oidc1",
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"realm":"oidc1"}'' "$ELASTICSEARCH_URL/_security/oidc/prepare"'
      - lang: Java
        source: |
          client.security().oidcPrepareAuthentication(o -> o
              .realm("oidc1")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_security/privilege":
    post:
      tags:
      - security
      summary: 'Create or update application privileges

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb put\">PUT</span>\n                      <span class=\"operation-path\">/_security/privilege</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_security/privilege</span>\n
        \                     </div>\n                    \n\nTo use this API, you
        must have one of the following privileges:\n\n* The `manage_security` cluster
        privilege (or a greater privilege such as `all`).\n* The \"Manage Application
        Privileges\" global privilege for the application being referenced in the
        request.\n\nApplication names are formed from a prefix, with an optional suffix
        that conform to the following rules:\n\n* The prefix must begin with a lowercase
        ASCII letter.\n* The prefix must contain only ASCII letters or digits.\n*
        The prefix must be at least 3 characters long.\n* If the suffix exists, it
        must begin with either a dash `-` or `_`.\n* The suffix cannot contain any
        of the following characters: `\\`, `/`, `*`, `?`, `\"`, `<`, `>`, `|`, `,`,
        `*`.\n* No part of the name can contain whitespace.\n\nPrivilege names must
        begin with a lowercase ASCII letter and must contain only ASCII letters and
        digits along with the characters `_`, `-`, and `.`.\n\nAction names can contain
        any number of printable ASCII characters and must contain at least one of
        the following characters: `/`, `*`, `:`.\n\n## Required authorization\n\n*
        Cluster privileges: `manage_security`\n"
      externalDocs:
        url: https://www.elastic.co/docs/reference/elasticsearch/security-privileges
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/security-api-put-privileges.html
      operationId: security-put-privileges
      parameters:
      - "$ref": "#/components/parameters/security.put_privileges-refresh"
      requestBody:
        "$ref": "#/components/requestBodies/security.put_privileges"
      responses:
        '200':
          "$ref": "#/components/responses/security.put_privileges-200"
      x-state: Generally available; Added in 6.4.0
      x-codeSamples:
      - lang: Console
        source: "PUT /_security/privilege\n{\n  \"myapp\": {\n    \"read\": {\n      \"actions\":
          [ \n        \"data:read/*\" , \n        \"action:login\" ],\n        \"metadata\":
          { \n          \"description\": \"Read access to myapp\"\n        }\n      }\n
          \   }\n}"
      - lang: Python
        source: |-
          resp = client.security.put_privileges(
              privileges={
                  "myapp": {
                      "read": {
                          "actions": [
                              "data:read/*",
                              "action:login"
                          ],
                          "metadata": {
                              "description": "Read access to myapp"
                          }
                      }
                  }
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.security.putPrivileges({
            privileges: {
              myapp: {
                read: {
                  actions: ["data:read/*", "action:login"],
                  metadata: {
                    description: "Read access to myapp",
                  },
                },
              },
            },
          });
      - lang: Ruby
        source: |-
          response = client.security.put_privileges(
            body: {
              "myapp": {
                "read": {
                  "actions": [
                    "data:read/*",
                    "action:login"
                  ],
                  "metadata": {
                    "description": "Read access to myapp"
                  }
                }
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->security()->putPrivileges([
              "body" => [
                  "myapp" => [
                      "read" => [
                          "actions" => array(
                              "data:read/*",
                              "action:login",
                          ),
                          "metadata" => [
                              "description" => "Read access to myapp",
                          ],
                      ],
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"myapp":{"read":{"actions":["data:read/*","action:login"],"metadata":{"description":"Read
          access to myapp"}}}}'' "$ELASTICSEARCH_URL/_security/privilege"'
      - lang: Java
        source: |
          client.security().putPrivileges(p -> p
              .privileges("myapp", Map.of("read", Actions.of(a -> a
                      .actions(List.of("data:read/*","action:login"))
                      .metadata("description", JsonData.fromJson("\"Read access to myapp\""))
                  )))
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_security/_query/api_key":
    post:
      tags:
      - security
      summary: 'Find API keys with a query

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_security/_query/api_key</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_security/_query/api_key</span>\n
        \                     </div>\n                    \n\nGet a paginated list
        of API keys and their information.\nYou can optionally filter the results
        with a query.\n\nTo use this API, you must have at least the `manage_own_api_key`
        or the `read_security` cluster privileges.\nIf you have only the `manage_own_api_key`
        privilege, this API returns only the API keys that you own.\nIf you have the
        `read_security`, `manage_api_key`, or greater privileges (including `manage_security`),
        this API returns all API keys regardless of ownership.\nRefer to the linked
        documentation for examples of how to find API keys:\n\n## Required authorization\n\n*
        Cluster privileges: `manage_own_api_key`,`read_security`\n"
      externalDocs:
        url: https://www.elastic.co/docs/reference/elasticsearch/rest-apis/query-api-keys
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/security-api-query-api-key.html
      operationId: security-query-api-keys
      parameters:
      - "$ref": "#/components/parameters/security.query_api_keys-with_limited_by"
      - "$ref": "#/components/parameters/security.query_api_keys-with_profile_uid"
      - "$ref": "#/components/parameters/security.query_api_keys-typed_keys"
      requestBody:
        "$ref": "#/components/requestBodies/security.query_api_keys"
      responses:
        '200':
          "$ref": "#/components/responses/security.query_api_keys-200"
      x-state: Generally available; Added in 7.15.0
      x-codeSamples:
      - lang: Console
        source: |-
          GET /_security/_query/api_key?with_limited_by=true
          {
            "query": {
              "ids": {
                "values": [
                  "VuaCfGcBCdbkQm-e5aOx"
                ]
              }
            }
          }
      - lang: Python
        source: |-
          resp = client.security.query_api_keys(
              with_limited_by=True,
              query={
                  "ids": {
                      "values": [
                          "VuaCfGcBCdbkQm-e5aOx"
                      ]
                  }
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.security.queryApiKeys({
            with_limited_by: "true",
            query: {
              ids: {
                values: ["VuaCfGcBCdbkQm-e5aOx"],
              },
            },
          });
      - lang: Ruby
        source: |-
          response = client.security.query_api_keys(
            with_limited_by: "true",
            body: {
              "query": {
                "ids": {
                  "values": [
                    "VuaCfGcBCdbkQm-e5aOx"
                  ]
                }
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->security()->queryApiKeys([
              "with_limited_by" => "true",
              "body" => [
                  "query" => [
                      "ids" => [
                          "values" => array(
                              "VuaCfGcBCdbkQm-e5aOx",
                          ),
                      ],
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"query":{"ids":{"values":["VuaCfGcBCdbkQm-e5aOx"]}}}''
          "$ELASTICSEARCH_URL/_security/_query/api_key?with_limited_by=true"'
      - lang: Java
        source: |
          client.security().queryApiKeys(q -> q
              .query(qu -> qu
                  .ids(i -> i
                      .values("VuaCfGcBCdbkQm-e5aOx")
                  )
              )
              .withLimitedBy(true)
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_security/_query/role":
    post:
      tags:
      - security
      summary: 'Find roles with a query

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_security/_query/role</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_security/_query/role</span>\n
        \                     </div>\n                    \n\nGet roles in a paginated
        manner.\nThe role management APIs are generally the preferred way to manage
        roles, rather than using file-based role management.\nThe query roles API
        does not retrieve roles that are defined in roles files, nor built-in ones.\nYou
        can optionally filter the results with a query.\nAlso, the results can be
        paginated and sorted.\n\n## Required authorization\n\n* Cluster privileges:
        `read_security`\n"
      operationId: security-query-role
      requestBody:
        "$ref": "#/components/requestBodies/security.query_role"
      responses:
        '200':
          "$ref": "#/components/responses/security.query_role-200"
      x-state: Generally available; Added in 8.15.0
      x-codeSamples:
      - lang: Console
        source: |-
          POST /_security/_query/role
          {
              "sort": ["name"]
          }
      - lang: Python
        source: |-
          resp = client.security.query_role(
              sort=[
                  "name"
              ],
          )
      - lang: JavaScript
        source: |-
          const response = await client.security.queryRole({
            sort: ["name"],
          });
      - lang: Ruby
        source: |-
          response = client.security.query_role(
            body: {
              "sort": [
                "name"
              ]
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->security()->queryRole([
              "body" => [
                  "sort" => array(
                      "name",
                  ),
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"sort":["name"]}'' "$ELASTICSEARCH_URL/_security/_query/role"'
      - lang: Java
        source: |
          client.security().queryRole(q -> q
              .sort(s -> s
                  .field(f -> f
                      .field("name")
                  )
              )
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_security/_query/user":
    post:
      tags:
      - security
      summary: 'Find users with a query

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_security/_query/user</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_security/_query/user</span>\n
        \                     </div>\n                    \n\nGet information for
        users in a paginated manner.\nYou can optionally filter the results with a
        query.\n\nNOTE: As opposed to the get user API, built-in users are excluded
        from the result.\nThis API is only for native users.\n\n## Required authorization\n\n*
        Cluster privileges: `read_security`\n"
      operationId: security-query-user
      parameters:
      - "$ref": "#/components/parameters/security.query_user-with_profile_uid"
      requestBody:
        "$ref": "#/components/requestBodies/security.query_user"
      responses:
        '200':
          "$ref": "#/components/responses/security.query_user-200"
      x-state: Generally available; Added in 8.14.0
      x-codeSamples:
      - lang: Console
        source: |-
          POST /_security/_query/user?with_profile_uid=true
          {
              "query": {
                  "prefix": {
                      "roles": "other"
                  }
              }
          }
      - lang: Python
        source: |-
          resp = client.security.query_user(
              with_profile_uid=True,
              query={
                  "prefix": {
                      "roles": "other"
                  }
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.security.queryUser({
            with_profile_uid: "true",
            query: {
              prefix: {
                roles: "other",
              },
            },
          });
      - lang: Ruby
        source: |-
          response = client.security.query_user(
            with_profile_uid: "true",
            body: {
              "query": {
                "prefix": {
                  "roles": "other"
                }
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->security()->queryUser([
              "with_profile_uid" => "true",
              "body" => [
                  "query" => [
                      "prefix" => [
                          "roles" => "other",
                      ],
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"query":{"prefix":{"roles":"other"}}}'' "$ELASTICSEARCH_URL/_security/_query/user?with_profile_uid=true"'
      - lang: Java
        source: |
          client.security().queryUser(q -> q
              .query(qu -> qu
                  .prefix(p -> p
                      .field("roles")
                      .value("other")
                  )
              )
              .withProfileUid(true)
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_security/saml/authenticate":
    post:
      tags:
      - security
      summary: Authenticate SAML
      description: |-
        Submit a SAML response message to Elasticsearch for consumption.

        NOTE: This API is intended for use by custom web applications other than Kibana.
        If you are using Kibana, refer to the documentation for configuring SAML single-sign-on on the Elastic Stack.

        The SAML message that is submitted can be:

        * A response to a SAML authentication request that was previously created using the SAML prepare authentication API.
        * An unsolicited SAML message in the case of an IdP-initiated single sign-on (SSO) flow.

        In either case, the SAML message needs to be a base64 encoded XML document with a root element of `<Response>`.

        After successful validation, Elasticsearch responds with an Elasticsearch internal access token and refresh token that can be subsequently used for authentication.
        This API endpoint essentially exchanges SAML responses that indicate successful authentication in the IdP for Elasticsearch access and refresh tokens, which can be used for authentication against Elasticsearch.
      externalDocs:
        url: https://www.elastic.co/docs/deploy-manage/users-roles/cluster-or-deployment-auth/saml
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/security-api-saml-authenticate.html
      operationId: security-saml-authenticate
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                content:
                  description: The SAML response as it was sent by the user's browser,
                    usually a Base64 encoded XML document.
                  type: string
                ids:
                  description: A JSON array with all the valid SAML Request Ids that
                    the caller of the API has for the current user.
                  allOf:
                  - "$ref": "#/components/schemas/_types.Ids"
                realm:
                  description: The name of the realm that should authenticate the
                    SAML response. Useful in cases where many SAML realms are defined.
                  type: string
              required:
              - content
              - ids
            examples:
              SamlAuthenticateRequestExample1:
                description: 'Run `POST /_security/saml/authenticate` to exchange
                  a SAML Response indicating a successful authentication at the SAML
                  IdP for an Elasticsearch access token and refresh token to be used
                  in subsequent requests.

                  '
                value: |-
                  {
                    "content" : "PHNhbWxwOlJlc3BvbnNlIHhtbG5zOnNhbWxwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIHhtbG5zOnNhbWw9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMD.....",
                    "ids" : ["4fee3b046395c4e751011e97f8900b5273d56685"]
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  access_token:
                    description: The access token that was generated by Elasticsearch.
                    type: string
                  username:
                    description: The authenticated user's name.
                    type: string
                  expires_in:
                    description: The amount of time (in seconds) left until the token
                      expires.
                    type: number
                  refresh_token:
                    description: The refresh token that was generated by Elasticsearch.
                    type: string
                  realm:
                    description: The name of the realm where the user was authenticated.
                    type: string
                  in_response_to:
                    description: The id of the request that initiated the authentication
                      process.
                    type: string
                required:
                - access_token
                - username
                - expires_in
                - refresh_token
                - realm
              examples:
                SamlAuthenticateResponseExample1:
                  description: A successful response from `POST /_security/saml/authenticate`.
                  value: |-
                    {
                      "access_token" : "46ToAxZVaXVVZTVKOVF5YU04ZFJVUDVSZlV3",
                      "username" : "Bearer",
                      "expires_in" : 1200,
                      "refresh_token": "mJdXLtmvTUSpoLwMvdBt_w",
                      "realm": "saml1",
                      "in_response_to": "4fee3b046395c4e751011e97f8900b5273d56685"
                    }
      x-state: Generally available; Added in 7.5.0
      x-codeSamples:
      - lang: Console
        source: |-
          POST /_security/saml/authenticate
          {
            "content" : "PHNhbWxwOlJlc3BvbnNlIHhtbG5zOnNhbWxwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIHhtbG5zOnNhbWw9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMD.....",
            "ids" : ["4fee3b046395c4e751011e97f8900b5273d56685"]
          }
      - lang: Python
        source: |-
          resp = client.security.saml_authenticate(
              content="PHNhbWxwOlJlc3BvbnNlIHhtbG5zOnNhbWxwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIHhtbG5zOnNhbWw9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMD.....",
              ids=[
                  "4fee3b046395c4e751011e97f8900b5273d56685"
              ],
          )
      - lang: JavaScript
        source: |-
          const response = await client.security.samlAuthenticate({
            content:
              "PHNhbWxwOlJlc3BvbnNlIHhtbG5zOnNhbWxwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIHhtbG5zOnNhbWw9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMD.....",
            ids: ["4fee3b046395c4e751011e97f8900b5273d56685"],
          });
      - lang: Ruby
        source: |-
          response = client.security.saml_authenticate(
            body: {
              "content": "PHNhbWxwOlJlc3BvbnNlIHhtbG5zOnNhbWxwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIHhtbG5zOnNhbWw9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMD.....",
              "ids": [
                "4fee3b046395c4e751011e97f8900b5273d56685"
              ]
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->security()->samlAuthenticate([
              "body" => [
                  "content" => "PHNhbWxwOlJlc3BvbnNlIHhtbG5zOnNhbWxwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIHhtbG5zOnNhbWw9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMD.....",
                  "ids" => array(
                      "4fee3b046395c4e751011e97f8900b5273d56685",
                  ),
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"content":"PHNhbWxwOlJlc3BvbnNlIHhtbG5zOnNhbWxwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIHhtbG5zOnNhbWw9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMD.....","ids":["4fee3b046395c4e751011e97f8900b5273d56685"]}''
          "$ELASTICSEARCH_URL/_security/saml/authenticate"'
      - lang: Java
        source: |
          client.security().samlAuthenticate(s -> s
              .content("PHNhbWxwOlJlc3BvbnNlIHhtbG5zOnNhbWxwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIHhtbG5zOnNhbWw9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMD.....")
              .ids("4fee3b046395c4e751011e97f8900b5273d56685")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_security/saml/complete_logout":
    post:
      tags:
      - security
      summary: Logout of SAML completely
      description: |-
        Verifies the logout response sent from the SAML IdP.

        NOTE: This API is intended for use by custom web applications other than Kibana.
        If you are using Kibana, refer to the documentation for configuring SAML single-sign-on on the Elastic Stack.

        The SAML IdP may send a logout response back to the SP after handling the SP-initiated SAML Single Logout.
        This API verifies the response by ensuring the content is relevant and validating its signature.
        An empty response is returned if the verification process is successful.
        The response can be sent by the IdP with either the HTTP-Redirect or the HTTP-Post binding.
        The caller of this API must prepare the request accordingly so that this API can handle either of them.
      externalDocs:
        url: https://www.elastic.co/docs/deploy-manage/users-roles/cluster-or-deployment-auth/saml
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/security-api-saml-complete-logout.html
      operationId: security-saml-complete-logout
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                realm:
                  description: The name of the SAML realm in Elasticsearch for which
                    the configuration is used to verify the logout response.
                  type: string
                ids:
                  description: A JSON array with all the valid SAML Request Ids that
                    the caller of the API has for the current user.
                  allOf:
                  - "$ref": "#/components/schemas/_types.Ids"
                query_string:
                  description: If the SAML IdP sends the logout response with the
                    HTTP-Redirect binding, this field must be set to the query string
                    of the redirect URI.
                  type: string
                content:
                  description: If the SAML IdP sends the logout response with the
                    HTTP-Post binding, this field must be set to the value of the
                    SAMLResponse form parameter from the logout response.
                  type: string
              required:
              - realm
              - ids
            examples:
              SamlCompleteLogoutRequestExample1:
                summary: HTTP-Redirect binding
                description: 'Run `POST /_security/saml/complete_logout` to verify
                  the logout response sent by the SAML IdP using the HTTP-Redirect
                  binding.

                  '
                value: |-
                  {
                    "realm": "saml1",
                    "ids": [ "_1c368075e0b3..." ],
                    "query_string": "SAMLResponse=fZHLasMwEEVbfb1bf...&SigAlg=http%3A%2F%2Fwww.w3.org%2F2000%2F09%2Fxmldsig%23rsa-sha1&Signature=CuCmFn%2BLqnaZGZJqK..."
                  }
              SamlCompleteLogoutRequestExample2:
                summary: HTTP-Post binding
                description: 'Run `POST /_security/saml/complete_logout` to verify
                  the logout response sent by the SAML IdP using the HTTP-Post binding.

                  '
                value: |-
                  {
                    "realm": "saml1",
                    "ids": [ "_1c368075e0b3..." ],
                    "content": "PHNhbWxwOkxvZ291dFJlc3BvbnNlIHhtbG5zOnNhbWxwPSJ1cm46..."
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json: {}
      x-state: Generally available; Added in 7.14.0
      x-codeSamples:
      - lang: Console
        source: |-
          POST /_security/saml/complete_logout
          {
            "realm": "saml1",
            "ids": [ "_1c368075e0b3..." ],
            "query_string": "SAMLResponse=fZHLasMwEEVbfb1bf...&SigAlg=http%3A%2F%2Fwww.w3.org%2F2000%2F09%2Fxmldsig%23rsa-sha1&Signature=CuCmFn%2BLqnaZGZJqK..."
          }
      - lang: Python
        source: |-
          resp = client.security.saml_complete_logout(
              realm="saml1",
              ids=[
                  "_1c368075e0b3..."
              ],
              query_string="SAMLResponse=fZHLasMwEEVbfb1bf...&SigAlg=http%3A%2F%2Fwww.w3.org%2F2000%2F09%2Fxmldsig%23rsa-sha1&Signature=CuCmFn%2BLqnaZGZJqK...",
          )
      - lang: JavaScript
        source: |-
          const response = await client.security.samlCompleteLogout({
            realm: "saml1",
            ids: ["_1c368075e0b3..."],
            query_string:
              "SAMLResponse=fZHLasMwEEVbfb1bf...&SigAlg=http%3A%2F%2Fwww.w3.org%2F2000%2F09%2Fxmldsig%23rsa-sha1&Signature=CuCmFn%2BLqnaZGZJqK...",
          });
      - lang: Ruby
        source: |-
          response = client.security.saml_complete_logout(
            body: {
              "realm": "saml1",
              "ids": [
                "_1c368075e0b3..."
              ],
              "query_string": "SAMLResponse=fZHLasMwEEVbfb1bf...&SigAlg=http%3A%2F%2Fwww.w3.org%2F2000%2F09%2Fxmldsig%23rsa-sha1&Signature=CuCmFn%2BLqnaZGZJqK..."
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->security()->samlCompleteLogout([
              "body" => [
                  "realm" => "saml1",
                  "ids" => array(
                      "_1c368075e0b3...",
                  ),
                  "query_string" => "SAMLResponse=fZHLasMwEEVbfb1bf...&SigAlg=http%3A%2F%2Fwww.w3.org%2F2000%2F09%2Fxmldsig%23rsa-sha1&Signature=CuCmFn%2BLqnaZGZJqK...",
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"realm":"saml1","ids":["_1c368075e0b3..."],"query_string":"SAMLResponse=fZHLasMwEEVbfb1bf...&SigAlg=http%3A%2F%2Fwww.w3.org%2F2000%2F09%2Fxmldsig%23rsa-sha1&Signature=CuCmFn%2BLqnaZGZJqK..."}''
          "$ELASTICSEARCH_URL/_security/saml/complete_logout"'
      - lang: Java
        source: |
          client.security().samlCompleteLogout(s -> s
              .ids("_1c368075e0b3...")
              .queryString("SAMLResponse=fZHLasMwEEVbfb1bf...&SigAlg=http%3A%2F%2Fwww.w3.org%2F2000%2F09%2Fxmldsig%23rsa-sha1&Signature=CuCmFn%2BLqnaZGZJqK...")
              .realm("saml1")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_security/saml/invalidate":
    post:
      tags:
      - security
      summary: Invalidate SAML
      description: |-
        Submit a SAML LogoutRequest message to Elasticsearch for consumption.

        NOTE: This API is intended for use by custom web applications other than Kibana.
        If you are using Kibana, refer to the documentation for configuring SAML single-sign-on on the Elastic Stack.

        The logout request comes from the SAML IdP during an IdP initiated Single Logout.
        The custom web application can use this API to have Elasticsearch process the `LogoutRequest`.
        After successful validation of the request, Elasticsearch invalidates the access token and refresh token that corresponds to that specific SAML principal and provides a URL that contains a SAML LogoutResponse message.
        Thus the user can be redirected back to their IdP.
      externalDocs:
        url: https://www.elastic.co/docs/deploy-manage/users-roles/cluster-or-deployment-auth/saml
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/security-api-saml-invalidate.html
      operationId: security-saml-invalidate
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                acs:
                  description: The Assertion Consumer Service URL that matches the
                    one of the SAML realm in Elasticsearch that should be used. You
                    must specify either this parameter or the `realm` parameter.
                  type: string
                query_string:
                  description: |-
                    The query part of the URL that the user was redirected to by the SAML IdP to initiate the Single Logout.
                    This query should include a single parameter named `SAMLRequest` that contains a SAML logout request that is deflated and Base64 encoded.
                    If the SAML IdP has signed the logout request, the URL should include two extra parameters named `SigAlg` and `Signature` that contain the algorithm used for the signature and the signature value itself.
                    In order for Elasticsearch to be able to verify the IdP's signature, the value of the `query_string` field must be an exact match to the string provided by the browser.
                    The client application must not attempt to parse or process the string in any way.
                  type: string
                realm:
                  description: The name of the SAML realm in Elasticsearch the configuration.
                    You must specify either this parameter or the `acs` parameter.
                  type: string
              required:
              - query_string
            examples:
              SamlInvalidateRequestExample1:
                description: 'Run `POST /_security/saml/invalidate` to invalidate
                  all the tokens for realm `saml1` pertaining to the user that is
                  identified in the SAML Logout Request.

                  '
                value: |-
                  {
                    "query_string" : "SAMLRequest=nZFda4MwFIb%2FiuS%2BmviRpqFaClKQdbvo2g12M2KMraCJ9cRR9utnW4Wyi13sMie873MeznJ1aWrnS3VQGR0j4mLkKC1NUeljjA77zYyhVbIE0dR%2By7fmaHq7U%2BdegXWGpAZ%2B%2F4pR32luBFTAtWgUcCv56%2Fp5y30X87Yz1khTIycdgpUW9kY7WdsC9zxoXTvMvWuVV98YyMnSGH2SYE5pwALBIr9QKiwDGpW0oGVUznGeMyJZKFkQ4jBf5HnhUymjIhzCAL3KNFihbYx8TBYzzGaY7EnIyZwHzCWMfiDnbRIftkSjJr%2BFu0e9v%2B0EgOquRiiZjKpiVFp6j50T4WXoyNJ%2FEWC9fdqc1t%2F1%2B2F3aUpjzhPiXpqMz1%2FHSn4A&SigAlg=http%3A%2F%2Fwww.w3.org%2F2001%2F04%2Fxmldsig-more%23rsa-sha256&Signature=MsAYz2NFdovMG2mXf6TSpu5vlQQyEJAg%2B4KCwBqJTmrb3yGXKUtIgvjqf88eCAK32v3eN8vupjPC8LglYmke1ZnjK0%2FKxzkvSjTVA7mMQe2AQdKbkyC038zzRq%2FYHcjFDE%2Bz0qISwSHZY2NyLePmwU7SexEXnIz37jKC6NMEhus%3D",
                    "realm" : "saml1"
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  invalidated:
                    description: The number of tokens that were invalidated as part
                      of this logout.
                    type: number
                  realm:
                    description: The realm name of the SAML realm in Elasticsearch
                      that authenticated the user.
                    type: string
                  redirect:
                    description: A SAML logout response as a parameter so that the
                      user can be redirected back to the SAML IdP.
                    type: string
                required:
                - invalidated
                - realm
                - redirect
              examples:
                SamlInvalidateResponseExample1:
                  description: A successful response from `POST /_security/saml/invalidate`.
                  value: |-
                    {
                      "redirect" : "https://my-idp.org/logout/SAMLResponse=....",
                      "invalidated" : 2,
                      "realm" : "saml1"
                    }
      x-state: Generally available; Added in 7.5.0
      x-codeSamples:
      - lang: Console
        source: |-
          POST /_security/saml/invalidate
          {
            "query_string" : "SAMLRequest=nZFda4MwFIb%2FiuS%2BmviRpqFaClKQdbvo2g12M2KMraCJ9cRR9utnW4Wyi13sMie873MeznJ1aWrnS3VQGR0j4mLkKC1NUeljjA77zYyhVbIE0dR%2By7fmaHq7U%2BdegXWGpAZ%2B%2F4pR32luBFTAtWgUcCv56%2Fp5y30X87Yz1khTIycdgpUW9kY7WdsC9zxoXTvMvWuVV98YyMnSGH2SYE5pwALBIr9QKiwDGpW0oGVUznGeMyJZKFkQ4jBf5HnhUymjIhzCAL3KNFihbYx8TBYzzGaY7EnIyZwHzCWMfiDnbRIftkSjJr%2BFu0e9v%2B0EgOquRiiZjKpiVFp6j50T4WXoyNJ%2FEWC9fdqc1t%2F1%2B2F3aUpjzhPiXpqMz1%2FHSn4A&SigAlg=http%3A%2F%2Fwww.w3.org%2F2001%2F04%2Fxmldsig-more%23rsa-sha256&Signature=MsAYz2NFdovMG2mXf6TSpu5vlQQyEJAg%2B4KCwBqJTmrb3yGXKUtIgvjqf88eCAK32v3eN8vupjPC8LglYmke1ZnjK0%2FKxzkvSjTVA7mMQe2AQdKbkyC038zzRq%2FYHcjFDE%2Bz0qISwSHZY2NyLePmwU7SexEXnIz37jKC6NMEhus%3D",
            "realm" : "saml1"
          }
      - lang: Python
        source: |-
          resp = client.security.saml_invalidate(
              query_string="SAMLRequest=nZFda4MwFIb%2FiuS%2BmviRpqFaClKQdbvo2g12M2KMraCJ9cRR9utnW4Wyi13sMie873MeznJ1aWrnS3VQGR0j4mLkKC1NUeljjA77zYyhVbIE0dR%2By7fmaHq7U%2BdegXWGpAZ%2B%2F4pR32luBFTAtWgUcCv56%2Fp5y30X87Yz1khTIycdgpUW9kY7WdsC9zxoXTvMvWuVV98YyMnSGH2SYE5pwALBIr9QKiwDGpW0oGVUznGeMyJZKFkQ4jBf5HnhUymjIhzCAL3KNFihbYx8TBYzzGaY7EnIyZwHzCWMfiDnbRIftkSjJr%2BFu0e9v%2B0EgOquRiiZjKpiVFp6j50T4WXoyNJ%2FEWC9fdqc1t%2F1%2B2F3aUpjzhPiXpqMz1%2FHSn4A&SigAlg=http%3A%2F%2Fwww.w3.org%2F2001%2F04%2Fxmldsig-more%23rsa-sha256&Signature=MsAYz2NFdovMG2mXf6TSpu5vlQQyEJAg%2B4KCwBqJTmrb3yGXKUtIgvjqf88eCAK32v3eN8vupjPC8LglYmke1ZnjK0%2FKxzkvSjTVA7mMQe2AQdKbkyC038zzRq%2FYHcjFDE%2Bz0qISwSHZY2NyLePmwU7SexEXnIz37jKC6NMEhus%3D",
              realm="saml1",
          )
      - lang: JavaScript
        source: |-
          const response = await client.security.samlInvalidate({
            query_string:
              "SAMLRequest=nZFda4MwFIb%2FiuS%2BmviRpqFaClKQdbvo2g12M2KMraCJ9cRR9utnW4Wyi13sMie873MeznJ1aWrnS3VQGR0j4mLkKC1NUeljjA77zYyhVbIE0dR%2By7fmaHq7U%2BdegXWGpAZ%2B%2F4pR32luBFTAtWgUcCv56%2Fp5y30X87Yz1khTIycdgpUW9kY7WdsC9zxoXTvMvWuVV98YyMnSGH2SYE5pwALBIr9QKiwDGpW0oGVUznGeMyJZKFkQ4jBf5HnhUymjIhzCAL3KNFihbYx8TBYzzGaY7EnIyZwHzCWMfiDnbRIftkSjJr%2BFu0e9v%2B0EgOquRiiZjKpiVFp6j50T4WXoyNJ%2FEWC9fdqc1t%2F1%2B2F3aUpjzhPiXpqMz1%2FHSn4A&SigAlg=http%3A%2F%2Fwww.w3.org%2F2001%2F04%2Fxmldsig-more%23rsa-sha256&Signature=MsAYz2NFdovMG2mXf6TSpu5vlQQyEJAg%2B4KCwBqJTmrb3yGXKUtIgvjqf88eCAK32v3eN8vupjPC8LglYmke1ZnjK0%2FKxzkvSjTVA7mMQe2AQdKbkyC038zzRq%2FYHcjFDE%2Bz0qISwSHZY2NyLePmwU7SexEXnIz37jKC6NMEhus%3D",
            realm: "saml1",
          });
      - lang: Ruby
        source: |-
          response = client.security.saml_invalidate(
            body: {
              "query_string": "SAMLRequest=nZFda4MwFIb%2FiuS%2BmviRpqFaClKQdbvo2g12M2KMraCJ9cRR9utnW4Wyi13sMie873MeznJ1aWrnS3VQGR0j4mLkKC1NUeljjA77zYyhVbIE0dR%2By7fmaHq7U%2BdegXWGpAZ%2B%2F4pR32luBFTAtWgUcCv56%2Fp5y30X87Yz1khTIycdgpUW9kY7WdsC9zxoXTvMvWuVV98YyMnSGH2SYE5pwALBIr9QKiwDGpW0oGVUznGeMyJZKFkQ4jBf5HnhUymjIhzCAL3KNFihbYx8TBYzzGaY7EnIyZwHzCWMfiDnbRIftkSjJr%2BFu0e9v%2B0EgOquRiiZjKpiVFp6j50T4WXoyNJ%2FEWC9fdqc1t%2F1%2B2F3aUpjzhPiXpqMz1%2FHSn4A&SigAlg=http%3A%2F%2Fwww.w3.org%2F2001%2F04%2Fxmldsig-more%23rsa-sha256&Signature=MsAYz2NFdovMG2mXf6TSpu5vlQQyEJAg%2B4KCwBqJTmrb3yGXKUtIgvjqf88eCAK32v3eN8vupjPC8LglYmke1ZnjK0%2FKxzkvSjTVA7mMQe2AQdKbkyC038zzRq%2FYHcjFDE%2Bz0qISwSHZY2NyLePmwU7SexEXnIz37jKC6NMEhus%3D",
              "realm": "saml1"
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->security()->samlInvalidate([
              "body" => [
                  "query_string" => "SAMLRequest=nZFda4MwFIb%2FiuS%2BmviRpqFaClKQdbvo2g12M2KMraCJ9cRR9utnW4Wyi13sMie873MeznJ1aWrnS3VQGR0j4mLkKC1NUeljjA77zYyhVbIE0dR%2By7fmaHq7U%2BdegXWGpAZ%2B%2F4pR32luBFTAtWgUcCv56%2Fp5y30X87Yz1khTIycdgpUW9kY7WdsC9zxoXTvMvWuVV98YyMnSGH2SYE5pwALBIr9QKiwDGpW0oGVUznGeMyJZKFkQ4jBf5HnhUymjIhzCAL3KNFihbYx8TBYzzGaY7EnIyZwHzCWMfiDnbRIftkSjJr%2BFu0e9v%2B0EgOquRiiZjKpiVFp6j50T4WXoyNJ%2FEWC9fdqc1t%2F1%2B2F3aUpjzhPiXpqMz1%2FHSn4A&SigAlg=http%3A%2F%2Fwww.w3.org%2F2001%2F04%2Fxmldsig-more%23rsa-sha256&Signature=MsAYz2NFdovMG2mXf6TSpu5vlQQyEJAg%2B4KCwBqJTmrb3yGXKUtIgvjqf88eCAK32v3eN8vupjPC8LglYmke1ZnjK0%2FKxzkvSjTVA7mMQe2AQdKbkyC038zzRq%2FYHcjFDE%2Bz0qISwSHZY2NyLePmwU7SexEXnIz37jKC6NMEhus%3D",
                  "realm" => "saml1",
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"query_string":"SAMLRequest=nZFda4MwFIb%2FiuS%2BmviRpqFaClKQdbvo2g12M2KMraCJ9cRR9utnW4Wyi13sMie873MeznJ1aWrnS3VQGR0j4mLkKC1NUeljjA77zYyhVbIE0dR%2By7fmaHq7U%2BdegXWGpAZ%2B%2F4pR32luBFTAtWgUcCv56%2Fp5y30X87Yz1khTIycdgpUW9kY7WdsC9zxoXTvMvWuVV98YyMnSGH2SYE5pwALBIr9QKiwDGpW0oGVUznGeMyJZKFkQ4jBf5HnhUymjIhzCAL3KNFihbYx8TBYzzGaY7EnIyZwHzCWMfiDnbRIftkSjJr%2BFu0e9v%2B0EgOquRiiZjKpiVFp6j50T4WXoyNJ%2FEWC9fdqc1t%2F1%2B2F3aUpjzhPiXpqMz1%2FHSn4A&SigAlg=http%3A%2F%2Fwww.w3.org%2F2001%2F04%2Fxmldsig-more%23rsa-sha256&Signature=MsAYz2NFdovMG2mXf6TSpu5vlQQyEJAg%2B4KCwBqJTmrb3yGXKUtIgvjqf88eCAK32v3eN8vupjPC8LglYmke1ZnjK0%2FKxzkvSjTVA7mMQe2AQdKbkyC038zzRq%2FYHcjFDE%2Bz0qISwSHZY2NyLePmwU7SexEXnIz37jKC6NMEhus%3D","realm":"saml1"}''
          "$ELASTICSEARCH_URL/_security/saml/invalidate"'
      - lang: Java
        source: |
          client.security().samlInvalidate(s -> s
              .queryString("SAMLRequest=nZFda4MwFIb%2FiuS%2BmviRpqFaClKQdbvo2g12M2KMraCJ9cRR9utnW4Wyi13sMie873MeznJ1aWrnS3VQGR0j4mLkKC1NUeljjA77zYyhVbIE0dR%2By7fmaHq7U%2BdegXWGpAZ%2B%2F4pR32luBFTAtWgUcCv56%2Fp5y30X87Yz1khTIycdgpUW9kY7WdsC9zxoXTvMvWuVV98YyMnSGH2SYE5pwALBIr9QKiwDGpW0oGVUznGeMyJZKFkQ4jBf5HnhUymjIhzCAL3KNFihbYx8TBYzzGaY7EnIyZwHzCWMfiDnbRIftkSjJr%2BFu0e9v%2B0EgOquRiiZjKpiVFp6j50T4WXoyNJ%2FEWC9fdqc1t%2F1%2B2F3aUpjzhPiXpqMz1%2FHSn4A&SigAlg=http%3A%2F%2Fwww.w3.org%2F2001%2F04%2Fxmldsig-more%23rsa-sha256&Signature=MsAYz2NFdovMG2mXf6TSpu5vlQQyEJAg%2B4KCwBqJTmrb3yGXKUtIgvjqf88eCAK32v3eN8vupjPC8LglYmke1ZnjK0%2FKxzkvSjTVA7mMQe2AQdKbkyC038zzRq%2FYHcjFDE%2Bz0qISwSHZY2NyLePmwU7SexEXnIz37jKC6NMEhus%3D")
              .realm("saml1")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_security/saml/logout":
    post:
      tags:
      - security
      summary: Logout of SAML
      description: |-
        Submits a request to invalidate an access token and refresh token.

        NOTE: This API is intended for use by custom web applications other than Kibana.
        If you are using Kibana, refer to the documentation for configuring SAML single-sign-on on the Elastic Stack.

        This API invalidates the tokens that were generated for a user by the SAML authenticate API.
        If the SAML realm in Elasticsearch is configured accordingly and the SAML IdP supports this, the Elasticsearch response contains a URL to redirect the user to the IdP that contains a SAML logout request (starting an SP-initiated SAML Single Logout).
      externalDocs:
        url: https://www.elastic.co/docs/deploy-manage/users-roles/cluster-or-deployment-auth/saml
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/security-api-saml-logout.html
      operationId: security-saml-logout
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                token:
                  description: |-
                    The access token that was returned as a response to calling the SAML authenticate API.
                    Alternatively, the most recent token that was received after refreshing the original one by using a `refresh_token`.
                  type: string
                refresh_token:
                  description: |-
                    The refresh token that was returned as a response to calling the SAML authenticate API.
                    Alternatively, the most recent refresh token that was received after refreshing the original access token.
                  type: string
              required:
              - token
            examples:
              SamlLogoutRequestExample1:
                description: 'Run `POST /_security/saml/logout` to invalidate the
                  pair of tokens that were generated by calling the SAML authenticate
                  API with a successful SAML response.

                  '
                value: |-
                  {
                    "token" : "46ToAxZVaXVVZTVKOVF5YU04ZFJVUDVSZlV3",
                    "refresh_token" : "mJdXLtmvTUSpoLwMvdBt_w"
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  redirect:
                    description: |-
                      A URL that contains a SAML logout request as a parameter.
                      You can use this URL to be redirected back to the SAML IdP and to initiate Single Logout.
                    type: string
                required:
                - redirect
              examples:
                SamlLogoutResponseExample1:
                  description: A successful response from `POST /_security/saml/logout`.
                  value: |-
                    {
                      "redirect" : "https://my-idp.org/logout/SAMLRequest=...."
                    }
      x-state: Generally available; Added in 7.5.0
      x-codeSamples:
      - lang: Console
        source: |-
          POST /_security/saml/logout
          {
            "token" : "46ToAxZVaXVVZTVKOVF5YU04ZFJVUDVSZlV3",
            "refresh_token" : "mJdXLtmvTUSpoLwMvdBt_w"
          }
      - lang: Python
        source: |-
          resp = client.security.saml_logout(
              token="46ToAxZVaXVVZTVKOVF5YU04ZFJVUDVSZlV3",
              refresh_token="mJdXLtmvTUSpoLwMvdBt_w",
          )
      - lang: JavaScript
        source: |-
          const response = await client.security.samlLogout({
            token: "46ToAxZVaXVVZTVKOVF5YU04ZFJVUDVSZlV3",
            refresh_token: "mJdXLtmvTUSpoLwMvdBt_w",
          });
      - lang: Ruby
        source: |-
          response = client.security.saml_logout(
            body: {
              "token": "46ToAxZVaXVVZTVKOVF5YU04ZFJVUDVSZlV3",
              "refresh_token": "mJdXLtmvTUSpoLwMvdBt_w"
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->security()->samlLogout([
              "body" => [
                  "token" => "46ToAxZVaXVVZTVKOVF5YU04ZFJVUDVSZlV3",
                  "refresh_token" => "mJdXLtmvTUSpoLwMvdBt_w",
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"token":"46ToAxZVaXVVZTVKOVF5YU04ZFJVUDVSZlV3","refresh_token":"mJdXLtmvTUSpoLwMvdBt_w"}''
          "$ELASTICSEARCH_URL/_security/saml/logout"'
      - lang: Java
        source: |
          client.security().samlLogout(s -> s
              .refreshToken("mJdXLtmvTUSpoLwMvdBt_w")
              .token("46ToAxZVaXVVZTVKOVF5YU04ZFJVUDVSZlV3")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_security/saml/prepare":
    post:
      tags:
      - security
      summary: Prepare SAML authentication
      description: |-
        Create a SAML authentication request (`<AuthnRequest>`) as a URL string based on the configuration of the respective SAML realm in Elasticsearch.

        NOTE: This API is intended for use by custom web applications other than Kibana.
        If you are using Kibana, refer to the documentation for configuring SAML single-sign-on on the Elastic Stack.

        This API returns a URL pointing to the SAML Identity Provider.
        You can use the URL to redirect the browser of the user in order to continue the authentication process.
        The URL includes a single parameter named `SAMLRequest`, which contains a SAML Authentication request that is deflated and Base64 encoded.
        If the configuration dictates that SAML authentication requests should be signed, the URL has two extra parameters named `SigAlg` and `Signature`.
        These parameters contain the algorithm used for the signature and the signature value itself.
        It also returns a random string that uniquely identifies this SAML Authentication request.
        The caller of this API needs to store this identifier as it needs to be used in a following step of the authentication process.
      externalDocs:
        url: https://www.elastic.co/docs/deploy-manage/users-roles/cluster-or-deployment-auth/saml
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/security-api-saml-prepare-authentication.html
      operationId: security-saml-prepare-authentication
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                acs:
                  description: |-
                    The Assertion Consumer Service URL that matches the one of the SAML realms in Elasticsearch.
                    The realm is used to generate the authentication request. You must specify either this parameter or the `realm` parameter.
                  type: string
                realm:
                  description: |-
                    The name of the SAML realm in Elasticsearch for which the configuration is used to generate the authentication request.
                    You must specify either this parameter or the `acs` parameter.
                  type: string
                relay_state:
                  description: |-
                    A string that will be included in the redirect URL that this API returns as the `RelayState` query parameter.
                    If the Authentication Request is signed, this value is used as part of the signature computation.
                  type: string
            examples:
              SamlPrepareAuthenticationRequestExample1:
                summary: Prepare with a realm
                description: 'Run `POST /_security/saml/prepare` to generate a SAML
                  authentication request for the SAML realm named `saml1`.

                  '
                value: |-
                  {
                    "realm" : "saml1"
                  }
              SamlPrepareAuthenticationRequestExample2:
                summary: Prepare with an ACS
                description: 'Run `POST /_security/saml/prepare` to generate a SAML
                  authentication request for the SAML realm with an Assertion Consuming
                  Service (ACS) URL.

                  '
                value: |-
                  {
                    "acs" : "https://kibana.org/api/security/saml/callback"
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    description: A unique identifier for the SAML Request to be stored
                      by the caller of the API.
                    allOf:
                    - "$ref": "#/components/schemas/_types.Id"
                  realm:
                    description: The name of the Elasticsearch realm that was used
                      to construct the authentication request.
                    type: string
                  redirect:
                    description: The URL to redirect the user to.
                    type: string
                required:
                - id
                - realm
                - redirect
              examples:
                SAmlPrepareAuthenticationResponseExample1:
                  description: A successful response from `POST /_security/saml/prepare`.
                  value: |-
                    {
                      "redirect": "https://my-idp.org/login?SAMLRequest=fVJdc6IwFP0rmbwDgUKLGbFDtc462%2B06FX3Yl50rBJsKCZsbrPbXL6J22hdfk%2FNx7zl3eL%2BvK7ITBqVWCfVdRolQuS6k2iR0mU2dmN6Phgh1FTQ8be2rehH%2FWoGWdESF%2FPST0NYorgElcgW1QG5zvkh%2FPfHAZbwx2upcV5SkiMLYzmqsFba1MAthdjIXy5enhL5a23DPOyo6W7kGBa7cwhZ2gO7G8OiW%2BR400kORt0bag7fzezAlk24eqcD2OxxlsNN5O3MdsW9c6CZnbq7rntF4d3s0D7BaHTZhIWN52P%2BcjiuGRbDU6cdj%2BEjJbJLQv4N4ADdhxBiEZbQuWclY4Q8iABbCXczCdSiKMAC%2FgyO2YqbQgrIJDZg%2FcFjsMD%2Fzb3gUcBa5sR%2F9oWR%2BzuJBqlPG14Jbn0DIf2TZ3Jn%2FXmSUrC5ddQB6bob37uZrJdeF4dIDHV3iuhb70Ptq83kOz53ubDLXlcwPJK0q%2FT42AqxIaAkVCkqm2tRgr49yfJGFU%2FZQ3hy3QyuUpd7obPv97kb%2FAQ%3D%3D"}",
                      "realm": "saml1",
                      "id": "_989a34500a4f5bf0f00d195aa04a7804b4ed42a1"
                    }
      x-state: Generally available; Added in 7.5.0
      x-codeSamples:
      - lang: Console
        source: |-
          POST /_security/saml/prepare
          {
            "realm" : "saml1"
          }
      - lang: Python
        source: |-
          resp = client.security.saml_prepare_authentication(
              realm="saml1",
          )
      - lang: JavaScript
        source: |-
          const response = await client.security.samlPrepareAuthentication({
            realm: "saml1",
          });
      - lang: Ruby
        source: |-
          response = client.security.saml_prepare_authentication(
            body: {
              "realm": "saml1"
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->security()->samlPrepareAuthentication([
              "body" => [
                  "realm" => "saml1",
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"realm":"saml1"}'' "$ELASTICSEARCH_URL/_security/saml/prepare"'
      - lang: Java
        source: |
          client.security().samlPrepareAuthentication(s -> s
              .realm("saml1")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_security/saml/metadata/{realm_name}":
    get:
      tags:
      - security
      summary: Create SAML service provider metadata
      description: |-
        Generate SAML metadata for a SAML 2.0 Service Provider.

        The SAML 2.0 specification provides a mechanism for Service Providers to describe their capabilities and configuration using a metadata file.
        This API generates Service Provider metadata based on the configuration of a SAML realm in Elasticsearch.
      operationId: security-saml-service-provider-metadata
      parameters:
      - in: path
        name: realm_name
        description: The name of the SAML realm in Elasticsearch.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Name"
        style: simple
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  metadata:
                    description: An XML string that contains a SAML Service Provider's
                      metadata for the realm.
                    type: string
                required:
                - metadata
              examples:
                SamlServiceProviderMetadataResponseExample1:
                  description: 'A successful response from `POST /_security/profile/u_P_0BMHgaOK3p7k-PFWUCbw9dQ-UFjt01oWJ_Dp2PmPc_0/_data`,
                    which indicates that the request is acknowledged.

                    '
                  value: |-
                    {
                      "acknowledged": true
                    }
      x-state: Generally available; Added in 7.11.0
      x-codeSamples:
      - lang: Console
        source: 'POST /_security/profile/u_P_0BMHgaOK3p7k-PFWUCbw9dQ-UFjt01oWJ_Dp2PmPc_0/_data

          '
      - lang: Python
        source: |-
          resp = client.security.update_user_profile_data(
              uid="u_P_0BMHgaOK3p7k-PFWUCbw9dQ-UFjt01oWJ_Dp2PmPc_0",
          )
      - lang: JavaScript
        source: |-
          const response = await client.security.updateUserProfileData({
            uid: "u_P_0BMHgaOK3p7k-PFWUCbw9dQ-UFjt01oWJ_Dp2PmPc_0",
          });
      - lang: Ruby
        source: |-
          response = client.security.update_user_profile_data(
            uid: "u_P_0BMHgaOK3p7k-PFWUCbw9dQ-UFjt01oWJ_Dp2PmPc_0"
          )
      - lang: PHP
        source: |-
          $resp = $client->security()->updateUserProfileData([
              "uid" => "u_P_0BMHgaOK3p7k-PFWUCbw9dQ-UFjt01oWJ_Dp2PmPc_0",
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_security/profile/u_P_0BMHgaOK3p7k-PFWUCbw9dQ-UFjt01oWJ_Dp2PmPc_0/_data"'
      - lang: Java
        source: |
          client.security().updateUserProfileData(u -> u
              .uid("u_P_0BMHgaOK3p7k-PFWUCbw9dQ-UFjt01oWJ_Dp2PmPc_0")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_security/profile/_suggest":
    post:
      tags:
      - security
      summary: 'Suggest a user profile

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_security/profile/_suggest</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_security/profile/_suggest</span>\n
        \                     </div>\n                    \n\nGet suggestions for
        user profiles that match specified search criteria.\n\nNOTE: The user profile
        feature is designed only for use by Kibana and Elastic's Observability, Enterprise
        Search, and Elastic Security solutions.\nIndividual users and external applications
        should not call this API directly.\nElastic reserves the right to change or
        remove this feature in future releases without prior notice.\n\n## Required
        authorization\n\n* Cluster privileges: `read_security`\n"
      operationId: security-suggest-user-profiles
      parameters:
      - "$ref": "#/components/parameters/security.suggest_user_profiles-data"
      requestBody:
        "$ref": "#/components/requestBodies/security.suggest_user_profiles"
      responses:
        '200':
          "$ref": "#/components/responses/security.suggest_user_profiles-200"
      x-state: Generally available; Added in 8.2.0
      x-codeSamples:
      - lang: Console
        source: "POST /_security/profile/_suggest\n{\n  \"name\": \"jack\",  \n  \"hint\":
          {\n    \"uids\": [  \n      \"u_8RKO7AKfEbSiIHZkZZ2LJy2MUSDPWDr3tMI_CkIGApU_0\",\n
          \     \"u_79HkWkwmnBH5gqFKwoxggWPjEBOur1zLPXQPEl1VBW0_0\"\n    ],\n    \"labels\":
          {\n      \"direction\": [\"north\", \"east\"]  \n    }\n  }\n}"
      - lang: Python
        source: |-
          resp = client.security.suggest_user_profiles(
              name="jack",
              hint={
                  "uids": [
                      "u_8RKO7AKfEbSiIHZkZZ2LJy2MUSDPWDr3tMI_CkIGApU_0",
                      "u_79HkWkwmnBH5gqFKwoxggWPjEBOur1zLPXQPEl1VBW0_0"
                  ],
                  "labels": {
                      "direction": [
                          "north",
                          "east"
                      ]
                  }
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.security.suggestUserProfiles({
            name: "jack",
            hint: {
              uids: [
                "u_8RKO7AKfEbSiIHZkZZ2LJy2MUSDPWDr3tMI_CkIGApU_0",
                "u_79HkWkwmnBH5gqFKwoxggWPjEBOur1zLPXQPEl1VBW0_0",
              ],
              labels: {
                direction: ["north", "east"],
              },
            },
          });
      - lang: Ruby
        source: |-
          response = client.security.suggest_user_profiles(
            body: {
              "name": "jack",
              "hint": {
                "uids": [
                  "u_8RKO7AKfEbSiIHZkZZ2LJy2MUSDPWDr3tMI_CkIGApU_0",
                  "u_79HkWkwmnBH5gqFKwoxggWPjEBOur1zLPXQPEl1VBW0_0"
                ],
                "labels": {
                  "direction": [
                    "north",
                    "east"
                  ]
                }
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->security()->suggestUserProfiles([
              "body" => [
                  "name" => "jack",
                  "hint" => [
                      "uids" => array(
                          "u_8RKO7AKfEbSiIHZkZZ2LJy2MUSDPWDr3tMI_CkIGApU_0",
                          "u_79HkWkwmnBH5gqFKwoxggWPjEBOur1zLPXQPEl1VBW0_0",
                      ),
                      "labels" => [
                          "direction" => array(
                              "north",
                              "east",
                          ),
                      ],
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"name":"jack","hint":{"uids":["u_8RKO7AKfEbSiIHZkZZ2LJy2MUSDPWDr3tMI_CkIGApU_0","u_79HkWkwmnBH5gqFKwoxggWPjEBOur1zLPXQPEl1VBW0_0"],"labels":{"direction":["north","east"]}}}''
          "$ELASTICSEARCH_URL/_security/profile/_suggest"'
      - lang: Java
        source: |
          client.security().suggestUserProfiles(s -> s
              .hint(h -> h
                  .uids(List.of("u_8RKO7AKfEbSiIHZkZZ2LJy2MUSDPWDr3tMI_CkIGApU_0","u_79HkWkwmnBH5gqFKwoxggWPjEBOur1zLPXQPEl1VBW0_0"))
                  .labels("direction", List.of("north","east"))
              )
              .name("jack")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_security/api_key/{id}":
    put:
      tags:
      - security
      summary: Update an API key
      description: |
        Update attributes of an existing API key.
        This API supports updates to an API key's access scope, expiration, and metadata.

        To use this API, you must have at least the `manage_own_api_key` cluster privilege.
        Users can only update API keys that they created or that were granted to them.
        To update another user’s API key, use the `run_as` feature to submit a request on behalf of another user.

        IMPORTANT: It's not possible to use an API key as the authentication credential for this API. The owner user’s credentials are required.

        Use this API to update API keys created by the create API key or grant API Key APIs.
        If you need to apply the same update to many API keys, you can use the bulk update API keys API to reduce overhead.
        It's not possible to update expired API keys or API keys that have been invalidated by the invalidate API key API.

        The access scope of an API key is derived from the `role_descriptors` you specify in the request and a snapshot of the owner user's permissions at the time of the request.
        The snapshot of the owner's permissions is updated automatically on every call.

        IMPORTANT: If you don't specify `role_descriptors` in the request, a call to this API might still change the API key's access scope.
        This change can occur if the owner user's permissions have changed since the API key was created or last modified.

        ## Required authorization

        * Cluster privileges: `manage_own_api_key`
      operationId: security-update-api-key
      parameters:
      - in: path
        name: id
        description: The ID of the API key to update.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                role_descriptors:
                  description: |-
                    The role descriptors to assign to this API key.
                    The API key's effective permissions are an intersection of its assigned privileges and the point in time snapshot of permissions of the owner user.
                    You can assign new privileges by specifying them in this parameter.
                    To remove assigned privileges, you can supply an empty `role_descriptors` parameter, that is to say, an empty object `{}`.
                    If an API key has no assigned privileges, it inherits the owner user's full permissions.
                    The snapshot of the owner's permissions is always updated, whether you supply the `role_descriptors` parameter or not.
                    The structure of a role descriptor is the same as the request for the create API keys API.
                  type: object
                  additionalProperties:
                    "$ref": "#/components/schemas/security._types.RoleDescriptor"
                metadata:
                  description: |-
                    Arbitrary metadata that you want to associate with the API key.
                    It supports a nested data structure.
                    Within the metadata object, keys beginning with `_` are reserved for system usage.
                    When specified, this value fully replaces the metadata previously associated with the API key.
                  allOf:
                  - "$ref": "#/components/schemas/_types.Metadata"
                expiration:
                  description: |-
                    The expiration time for the API key.
                    By default, API keys never expire.
                    This property can be omitted to leave the expiration unchanged.
                  allOf:
                  - "$ref": "#/components/schemas/_types.Duration"
            examples:
              UpdateApiKeyRequestExample1:
                summary: Update role and metadata
                description: 'Run `PUT /_security/api_key/VuaCfGcBCdbkQm-e5aOx` to
                  assign new role descriptors and metadata to an API key.

                  '
                value: |-
                  {
                    "role_descriptors": {
                      "role-a": {
                        "indices": [
                          {
                            "names": ["*"],
                            "privileges": ["write"]
                          }
                        ]
                      }
                    },
                    "metadata": {
                      "environment": {
                        "level": 2,
                        "trusted": true,
                        "tags": ["production"]
                      }
                    }
                  }
              UpdateApiKeyRequestExample2:
                summary: Remove permissions
                description: 'Run `PUT /_security/api_key/VuaCfGcBCdbkQm-e5aOx` to
                  remove the API key''s previously assigned permissions. It will inherit
                  the owner user''s full permissions.

                  '
                value: |-
                  {
                    "role_descriptors": {}
                  }
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  updated:
                    description: |-
                      If `true`, the API key was updated.
                      If `false`, the API key didn't change because no change was detected.
                    type: boolean
                required:
                - updated
              examples:
                UpdateApiKeyResponseExample1:
                  summary: Update role and metadata
                  description: 'A successful response from `PUT /_security/api_key/VuaCfGcBCdbkQm-e5aOx`.
                    The API key''s effective permissions after the update will be
                    the intersection of the supplied role descriptors and the owner
                    user''s permissions.

                    '
                  value: |-
                    {
                      "updated": true
                    }
      x-state: Generally available; Added in 8.4.0
      x-codeSamples:
      - lang: Console
        source: |-
          PUT /_security/api_key/VuaCfGcBCdbkQm-e5aOx
          {
            "role_descriptors": {
              "role-a": {
                "indices": [
                  {
                    "names": ["*"],
                    "privileges": ["write"]
                  }
                ]
              }
            },
            "metadata": {
              "environment": {
                "level": 2,
                "trusted": true,
                "tags": ["production"]
              }
            }
          }
      - lang: Python
        source: |-
          resp = client.security.update_api_key(
              id="VuaCfGcBCdbkQm-e5aOx",
              role_descriptors={
                  "role-a": {
                      "indices": [
                          {
                              "names": [
                                  "*"
                              ],
                              "privileges": [
                                  "write"
                              ]
                          }
                      ]
                  }
              },
              metadata={
                  "environment": {
                      "level": 2,
                      "trusted": True,
                      "tags": [
                          "production"
                      ]
                  }
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.security.updateApiKey({
            id: "VuaCfGcBCdbkQm-e5aOx",
            role_descriptors: {
              "role-a": {
                indices: [
                  {
                    names: ["*"],
                    privileges: ["write"],
                  },
                ],
              },
            },
            metadata: {
              environment: {
                level: 2,
                trusted: true,
                tags: ["production"],
              },
            },
          });
      - lang: Ruby
        source: |-
          response = client.security.update_api_key(
            id: "VuaCfGcBCdbkQm-e5aOx",
            body: {
              "role_descriptors": {
                "role-a": {
                  "indices": [
                    {
                      "names": [
                        "*"
                      ],
                      "privileges": [
                        "write"
                      ]
                    }
                  ]
                }
              },
              "metadata": {
                "environment": {
                  "level": 2,
                  "trusted": true,
                  "tags": [
                    "production"
                  ]
                }
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->security()->updateApiKey([
              "id" => "VuaCfGcBCdbkQm-e5aOx",
              "body" => [
                  "role_descriptors" => [
                      "role-a" => [
                          "indices" => array(
                              [
                                  "names" => array(
                                      "*",
                                  ),
                                  "privileges" => array(
                                      "write",
                                  ),
                              ],
                          ),
                      ],
                  ],
                  "metadata" => [
                      "environment" => [
                          "level" => 2,
                          "trusted" => true,
                          "tags" => array(
                              "production",
                          ),
                      ],
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"role_descriptors":{"role-a":{"indices":[{"names":["*"],"privileges":["write"]}]}},"metadata":{"environment":{"level":2,"trusted":true,"tags":["production"]}}}''
          "$ELASTICSEARCH_URL/_security/api_key/VuaCfGcBCdbkQm-e5aOx"'
      - lang: Java
        source: |
          client.security().updateApiKey(u -> u
              .id("VuaCfGcBCdbkQm-e5aOx")
              .metadata("environment", JsonData.fromJson("{\"level\":2,\"trusted\":true,\"tags\":[\"production\"]}"))
              .roleDescriptors("role-a", r -> r
                  .indices(i -> i
                      .names("*")
                      .privileges("write")
                  )
              )
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_security/cross_cluster/api_key/{id}":
    put:
      tags:
      - security
      summary: Update a cross-cluster API key
      description: |
        Update the attributes of an existing cross-cluster API key, which is used for API key based remote cluster access.

        To use this API, you must have at least the `manage_security` cluster privilege.
        Users can only update API keys that they created.
        To update another user's API key, use the `run_as` feature to submit a request on behalf of another user.

        IMPORTANT: It's not possible to use an API key as the authentication credential for this API.
        To update an API key, the owner user's credentials are required.

        It's not possible to update expired API keys, or API keys that have been invalidated by the invalidate API key API.

        This API supports updates to an API key's access scope, metadata, and expiration.
        The owner user's information, such as the `username` and `realm`, is also updated automatically on every call.

        NOTE: This API cannot update REST API keys, which should be updated by either the update API key or bulk update API keys API.

        To learn more about how to use this API, refer to the [Update cross cluter API key API examples page](https://www.elastic.co/docs/reference/elasticsearch/rest-apis/update-cc-api-key-examples).

        ## Required authorization

        * Cluster privileges: `manage_security`
      externalDocs:
        url: https://www.elastic.co/docs/deploy-manage/remote-clusters/remote-clusters-api-key
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/security-api-update-cross-cluster-api-key.html
      operationId: security-update-cross-cluster-api-key
      parameters:
      - in: path
        name: id
        description: The ID of the cross-cluster API key to update.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                access:
                  description: |-
                    The access to be granted to this API key.
                    The access is composed of permissions for cross cluster search and cross cluster replication.
                    At least one of them must be specified.
                    When specified, the new access assignment fully replaces the previously assigned access.
                  allOf:
                  - "$ref": "#/components/schemas/security._types.Access"
                expiration:
                  description: |-
                    The expiration time for the API key.
                    By default, API keys never expire. This property can be omitted to leave the value unchanged.
                  allOf:
                  - "$ref": "#/components/schemas/_types.Duration"
                metadata:
                  description: |-
                    Arbitrary metadata that you want to associate with the API key.
                    It supports nested data structure.
                    Within the metadata object, keys beginning with `_` are reserved for system usage.
                    When specified, this information fully replaces metadata previously associated with the API key.
                  allOf:
                  - "$ref": "#/components/schemas/_types.Metadata"
                certificate_identity:
                  description: |-
                    The certificate identity to associate with this API key.
                    This field is used to restrict the API key to connections authenticated by a specific TLS certificate.
                    The value should match the certificate's distinguished name (DN) pattern.
                    When specified, this fully replaces any previously assigned certificate identity.
                    To clear an existing certificate identity, explicitly set this field to `null`.
                    When omitted, the existing certificate identity remains unchanged.
                  type: string
              required:
              - access
            examples:
              UpdateCrossClusterApiKeyRequestExample1:
                description: 'Run `PUT /_security/cross_cluster/api_key/VuaCfGcBCdbkQm-e5aOx`
                  to update a cross-cluster API key, assigning it new access scope
                  and metadata.

                  '
                value: |-
                  {
                    "access": {
                      "replication": [
                        {
                          "names": ["archive"]
                        }
                      ]
                    },
                    "metadata": {
                      "application": "replication"
                    }
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  updated:
                    description: |-
                      If `true`, the API key was updated.
                      If `false`, the API key didn’t change because no change was detected.
                    type: boolean
                required:
                - updated
              examples:
                UpdateCrossClusterApiKeyResponseExample1:
                  description: 'A successful response from `PUT /_security/cross_cluster/api_key/VuaCfGcBCdbkQm-e5aOx`
                    that indicates that the API key was updated.

                    '
                  value: |-
                    {
                      "updated": true
                    }
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: |-
          PUT /_security/cross_cluster/api_key/VuaCfGcBCdbkQm-e5aOx
          {
            "access": {
              "replication": [
                {
                  "names": ["archive"]
                }
              ]
            },
            "metadata": {
              "application": "replication"
            }
          }
      - lang: Python
        source: |-
          resp = client.security.update_cross_cluster_api_key(
              id="VuaCfGcBCdbkQm-e5aOx",
              access={
                  "replication": [
                      {
                          "names": [
                              "archive"
                          ]
                      }
                  ]
              },
              metadata={
                  "application": "replication"
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.security.updateCrossClusterApiKey({
            id: "VuaCfGcBCdbkQm-e5aOx",
            access: {
              replication: [
                {
                  names: ["archive"],
                },
              ],
            },
            metadata: {
              application: "replication",
            },
          });
      - lang: Ruby
        source: |-
          response = client.security.update_cross_cluster_api_key(
            id: "VuaCfGcBCdbkQm-e5aOx",
            body: {
              "access": {
                "replication": [
                  {
                    "names": [
                      "archive"
                    ]
                  }
                ]
              },
              "metadata": {
                "application": "replication"
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->security()->updateCrossClusterApiKey([
              "id" => "VuaCfGcBCdbkQm-e5aOx",
              "body" => [
                  "access" => [
                      "replication" => array(
                          [
                              "names" => array(
                                  "archive",
                              ),
                          ],
                      ),
                  ],
                  "metadata" => [
                      "application" => "replication",
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"access":{"replication":[{"names":["archive"]}]},"metadata":{"application":"replication"}}''
          "$ELASTICSEARCH_URL/_security/cross_cluster/api_key/VuaCfGcBCdbkQm-e5aOx"'
      - lang: Java
        source: |
          client.security().updateCrossClusterApiKey(u -> u
              .access(a -> a
                  .replication(r -> r
                      .names("archive")
                  )
              )
              .id("VuaCfGcBCdbkQm-e5aOx")
              .metadata("application", JsonData.fromJson("\"replication\""))
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_security/profile/{uid}/_data":
    post:
      tags:
      - security
      summary: 'Update user profile data

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb put\">PUT</span>\n                      <span class=\"operation-path\">/_security/profile/{uid}/_data</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_security/profile/{uid}/_data</span>\n
        \                     </div>\n                    \n\nUpdate specific data
        for the user profile that is associated with a unique ID.\n\nNOTE: The user
        profile feature is designed only for use by Kibana and Elastic's Observability,
        Enterprise Search, and Elastic Security solutions.\nIndividual users and external
        applications should not call this API directly.\nElastic reserves the right
        to change or remove this feature in future releases without prior notice.\n\nTo
        use this API, you must have one of the following privileges:\n\n* The `manage_user_profile`
        cluster privilege.\n* The `update_profile_data` global privilege for the namespaces
        that are referenced in the request.\n\nThis API updates the `labels` and `data`
        fields of an existing user profile document with JSON objects.\nNew keys and
        their values are added to the profile document and conflicting keys are replaced
        by data that's included in the request.\n\nFor both labels and data, content
        is namespaced by the top-level fields.\nThe `update_profile_data` global privilege
        grants privileges for updating only the allowed namespaces.\n\n## Required
        authorization\n\n* Cluster privileges: `manage_user_profile`\n"
      operationId: security-update-user-profile-data
      parameters:
      - "$ref": "#/components/parameters/security.update_user_profile_data-uid"
      - "$ref": "#/components/parameters/security.update_user_profile_data-if_seq_no"
      - "$ref": "#/components/parameters/security.update_user_profile_data-if_primary_term"
      - "$ref": "#/components/parameters/security.update_user_profile_data-refresh"
      requestBody:
        "$ref": "#/components/requestBodies/security.update_user_profile_data"
      responses:
        '200':
          "$ref": "#/components/responses/security.update_user_profile_data-200"
      x-state: Generally available; Added in 8.2.0
      x-codeSamples:
      - lang: Console
        source: |-
          POST /_security/profile/u_P_0BMHgaOK3p7k-PFWUCbw9dQ-UFjt01oWJ_Dp2PmPc_0/_data
          {
            "labels": {
              "direction": "east"
            },
            "data": {
              "app1": {
                "theme": "default"
              }
            }
          }
      - lang: Python
        source: |-
          resp = client.security.update_user_profile_data(
              uid="u_P_0BMHgaOK3p7k-PFWUCbw9dQ-UFjt01oWJ_Dp2PmPc_0",
              labels={
                  "direction": "east"
              },
              data={
                  "app1": {
                      "theme": "default"
                  }
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.security.updateUserProfileData({
            uid: "u_P_0BMHgaOK3p7k-PFWUCbw9dQ-UFjt01oWJ_Dp2PmPc_0",
            labels: {
              direction: "east",
            },
            data: {
              app1: {
                theme: "default",
              },
            },
          });
      - lang: Ruby
        source: |-
          response = client.security.update_user_profile_data(
            uid: "u_P_0BMHgaOK3p7k-PFWUCbw9dQ-UFjt01oWJ_Dp2PmPc_0",
            body: {
              "labels": {
                "direction": "east"
              },
              "data": {
                "app1": {
                  "theme": "default"
                }
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->security()->updateUserProfileData([
              "uid" => "u_P_0BMHgaOK3p7k-PFWUCbw9dQ-UFjt01oWJ_Dp2PmPc_0",
              "body" => [
                  "labels" => [
                      "direction" => "east",
                  ],
                  "data" => [
                      "app1" => [
                          "theme" => "default",
                      ],
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"labels":{"direction":"east"},"data":{"app1":{"theme":"default"}}}''
          "$ELASTICSEARCH_URL/_security/profile/u_P_0BMHgaOK3p7k-PFWUCbw9dQ-UFjt01oWJ_Dp2PmPc_0/_data"'
      - lang: Java
        source: |
          client.security().updateUserProfileData(u -> u
              .data("app1", JsonData.fromJson("{\"theme\":\"default\"}"))
              .labels("direction", JsonData.fromJson("\"east\""))
              .uid("u_P_0BMHgaOK3p7k-PFWUCbw9dQ-UFjt01oWJ_Dp2PmPc_0")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_ingest/{index}/_simulate":
    post:
      tags:
      - ingest
      summary: 'Simulate data ingestion

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_ingest/_simulate</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_ingest/_simulate</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_ingest/{index}/_simulate</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_ingest/{index}/_simulate</span>\n
        \                     </div>\n                    \n\nRun ingest pipelines
        against a set of provided documents, optionally with substitute pipeline definitions,
        to simulate ingesting data into an index.\n\nThis API is meant to be used
        for troubleshooting or pipeline development, as it does not actually index
        any data into Elasticsearch.\n\nThe API runs the default and final pipeline
        for that index against a set of documents provided in the body of the request.\nIf
        a pipeline contains a reroute processor, it follows that reroute processor
        to the new index, running that index's pipelines as well the same way that
        a non-simulated ingest would.\nNo data is indexed into Elasticsearch.\nInstead,
        the transformed document is returned, along with the list of pipelines that
        have been run and the name of the index where the document would have been
        indexed if this were not a simulation.\nThe transformed document is validated
        against the mappings that would apply to this index, and any validation error
        is reported in the result.\n\nThis API differs from the simulate pipeline
        API in that you specify a single pipeline for that API, and it runs only that
        one pipeline.\nThe simulate pipeline API is more useful for developing a single
        pipeline, while the simulate ingest API is more useful for troubleshooting
        the interaction of the various pipelines that get applied when ingesting into
        an index.\n\nBy default, the pipeline definitions that are currently in the
        system are used.\nHowever, you can supply substitute pipeline definitions
        in the body of the request.\nThese will be used in place of the pipeline definitions
        that are already in the system. This can be used to replace existing pipeline
        definitions or to create new ones. The pipeline substitutions are used only
        within this request.\n\n## Required authorization\n\n* Index privileges: `index`\n"
      operationId: simulate-ingest
      parameters:
      - "$ref": "#/components/parameters/simulate.ingest-index"
      - "$ref": "#/components/parameters/simulate.ingest-pipeline"
      - "$ref": "#/components/parameters/simulate.ingest-merge_type"
      requestBody:
        "$ref": "#/components/requestBodies/simulate.ingest"
      responses:
        '200':
          "$ref": "#/components/responses/simulate.ingest-200"
      x-state: Technical preview; Added in 8.12.0
      x-codeSamples:
      - lang: Console
        source: |-
          POST /_ingest/_simulate
          {
            "docs": [
              {
                "_id": "123",
                "_index": "my-index",
                "_source": {
                  "foo": "bar"
                }
              },
              {
                "_id": "456",
                "_index": "my-index",
                "_source": {
                  "foo": "rab"
                }
              }
            ]
          }
      - lang: Python
        source: |-
          resp = client.simulate.ingest(
              docs=[
                  {
                      "_id": "123",
                      "_index": "my-index",
                      "_source": {
                          "foo": "bar"
                      }
                  },
                  {
                      "_id": "456",
                      "_index": "my-index",
                      "_source": {
                          "foo": "rab"
                      }
                  }
              ],
          )
      - lang: JavaScript
        source: |-
          const response = await client.simulate.ingest({
            docs: [
              {
                _id: "123",
                _index: "my-index",
                _source: {
                  foo: "bar",
                },
              },
              {
                _id: "456",
                _index: "my-index",
                _source: {
                  foo: "rab",
                },
              },
            ],
          });
      - lang: Ruby
        source: |-
          response = client.simulate.ingest(
            body: {
              "docs": [
                {
                  "_id": "123",
                  "_index": "my-index",
                  "_source": {
                    "foo": "bar"
                  }
                },
                {
                  "_id": "456",
                  "_index": "my-index",
                  "_source": {
                    "foo": "rab"
                  }
                }
              ]
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->simulate()->ingest([
              "body" => [
                  "docs" => array(
                      [
                          "_id" => "123",
                          "_index" => "my-index",
                          "_source" => [
                              "foo" => "bar",
                          ],
                      ],
                      [
                          "_id" => "456",
                          "_index" => "my-index",
                          "_source" => [
                              "foo" => "rab",
                          ],
                      ],
                  ),
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"docs":[{"_id":"123","_index":"my-index","_source":{"foo":"bar"}},{"_id":"456","_index":"my-index","_source":{"foo":"rab"}}]}''
          "$ELASTICSEARCH_URL/_ingest/_simulate"'
      - lang: Java
        source: |
          client.simulate().ingest(i -> i
              .docs(List.of(Document.of(d -> d
                      .id("123")
                      .index("my-index")
                      .source(JsonData.fromJson("{\"foo\":\"bar\"}"))
                  ),Document.of(d -> d
                      .id("456")
                      .index("my-index")
                      .source(JsonData.fromJson("{\"foo\":\"rab\"}"))
                  )))
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_slm/policy/{policy_id}":
    get:
      tags:
      - slm
      summary: 'Get policy information

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_slm/policy</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_slm/policy/{policy_id}</span>\n
        \                     </div>\n                    \n\nGet snapshot lifecycle
        policy definitions and information about the latest snapshot attempts.\n\n##
        Required authorization\n\n* Cluster privileges: `manage_slm`\n"
      operationId: slm-get-lifecycle
      parameters:
      - "$ref": "#/components/parameters/slm.get_lifecycle-policy_id"
      - "$ref": "#/components/parameters/slm.get_lifecycle-master_timeout"
      - "$ref": "#/components/parameters/slm.get_lifecycle-timeout"
      responses:
        '200':
          "$ref": "#/components/responses/slm.get_lifecycle-200"
      x-state: Generally available; Added in 7.4.0
      x-codeSamples:
      - lang: Console
        source: 'GET _slm/policy/daily-snapshots?human

          '
      - lang: Python
        source: |-
          resp = client.slm.get_lifecycle(
              policy_id="daily-snapshots",
              human=True,
          )
      - lang: JavaScript
        source: |-
          const response = await client.slm.getLifecycle({
            policy_id: "daily-snapshots",
            human: "true",
          });
      - lang: Ruby
        source: |-
          response = client.slm.get_lifecycle(
            policy_id: "daily-snapshots",
            human: "true"
          )
      - lang: PHP
        source: |-
          $resp = $client->slm()->getLifecycle([
              "policy_id" => "daily-snapshots",
              "human" => "true",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_slm/policy/daily-snapshots?human"'
      - lang: Java
        source: |
          client.slm().getLifecycle(g -> g
              .policyId("daily-snapshots")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    put:
      tags:
      - slm
      summary: Create or update a policy
      description: |
        Create or update a snapshot lifecycle policy.
        If the policy already exists, this request increments the policy version.
        Only the latest version of a policy is stored.

        ## Required authorization

        * Index privileges: `manage`
        * Cluster privileges: `manage_slm`
      operationId: slm-put-lifecycle
      parameters:
      - in: path
        name: policy_id
        description: The identifier for the snapshot lifecycle policy you want to
          create or update.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Name"
        style: simple
      - in: query
        name: master_timeout
        description: |-
          The period to wait for a connection to the master node.
          If no response is received before the timeout expires, the request fails and returns an error.
          To indicate that the request should never timeout, set it to `-1`.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: timeout
        description: |-
          The period to wait for a response.
          If no response is received before the timeout expires, the request fails and returns an error.
          To indicate that the request should never timeout, set it to `-1`.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                config:
                  description: Configuration for each snapshot created by the policy.
                  allOf:
                  - "$ref": "#/components/schemas/slm._types.Configuration"
                name:
                  description: Name automatically assigned to each snapshot created
                    by the policy. Date math is supported. To prevent conflicting
                    snapshot names, a UUID is automatically appended to each snapshot
                    name.
                  allOf:
                  - "$ref": "#/components/schemas/_types.Name"
                repository:
                  description: Repository used to store snapshots created by this
                    policy. This repository must exist prior to the policy’s creation.
                    You can create a repository using the snapshot repository API.
                  type: string
                retention:
                  description: Retention rules used to retain and delete snapshots
                    created by the policy.
                  allOf:
                  - "$ref": "#/components/schemas/slm._types.Retention"
                schedule:
                  description: Periodic or absolute schedule at which the policy creates
                    snapshots. SLM applies schedule changes immediately.
                  allOf:
                  - "$ref": "#/components/schemas/watcher._types.CronExpression"
            examples:
              PutSnapshotLifecycleRequestExample1 copy:
                summary: Create a policy
                description: 'Run `PUT /_slm/policy/daily-snapshots` to create a lifecycle
                  policy. The `schedule` is when the snapshot should be taken, in
                  this case, 1:30am daily. The `retention` details specify to: keep
                  snapshots for 30 days; always keep at least 5 successful snapshots,
                  even if they''re more than 30 days old; keep no more than 50 successful
                  snapshots, even if they''re less than 30 days old.

                  '
                value: |-
                  {
                    "schedule": "0 30 1 * * ?",
                    "name": "<daily-snap-{now/d}>",
                    "repository": "my_repository",
                    "config": {
                      "indices": ["data-*", "important"],
                      "ignore_unavailable": false,
                      "include_global_state": false
                    },
                    "retention": {
                      "expire_after": "30d",
                      "min_count": 5,
                      "max_count": 50
                    }
                  }
              PutSnapshotLifecycleRequestExample2:
                summary: Create a policy with intevals
                description: 'Run `PUT /_slm/policy/hourly-snapshots` to create a
                  lifecycle policy that uses interval scheduling. It creates a snapshot
                  once every hour. The first snapshot will be created one hour after
                  the policy is modified, with subsequent snapshots every hour afterward.

                  '
                value: |-
                  {
                    "schedule": "1h",
                    "name": "<hourly-snap-{now/d}>",
                    "repository": "my_repository",
                    "config": {
                      "indices": ["data-*", "important"]
                    }
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
      x-state: Generally available; Added in 7.4.0
      x-codeSamples:
      - lang: Console
        source: |-
          PUT /_slm/policy/daily-snapshots
          {
            "schedule": "0 30 1 * * ?",
            "name": "<daily-snap-{now/d}>",
            "repository": "my_repository",
            "config": {
              "indices": ["data-*", "important"],
              "ignore_unavailable": false,
              "include_global_state": false
            },
            "retention": {
              "expire_after": "30d",
              "min_count": 5,
              "max_count": 50
            }
          }
      - lang: Python
        source: |-
          resp = client.slm.put_lifecycle(
              policy_id="daily-snapshots",
              schedule="0 30 1 * * ?",
              name="<daily-snap-{now/d}>",
              repository="my_repository",
              config={
                  "indices": [
                      "data-*",
                      "important"
                  ],
                  "ignore_unavailable": False,
                  "include_global_state": False
              },
              retention={
                  "expire_after": "30d",
                  "min_count": 5,
                  "max_count": 50
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.slm.putLifecycle({
            policy_id: "daily-snapshots",
            schedule: "0 30 1 * * ?",
            name: "<daily-snap-{now/d}>",
            repository: "my_repository",
            config: {
              indices: ["data-*", "important"],
              ignore_unavailable: false,
              include_global_state: false,
            },
            retention: {
              expire_after: "30d",
              min_count: 5,
              max_count: 50,
            },
          });
      - lang: Ruby
        source: |-
          response = client.slm.put_lifecycle(
            policy_id: "daily-snapshots",
            body: {
              "schedule": "0 30 1 * * ?",
              "name": "<daily-snap-{now/d}>",
              "repository": "my_repository",
              "config": {
                "indices": [
                  "data-*",
                  "important"
                ],
                "ignore_unavailable": false,
                "include_global_state": false
              },
              "retention": {
                "expire_after": "30d",
                "min_count": 5,
                "max_count": 50
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->slm()->putLifecycle([
              "policy_id" => "daily-snapshots",
              "body" => [
                  "schedule" => "0 30 1 * * ?",
                  "name" => "<daily-snap-{now/d}>",
                  "repository" => "my_repository",
                  "config" => [
                      "indices" => array(
                          "data-*",
                          "important",
                      ),
                      "ignore_unavailable" => false,
                      "include_global_state" => false,
                  ],
                  "retention" => [
                      "expire_after" => "30d",
                      "min_count" => 5,
                      "max_count" => 50,
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"schedule":"0 30 1 * * ?","name":"<daily-snap-{now/d}>","repository":"my_repository","config":{"indices":["data-*","important"],"ignore_unavailable":false,"include_global_state":false},"retention":{"expire_after":"30d","min_count":5,"max_count":50}}''
          "$ELASTICSEARCH_URL/_slm/policy/daily-snapshots"'
      - lang: Java
        source: |
          client.slm().putLifecycle(p -> p
              .config(c -> c
                  .ignoreUnavailable(false)
                  .indices(List.of("data-*","important"))
                  .includeGlobalState(false)
              )
              .name("<daily-snap-{now/d}>")
              .policyId("daily-snapshots")
              .repository("my_repository")
              .retention(r -> r
                  .expireAfter(e -> e
                      .time("30d")
                  )
                  .maxCount(50)
                  .minCount(5)
              )
              .schedule("0 30 1 * * ?")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    delete:
      tags:
      - slm
      summary: Delete a policy
      description: |
        Delete a snapshot lifecycle policy definition.
        This operation prevents any future snapshots from being taken but does not cancel in-progress snapshots or remove previously-taken snapshots.

        ## Required authorization

        * Cluster privileges: `manage_slm`
      operationId: slm-delete-lifecycle
      parameters:
      - in: path
        name: policy_id
        description: The id of the snapshot lifecycle policy to remove
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Name"
        style: simple
      - in: query
        name: master_timeout
        description: |-
          The period to wait for a connection to the master node.
          If no response is received before the timeout expires, the request fails and returns an error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: timeout
        description: |-
          The period to wait for a response.
          If no response is received before the timeout expires, the request fails and returns an error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
      x-state: Generally available; Added in 7.4.0
      x-codeSamples:
      - lang: Console
        source: 'DELETE /_slm/policy/daily-snapshots

          '
      - lang: Python
        source: |-
          resp = client.slm.delete_lifecycle(
              policy_id="daily-snapshots",
          )
      - lang: JavaScript
        source: |-
          const response = await client.slm.deleteLifecycle({
            policy_id: "daily-snapshots",
          });
      - lang: Ruby
        source: |-
          response = client.slm.delete_lifecycle(
            policy_id: "daily-snapshots"
          )
      - lang: PHP
        source: |-
          $resp = $client->slm()->deleteLifecycle([
              "policy_id" => "daily-snapshots",
          ]);
      - lang: curl
        source: 'curl -X DELETE -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_slm/policy/daily-snapshots"'
      - lang: Java
        source: |
          client.slm().deleteLifecycle(d -> d
              .policyId("daily-snapshots")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_slm/policy/{policy_id}/_execute":
    put:
      tags:
      - slm
      summary: Run a policy
      description: |
        Immediately create a snapshot according to the snapshot lifecycle policy without waiting for the scheduled time.
        The snapshot policy is normally applied according to its schedule, but you might want to manually run a policy before performing an upgrade or other maintenance.

        ## Required authorization

        * Cluster privileges: `manage_slm`
      operationId: slm-execute-lifecycle
      parameters:
      - in: path
        name: policy_id
        description: The id of the snapshot lifecycle policy to be executed
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Name"
        style: simple
      - in: query
        name: master_timeout
        description: |-
          The period to wait for a connection to the master node.
          If no response is received before the timeout expires, the request fails and returns an error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: timeout
        description: |-
          The period to wait for a response.
          If no response is received before the timeout expires, the request fails and returns an error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  snapshot_name:
                    allOf:
                    - "$ref": "#/components/schemas/_types.Name"
                required:
                - snapshot_name
              examples:
                ExecuteSnapshotLifecycleResponseExample1:
                  description: 'Run `POST /_slm/policy/daily-snapshots/_execute` to
                    take an immediate snapshot according to the `daily-snapshots`
                    policy.

                    '
                  value: |-
                    {
                      "snapshot_name": "daily-snap-2019.04.24-gwrqoo2xtea3q57vvg0uea"
                    }
      x-state: Generally available; Added in 7.4.0
      x-codeSamples:
      - lang: Console
        source: 'PUT /_slm/policy/daily-snapshots/_execute

          '
      - lang: Python
        source: |-
          resp = client.slm.execute_lifecycle(
              policy_id="daily-snapshots",
          )
      - lang: JavaScript
        source: |-
          const response = await client.slm.executeLifecycle({
            policy_id: "daily-snapshots",
          });
      - lang: Ruby
        source: |-
          response = client.slm.execute_lifecycle(
            policy_id: "daily-snapshots"
          )
      - lang: PHP
        source: |-
          $resp = $client->slm()->executeLifecycle([
              "policy_id" => "daily-snapshots",
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_slm/policy/daily-snapshots/_execute"'
      - lang: Java
        source: |
          client.slm().executeLifecycle(e -> e
              .policyId("daily-snapshots")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_slm/_execute_retention":
    post:
      tags:
      - slm
      summary: Run a retention policy
      description: |
        Manually apply the retention policy to force immediate removal of snapshots that are expired according to the snapshot lifecycle policy retention rules.
        The retention policy is normally applied according to its schedule.

        ## Required authorization

        * Cluster privileges: `manage_slm`
      operationId: slm-execute-retention
      parameters:
      - in: query
        name: master_timeout
        description: |-
          The period to wait for a connection to the master node.
          If no response is received before the timeout expires, the request fails and returns an error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: timeout
        description: |-
          The period to wait for a response.
          If no response is received before the timeout expires, the request fails and returns an error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
      x-state: Generally available; Added in 7.5.0
      x-codeSamples:
      - lang: Console
        source: 'POST _slm/_execute_retention

          '
      - lang: Python
        source: resp = client.slm.execute_retention()
      - lang: JavaScript
        source: const response = await client.slm.executeRetention();
      - lang: Ruby
        source: response = client.slm.execute_retention
      - lang: PHP
        source: "$resp = $client->slm()->executeRetention();"
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_slm/_execute_retention"'
      - lang: Java
        source: 'client.slm().executeRetention(e -> e);

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_slm/stats":
    get:
      tags:
      - slm
      summary: Get snapshot lifecycle management statistics
      description: |
        Get global and policy-level statistics about actions taken by snapshot lifecycle management.

        ## Required authorization

        * Cluster privileges: `manage_slm`
      operationId: slm-get-stats
      parameters:
      - in: query
        name: master_timeout
        description: Period to wait for a connection to the master node. If no response
          is received before the timeout expires, the request fails and returns an
          error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: timeout
        description: Period to wait for a response. If no response is received before
          the timeout expires, the request fails and returns an error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  retention_deletion_time:
                    allOf:
                    - "$ref": "#/components/schemas/_types.Duration"
                  retention_deletion_time_millis:
                    allOf:
                    - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
                  retention_failed:
                    type: number
                  retention_runs:
                    type: number
                  retention_timed_out:
                    type: number
                  total_snapshots_deleted:
                    type: number
                  total_snapshot_deletion_failures:
                    type: number
                  total_snapshots_failed:
                    type: number
                  total_snapshots_taken:
                    type: number
                  policy_stats:
                    type: array
                    items:
                      "$ref": "#/components/schemas/slm._types.SnapshotPolicyStats"
                required:
                - retention_deletion_time
                - retention_deletion_time_millis
                - retention_failed
                - retention_runs
                - retention_timed_out
                - total_snapshots_deleted
                - total_snapshot_deletion_failures
                - total_snapshots_failed
                - total_snapshots_taken
                - policy_stats
              examples:
                GetSnapshotLifecycleManagementStatsResponseExample1:
                  description: A successful response from `GET /_slm/stats`.
                  value: |-
                    {
                      "retention_runs": 13,
                      "retention_failed": 0,
                      "retention_timed_out": 0,
                      "retention_deletion_time": "1.4s",
                      "retention_deletion_time_millis": 1404,
                      "policy_stats": [ ],
                      "total_snapshots_taken": 1,
                      "total_snapshots_failed": 1,
                      "total_snapshots_deleted": 0,
                      "total_snapshot_deletion_failures": 0
                    }
      x-state: Generally available; Added in 7.5.0
      x-codeSamples:
      - lang: Console
        source: 'GET /_slm/stats

          '
      - lang: Python
        source: resp = client.slm.get_stats()
      - lang: JavaScript
        source: const response = await client.slm.getStats();
      - lang: Ruby
        source: response = client.slm.get_stats
      - lang: PHP
        source: "$resp = $client->slm()->getStats();"
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_slm/stats"'
      - lang: Java
        source: 'client.slm().getStats(g -> g);

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_slm/status":
    get:
      tags:
      - slm
      summary: Get the snapshot lifecycle management status
      description: |2


        ## Required authorization

        * Cluster privileges: `read_slm`
      operationId: slm-get-status
      parameters:
      - in: query
        name: master_timeout
        description: |-
          The period to wait for a connection to the master node.
          If no response is received before the timeout expires, the request fails and returns an error.
          To indicate that the request should never timeout, set it to `-1`.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: timeout
        description: |-
          The period to wait for a response.
          If no response is received before the timeout expires, the request fails and returns an error.
          To indicate that the request should never timeout, set it to `-1`.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  operation_mode:
                    allOf:
                    - "$ref": "#/components/schemas/_types.LifecycleOperationMode"
                required:
                - operation_mode
              examples:
                GetSnapshotLifecycleManagementStatusResponseExample1:
                  description: A successful response from `GET _slm/status`.
                  value: |-
                    {
                      "operation_mode": "RUNNING"
                    }
      x-state: Generally available; Added in 7.6.0
      x-codeSamples:
      - lang: Console
        source: 'GET _slm/status

          '
      - lang: Python
        source: resp = client.slm.get_status()
      - lang: JavaScript
        source: const response = await client.slm.getStatus();
      - lang: Ruby
        source: response = client.slm.get_status
      - lang: PHP
        source: "$resp = $client->slm()->getStatus();"
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_slm/status"'
      - lang: Java
        source: 'client.slm().getStatus(g -> g);

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_slm/start":
    post:
      tags:
      - slm
      summary: Start snapshot lifecycle management
      description: |
        Snapshot lifecycle management (SLM) starts automatically when a cluster is formed.
        Manually starting SLM is necessary only if it has been stopped using the stop SLM API.

        ## Required authorization

        * Cluster privileges: `manage_slm`
      operationId: slm-start
      parameters:
      - in: query
        name: master_timeout
        description: |-
          The period to wait for a connection to the master node.
          If no response is received before the timeout expires, the request fails and returns an error.
          To indicate that the request should never timeout, set it to `-1`.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: timeout
        description: |-
          The period to wait for a response.
          If no response is received before the timeout expires, the request fails and returns an error.
          To indicate that the request should never timeout, set it to `-1`.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
              examples:
                StartSnapshotLifecycleManagementResponseExample1:
                  description: A successful response from `POST _slm/start`.
                  value: |-
                    {
                      "acknowledged": true
                    }
      x-state: Generally available; Added in 7.6.0
      x-codeSamples:
      - lang: Console
        source: 'POST _slm/start

          '
      - lang: Python
        source: resp = client.slm.start()
      - lang: JavaScript
        source: const response = await client.slm.start();
      - lang: Ruby
        source: response = client.slm.start
      - lang: PHP
        source: "$resp = $client->slm()->start();"
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_slm/start"'
      - lang: Java
        source: 'client.slm().start(s -> s);

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_slm/stop":
    post:
      tags:
      - slm
      summary: Stop snapshot lifecycle management
      description: |-
        Stop all snapshot lifecycle management (SLM) operations and the SLM plugin.
        This API is useful when you are performing maintenance on a cluster and need to prevent SLM from performing any actions on your data streams or indices.
        Stopping SLM does not stop any snapshots that are in progress.
        You can manually trigger snapshots with the run snapshot lifecycle policy API even if SLM is stopped.

        The API returns a response as soon as the request is acknowledged, but the plugin might continue to run until in-progress operations complete and it can be safely stopped.
        Use the get snapshot lifecycle management status API to see if SLM is running.
      operationId: slm-stop
      parameters:
      - in: query
        name: master_timeout
        description: |-
          The period to wait for a connection to the master node.
          If no response is received before the timeout expires, the request fails and returns an error.
          To indicate that the request should never timeout, set it to `-1`.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: timeout
        description: |-
          The period to wait for a response.
          If no response is received before the timeout expires, the request fails and returns an error.
          To indicate that the request should never timeout, set it to `-1`.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
      x-state: Generally available; Added in 7.6.0
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_snapshot/{repository}/_cleanup":
    post:
      tags:
      - snapshot
      summary: Clean up the snapshot repository
      description: |
        Trigger the review of the contents of a snapshot repository and delete any stale data not referenced by existing snapshots.

        ## Required authorization

        * Cluster privileges: `manage`
      externalDocs:
        url: https://www.elastic.co/docs/deploy-manage/tools/snapshot-and-restore/self-managed#snapshots-repository-cleanup
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/clean-up-snapshot-repo-api.html
      operationId: snapshot-cleanup-repository
      parameters:
      - in: path
        name: repository
        description: The name of the snapshot repository to clean up.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Name"
        style: simple
      - in: query
        name: master_timeout
        description: |-
          The period to wait for a connection to the master node.
          If the master node is not available before the timeout expires, the request fails and returns an error.
          To indicate that the request should never timeout, set it to `-1`
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: timeout
        description: |-
          The period to wait for a response from all relevant nodes in the cluster after updating the cluster metadata.
          If no response is received before the timeout expires, the cluster metadata update still applies but the response will indicate that it was not completely acknowledged.
          To indicate that the request should never timeout, set it to `-1`.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  results:
                    description: Statistics for cleanup operations.
                    allOf:
                    - "$ref": "#/components/schemas/snapshot.cleanup_repository.CleanupRepositoryResults"
                required:
                - results
              examples:
                SnapshotCleanupRepositoryResponseExample1:
                  description: A successful response from `POST /_snapshot/my_repository/_cleanup`.
                  value: |-
                    {
                      "results": {
                        "deleted_bytes": 20,
                        "deleted_blobs": 5
                      }
                    }
      x-state: Generally available; Added in 7.4.0
      x-codeSamples:
      - lang: Console
        source: 'POST /_snapshot/my_repository/_cleanup

          '
      - lang: Python
        source: |-
          resp = client.snapshot.cleanup_repository(
              name="my_repository",
          )
      - lang: JavaScript
        source: |-
          const response = await client.snapshot.cleanupRepository({
            name: "my_repository",
          });
      - lang: Ruby
        source: |-
          response = client.snapshot.cleanup_repository(
            repository: "my_repository"
          )
      - lang: PHP
        source: |-
          $resp = $client->snapshot()->cleanupRepository([
              "repository" => "my_repository",
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_snapshot/my_repository/_cleanup"'
      - lang: Java
        source: |
          client.snapshot().cleanupRepository(c -> c
              .name("my_repository")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_snapshot/{repository}/{snapshot}/_clone/{target_snapshot}":
    put:
      tags:
      - snapshot
      summary: Clone a snapshot
      description: |
        Clone part of all of a snapshot into another snapshot in the same repository.

        ## Required authorization

        * Cluster privileges: `manage`
      operationId: snapshot-clone
      parameters:
      - in: path
        name: repository
        description: The name of the snapshot repository that both source and target
          snapshot belong to.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Name"
        style: simple
      - in: path
        name: snapshot
        description: The source snapshot name.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Name"
        style: simple
      - in: path
        name: target_snapshot
        description: The target snapshot name.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Name"
        style: simple
      - in: query
        name: master_timeout
        description: |-
          The period to wait for the master node.
          If the master node is not available before the timeout expires, the request fails and returns an error.
          To indicate that the request should never timeout, set it to `-1`.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                indices:
                  description: |-
                    A comma-separated list of indices to include in the snapshot.
                    Multi-target syntax is supported.
                  type: string
              required:
              - indices
            examples:
              SnapshotCloneRequestExample1:
                description: Run `PUT /_snapshot/my_repository/source_snapshot/_clone/target_snapshot`
                  to clone the `source_snapshot` into a new `target_snapshot`.
                value: |-
                  {
                    "indices": "index_a,index_b"
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
      x-state: Generally available; Added in 7.10.0
      x-codeSamples:
      - lang: Console
        source: |-
          PUT /_snapshot/my_repository/source_snapshot/_clone/target_snapshot
          {
            "indices": "index_a,index_b"
          }
      - lang: Python
        source: |-
          resp = client.snapshot.clone(
              repository="my_repository",
              snapshot="source_snapshot",
              target_snapshot="target_snapshot",
              indices="index_a,index_b",
          )
      - lang: JavaScript
        source: |-
          const response = await client.snapshot.clone({
            repository: "my_repository",
            snapshot: "source_snapshot",
            target_snapshot: "target_snapshot",
            indices: "index_a,index_b",
          });
      - lang: Ruby
        source: |-
          response = client.snapshot.clone(
            repository: "my_repository",
            snapshot: "source_snapshot",
            target_snapshot: "target_snapshot",
            body: {
              "indices": "index_a,index_b"
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->snapshot()->clone([
              "repository" => "my_repository",
              "snapshot" => "source_snapshot",
              "target_snapshot" => "target_snapshot",
              "body" => [
                  "indices" => "index_a,index_b",
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"indices":"index_a,index_b"}'' "$ELASTICSEARCH_URL/_snapshot/my_repository/source_snapshot/_clone/target_snapshot"'
      - lang: Java
        source: |
          client.snapshot().clone(c -> c
              .indices("index_a,index_b")
              .repository("my_repository")
              .snapshot("source_snapshot")
              .targetSnapshot("target_snapshot")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_snapshot/{repository}/{snapshot}":
    get:
      tags:
      - snapshot
      summary: Get snapshot information
      description: |
        NOTE: The `after` parameter and `next` field enable you to iterate through snapshots with some consistency guarantees regarding concurrent creation or deletion of snapshots.
        It is guaranteed that any snapshot that exists at the beginning of the iteration and is not concurrently deleted will be seen during the iteration.
        Snapshots concurrently created may be seen during an iteration.

        ## Required authorization

        * Cluster privileges: `monitor_snapshot`
      operationId: snapshot-get
      parameters:
      - in: path
        name: repository
        description: |-
          A comma-separated list of snapshot repository names used to limit the request.
          Wildcard (`*`) expressions are supported.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Name"
        style: simple
      - in: path
        name: snapshot
        description: |-
          A comma-separated list of snapshot names to retrieve
          Wildcards (`*`) are supported.

          * To get information about all snapshots in a registered repository, use a wildcard (`*`) or `_all`.
          * To get information about any snapshots that are currently running, use `_current`.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Names"
        style: simple
      - in: query
        name: after
        description: An offset identifier to start pagination from as returned by
          the next field in the response body.
        deprecated: false
        schema:
          type: string
        x-state: Generally available; Added in 7.14.0
        style: form
      - in: query
        name: from_sort_value
        description: |-
          The value of the current sort column at which to start retrieval.
          It can be a string `snapshot-` or a repository name when sorting by snapshot or repository name.
          It can be a millisecond time value or a number when sorting by `index-` or shard count.
        deprecated: false
        schema:
          type: string
        x-state: Generally available; Added in 7.16.0
        style: form
      - in: query
        name: ignore_unavailable
        description: If `false`, the request returns an error for any snapshots that
          are unavailable.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: index_details
        description: |-
          If `true`, the response includes additional information about each index in the snapshot comprising the number of shards in the index, the total size of the index in bytes, and the maximum number of segments per shard in the index.
          The default is `false`, meaning that this information is omitted.
        deprecated: false
        schema:
          type: boolean
        x-state: Generally available; Added in 7.13.0
        style: form
      - in: query
        name: index_names
        description: If `true`, the response includes the name of each index in each
          snapshot.
        deprecated: false
        schema:
          type: boolean
        x-state: Generally available; Added in 8.3.0
        style: form
      - in: query
        name: include_repository
        description: If `true`, the response includes the repository name in each
          snapshot.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: master_timeout
        description: |-
          The period to wait for a connection to the master node.
          If no response is received before the timeout expires, the request fails and returns an error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: order
        description: |+
          The sort order.
          Valid values are `asc` for ascending and `desc` for descending order.
          The default behavior is ascending order.

          Supported values include:
            - `asc`: Ascending (smallest to largest)
            - `desc`: Descending (largest to smallest)

        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.SortOrder"
        x-state: Generally available; Added in 7.14.0
        style: form
      - in: query
        name: offset
        description: Numeric offset to start pagination from based on the snapshots
          matching this request. Using a non-zero value for this parameter is mutually
          exclusive with using the after parameter. Defaults to 0.
        deprecated: false
        schema:
          type: number
        x-state: Generally available; Added in 7.15.0
        style: form
      - in: query
        name: size
        description: |-
          The maximum number of snapshots to return.
          The default is -1, which means to return all that match the request without limit.
        deprecated: false
        schema:
          type: number
        x-state: Generally available; Added in 7.14.0
        style: form
      - in: query
        name: slm_policy_filter
        description: |-
          Filter snapshots by a comma-separated list of snapshot lifecycle management (SLM) policy names that snapshots belong to.

          You can use wildcards (`*`) and combinations of wildcards followed by exclude patterns starting with `-`.
          For example, the pattern `*,-policy-a-\*` will return all snapshots except for those that were created by an SLM policy with a name starting with `policy-a-`.
          Note that the wildcard pattern `*` matches all snapshots created by an SLM policy but not those snapshots that were not created by an SLM policy.
          To include snapshots that were not created by an SLM policy, you can use the special pattern `_none` that will match all snapshots without an SLM policy.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Name"
        x-state: Generally available; Added in 7.16.0
        style: form
      - in: query
        name: sort
        description: |-
          The sort order for the result.
          The default behavior is sorting by snapshot start time stamp.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/snapshot._types.SnapshotSort"
        x-state: Generally available; Added in 7.14.0
        style: form
      - in: query
        name: state
        description: |+
          Only return snapshots with a state found in the given comma-separated list of snapshot states.
          The default is all snapshot states.

          Supported values include:
            - `IN_PROGRESS`: The snapshot process has started.
            - `SUCCESS`: The snapshot process completed successfully.
            - `FAILED`: The snapshot failed.
            - `PARTIAL`: The snapshot was partially successful.
            - `INCOMPATIBLE`: The snapshot is incompatible with the current version of the cluster.

        deprecated: false
        schema:
          oneOf:
          - "$ref": "#/components/schemas/snapshot._types.SnapshotState"
          - type: array
            items:
              "$ref": "#/components/schemas/snapshot._types.SnapshotState"
        x-state: Generally available; Added in 9.1.0
        style: form
      - in: query
        name: verbose
        description: |-
          If `true`, returns additional information about each snapshot such as the version of Elasticsearch which took the snapshot, the start and end times of the snapshot, and the number of shards snapshotted.

          NOTE: The parameters `size`, `order`, `after`, `from_sort_value`, `offset`, `slm_policy_filter`, and `sort` are not supported when you set `verbose=false` and the sort order for requests with `verbose=false` is undefined.
        deprecated: false
        schema:
          type: boolean
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  remaining:
                    description: The number of remaining snapshots that were not returned
                      due to size limits and that can be fetched by additional requests
                      using the `next` field value.
                    x-state: Generally available; Added in 7.15.0
                    type: number
                  total:
                    description: The total number of snapshots that match the request
                      when ignoring the size limit or `after` query parameter.
                    x-state: Generally available; Added in 7.15.0
                    type: number
                  next:
                    description: |-
                      If the request contained a size limit and there might be more results, a `next` field will be added to the response.
                      It can be used as the `after` query parameter to fetch additional results.
                    type: string
                  responses:
                    type: array
                    items:
                      "$ref": "#/components/schemas/snapshot.get.SnapshotResponseItem"
                  snapshots:
                    type: array
                    items:
                      "$ref": "#/components/schemas/snapshot._types.SnapshotInfo"
                required:
                - remaining
                - total
              examples:
                SnapshotGetResponseExample1:
                  description: 'A successful response from `GET /_snapshot/my_repository/snapshot_*?sort=start_time&from_sort_value=1577833200000`.
                    The response contains information for all snapshots with names
                    starting with `snapshot_` and that started on or after timestamp
                    `1577833200000` (Jan 1st 2020) when sorted by snapshot start time
                    in the default ascending order.

                    '
                  value: |-
                    {
                      "snapshots": [
                        {
                          "snapshot": "snapshot_1",
                          "uuid": "dKb54xw67gvdRctLCxSket",
                          "repository": "my_repository",
                          "version_id": <version_id>,
                          "version": <version>,
                          "indices": [],
                          "data_streams": [],
                          "feature_states": [],
                          "include_global_state": true,
                          "state": "SUCCESS",
                          "start_time": "2020-07-06T21:55:18.128Z",
                          "start_time_in_millis": 1593093628849,
                          "end_time": "2020-07-06T21:55:18.129Z",
                          "end_time_in_millis": 1593093628850,
                          "duration_in_millis": 1,
                          "failures": [],
                          "shards": {
                            "total": 0,
                            "failed": 0,
                            "successful": 0
                          }
                        },
                        {
                          "snapshot": "snapshot_2",
                          "uuid": "vdRctLCxSketdKb54xw67g",
                          "repository": "my_repository",
                          "version_id": <version_id>,
                          "version": <version>,
                          "indices": [],
                          "data_streams": [],
                          "feature_states": [],
                          "include_global_state": true,
                          "state": "SUCCESS",
                          "start_time": "2020-07-06T21:55:18.130Z",
                          "start_time_in_millis": 1593093628851,
                          "end_time": "2020-07-06T21:55:18.130Z",
                          "end_time_in_millis": 1593093628851,
                          "duration_in_millis": 0,
                          "failures": [],
                          "shards": {
                            "total": 0,
                            "failed": 0,
                            "successful": 0
                          }
                        },
                        {
                          "snapshot": "snapshot_3",
                          "uuid": "dRctdKb54xw67gvLCxSket",
                          "repository": "my_repository",
                          "version_id": <version_id>,
                          "version": <version>,
                          "indices": [],
                          "data_streams": [],
                          "feature_states": [],
                          "include_global_state": true,
                          "state": "SUCCESS",
                          "start_time": "2020-07-06T21:55:18.131Z",
                          "start_time_in_millis": 1593093628852,
                          "end_time": "2020-07-06T21:55:18.135Z",
                          "end_time_in_millis": 1593093628856,
                          "duration_in_millis": 4,
                          "failures": [],
                          "shards": {
                            "total": 0,
                            "failed": 0,
                            "successful": 0
                          }
                        }
                      ],
                      "total": 3,
                      "remaining": 0
                    }
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'GET /_snapshot/my_repository/snapshot_*?sort=start_time&from_sort_value=1577833200000

          '
      - lang: Python
        source: |-
          resp = client.snapshot.get(
              repository="my_repository",
              snapshot="snapshot_*",
              sort="start_time",
              from_sort_value="1577833200000",
          )
      - lang: JavaScript
        source: |-
          const response = await client.snapshot.get({
            repository: "my_repository",
            snapshot: "snapshot_*",
            sort: "start_time",
            from_sort_value: 1577833200000,
          });
      - lang: Ruby
        source: |-
          response = client.snapshot.get(
            repository: "my_repository",
            snapshot: "snapshot_*",
            sort: "start_time",
            from_sort_value: "1577833200000"
          )
      - lang: PHP
        source: |-
          $resp = $client->snapshot()->get([
              "repository" => "my_repository",
              "snapshot" => "snapshot_*",
              "sort" => "start_time",
              "from_sort_value" => "1577833200000",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_snapshot/my_repository/snapshot_*?sort=start_time&from_sort_value=1577833200000"'
      - lang: Java
        source: |
          client.snapshot().get(g -> g
              .fromSortValue("1577833200000")
              .repository("my_repository")
              .snapshot("snapshot_*")
              .sort(SnapshotSort.StartTime)
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    post:
      tags:
      - snapshot
      summary: 'Create a snapshot

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb put\">PUT</span>\n                      <span class=\"operation-path\">/_snapshot/{repository}/{snapshot}</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_snapshot/{repository}/{snapshot}</span>\n
        \                     </div>\n                    \n\nTake a snapshot of a
        cluster or of data streams and indices.\n\n## Required authorization\n\n*
        Cluster privileges: `create_snapshot`\n"
      externalDocs:
        url: https://www.elastic.co/docs/deploy-manage/tools/snapshot-and-restore/create-snapshots
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/create-snapshot-api.html
      operationId: snapshot-create
      parameters:
      - "$ref": "#/components/parameters/snapshot.create-repository"
      - "$ref": "#/components/parameters/snapshot.create-snapshot"
      - "$ref": "#/components/parameters/snapshot.create-master_timeout"
      - "$ref": "#/components/parameters/snapshot.create-wait_for_completion"
      requestBody:
        "$ref": "#/components/requestBodies/snapshot.create"
      responses:
        '200':
          "$ref": "#/components/responses/snapshot.create-200"
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: |-
          PUT /_snapshot/my_repository/snapshot_2?wait_for_completion=true
          {
            "indices": "index_1,index_2",
            "ignore_unavailable": true,
            "include_global_state": false,
            "metadata": {
              "taken_by": "user123",
              "taken_because": "backup before upgrading"
            }
          }
      - lang: Python
        source: |-
          resp = client.snapshot.create(
              repository="my_repository",
              snapshot="snapshot_2",
              wait_for_completion=True,
              indices="index_1,index_2",
              ignore_unavailable=True,
              include_global_state=False,
              metadata={
                  "taken_by": "user123",
                  "taken_because": "backup before upgrading"
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.snapshot.create({
            repository: "my_repository",
            snapshot: "snapshot_2",
            wait_for_completion: "true",
            indices: "index_1,index_2",
            ignore_unavailable: true,
            include_global_state: false,
            metadata: {
              taken_by: "user123",
              taken_because: "backup before upgrading",
            },
          });
      - lang: Ruby
        source: |-
          response = client.snapshot.create(
            repository: "my_repository",
            snapshot: "snapshot_2",
            wait_for_completion: "true",
            body: {
              "indices": "index_1,index_2",
              "ignore_unavailable": true,
              "include_global_state": false,
              "metadata": {
                "taken_by": "user123",
                "taken_because": "backup before upgrading"
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->snapshot()->create([
              "repository" => "my_repository",
              "snapshot" => "snapshot_2",
              "wait_for_completion" => "true",
              "body" => [
                  "indices" => "index_1,index_2",
                  "ignore_unavailable" => true,
                  "include_global_state" => false,
                  "metadata" => [
                      "taken_by" => "user123",
                      "taken_because" => "backup before upgrading",
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"indices":"index_1,index_2","ignore_unavailable":true,"include_global_state":false,"metadata":{"taken_by":"user123","taken_because":"backup
          before upgrading"}}'' "$ELASTICSEARCH_URL/_snapshot/my_repository/snapshot_2?wait_for_completion=true"'
      - lang: Java
        source: |
          client.snapshot().create(c -> c
              .ignoreUnavailable(true)
              .includeGlobalState(false)
              .indices("index_1,index_2")
              .metadata(Map.of("taken_by", JsonData.fromJson("\"user123\""),"taken_because", JsonData.fromJson("\"backup before upgrading\"")))
              .repository("my_repository")
              .snapshot("snapshot_2")
              .waitForCompletion(true)
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    delete:
      tags:
      - snapshot
      summary: Delete snapshots
      description: |2


        ## Required authorization

        * Cluster privileges: `manage`
      operationId: snapshot-delete
      parameters:
      - in: path
        name: repository
        description: The name of the repository to delete a snapshot from.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Name"
        style: simple
      - in: path
        name: snapshot
        description: |-
          A comma-separated list of snapshot names to delete.
          It also accepts wildcards (`*`).
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Names"
        style: simple
      - in: query
        name: master_timeout
        description: |-
          The period to wait for the master node.
          If the master node is not available before the timeout expires, the request fails and returns an error.
          To indicate that the request should never timeout, set it to `-1`.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: wait_for_completion
        description: |-
          If `true`, the request returns a response when the matching snapshots are all deleted.
          If `false`, the request returns a response as soon as the deletes are scheduled.
        deprecated: false
        schema:
          type: boolean
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
              examples:
                SnapshotDeleteResponseExample1:
                  description: 'A successful response from `DELETE /_snapshot/my_repository/snapshot_2,snapshot_3`.
                    The request deletes `snapshot_2` and `snapshot_3` from the repository
                    named `my_repository`.

                    '
                  value: |-
                    {
                      "acknowledged" : true
                    }
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'DELETE /_snapshot/my_repository/snapshot_2,snapshot_3

          '
      - lang: Python
        source: |-
          resp = client.snapshot.delete(
              repository="my_repository",
              snapshot="snapshot_2,snapshot_3",
          )
      - lang: JavaScript
        source: |-
          const response = await client.snapshot.delete({
            repository: "my_repository",
            snapshot: "snapshot_2,snapshot_3",
          });
      - lang: Ruby
        source: |-
          response = client.snapshot.delete(
            repository: "my_repository",
            snapshot: "snapshot_2,snapshot_3"
          )
      - lang: PHP
        source: |-
          $resp = $client->snapshot()->delete([
              "repository" => "my_repository",
              "snapshot" => "snapshot_2,snapshot_3",
          ]);
      - lang: curl
        source: 'curl -X DELETE -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_snapshot/my_repository/snapshot_2,snapshot_3"'
      - lang: Java
        source: |
          client.snapshot().delete(d -> d
              .repository("my_repository")
              .snapshot("snapshot_2,snapshot_3")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_snapshot/{repository}":
    get:
      tags:
      - snapshot
      summary: 'Get snapshot repository information

        '
      description: |
        **All methods and paths for this operation:**

        <div>
                              <span class="operation-verb get">GET</span>
                              <span class="operation-path">/_snapshot</span>
                              </div>
                            <div>
                              <span class="operation-verb get">GET</span>
                              <span class="operation-path">/_snapshot/{repository}</span>
                              </div>

        ## Required authorization

        * Cluster privileges: `monitor_snapshot`
      operationId: snapshot-get-repository
      parameters:
      - "$ref": "#/components/parameters/snapshot.get_repository-repository"
      - "$ref": "#/components/parameters/snapshot.get_repository-local"
      - "$ref": "#/components/parameters/snapshot.get_repository-master_timeout"
      responses:
        '200':
          "$ref": "#/components/responses/snapshot.get_repository-200"
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'GET /_snapshot/my_repository

          '
      - lang: Python
        source: |-
          resp = client.snapshot.get_repository(
              name="my_repository",
          )
      - lang: JavaScript
        source: |-
          const response = await client.snapshot.getRepository({
            name: "my_repository",
          });
      - lang: Ruby
        source: |-
          response = client.snapshot.get_repository(
            repository: "my_repository"
          )
      - lang: PHP
        source: |-
          $resp = $client->snapshot()->getRepository([
              "repository" => "my_repository",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_snapshot/my_repository"'
      - lang: Java
        source: |
          client.snapshot().getRepository(g -> g
              .name("my_repository")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    post:
      tags:
      - snapshot
      summary: 'Create or update a snapshot repository

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb put\">PUT</span>\n                      <span class=\"operation-path\">/_snapshot/{repository}</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_snapshot/{repository}</span>\n
        \                     </div>\n                    \n\nIMPORTANT: If you are
        migrating searchable snapshots, the repository name must be identical in the
        source and destination clusters.\nTo register a snapshot repository, the cluster's
        global metadata must be writeable.\nEnsure there are no cluster blocks (for
        example, `cluster.blocks.read_only` and `clsuter.blocks.read_only_allow_delete`
        settings) that prevent write access.\n\nSeveral options for this API can be
        specified using a query parameter or a request body parameter.\nIf both parameters
        are specified, only the query parameter is used.\n\n## Required authorization\n\n*
        Cluster privileges: `manage`\n"
      externalDocs:
        url: https://www.elastic.co/docs/deploy-manage/tools/snapshot-and-restore/self-managed
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/put-snapshot-repo-api.html
      operationId: snapshot-create-repository
      parameters:
      - "$ref": "#/components/parameters/snapshot.create_repository-repository"
      - "$ref": "#/components/parameters/snapshot.create_repository-master_timeout"
      - "$ref": "#/components/parameters/snapshot.create_repository-timeout"
      - "$ref": "#/components/parameters/snapshot.create_repository-verify"
      requestBody:
        "$ref": "#/components/requestBodies/snapshot.create_repository"
      responses:
        '200':
          "$ref": "#/components/responses/snapshot.create_repository-200"
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: |-
          PUT /_snapshot/my_repository
          {
            "type": "fs",
            "settings": {
              "location": "my_backup_location"
            }
          }
      - lang: Python
        source: |-
          resp = client.snapshot.create_repository(
              name="my_repository",
              repository={
                  "type": "fs",
                  "settings": {
                      "location": "my_backup_location"
                  }
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.snapshot.createRepository({
            name: "my_repository",
            repository: {
              type: "fs",
              settings: {
                location: "my_backup_location",
              },
            },
          });
      - lang: Ruby
        source: |-
          response = client.snapshot.create_repository(
            repository: "my_repository",
            body: {
              "type": "fs",
              "settings": {
                "location": "my_backup_location"
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->snapshot()->createRepository([
              "repository" => "my_repository",
              "body" => [
                  "type" => "fs",
                  "settings" => [
                      "location" => "my_backup_location",
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"type":"fs","settings":{"location":"my_backup_location"}}''
          "$ELASTICSEARCH_URL/_snapshot/my_repository"'
      - lang: Java
        source: |
          client.snapshot().createRepository(c -> c
              .name("my_repository")
              .repository(r -> r
                  .fs(f -> f
                      .settings(s -> s
                          .location("my_backup_location")
                      )
                  )
              )
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    delete:
      tags:
      - snapshot
      summary: Delete snapshot repositories
      description: |
        When a repository is unregistered, Elasticsearch removes only the reference to the location where the repository is storing the snapshots.
        The snapshots themselves are left untouched and in place.

        ## Required authorization

        * Cluster privileges: `manage`
      operationId: snapshot-delete-repository
      parameters:
      - in: path
        name: repository
        description: |-
          The ame of the snapshot repositories to unregister.
          Wildcard (`*`) patterns are supported.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Names"
        style: simple
      - in: query
        name: master_timeout
        description: |-
          The period to wait for the master node.
          If the master node is not available before the timeout expires, the request fails and returns an error.
          To indicate that the request should never timeout, set it to `-1`.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: timeout
        description: |-
          The period to wait for a response from all relevant nodes in the cluster after updating the cluster metadata.
          If no response is received before the timeout expires, the cluster metadata update still applies but the response will indicate that it was not completely acknowledged.
          To indicate that the request should never timeout, set it to `-1`.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'DELETE /_snapshot/my_repository

          '
      - lang: Python
        source: |-
          resp = client.snapshot.delete_repository(
              name="my_repository",
          )
      - lang: JavaScript
        source: |-
          const response = await client.snapshot.deleteRepository({
            name: "my_repository",
          });
      - lang: Ruby
        source: |-
          response = client.snapshot.delete_repository(
            repository: "my_repository"
          )
      - lang: PHP
        source: |-
          $resp = $client->snapshot()->deleteRepository([
              "repository" => "my_repository",
          ]);
      - lang: curl
        source: 'curl -X DELETE -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_snapshot/my_repository"'
      - lang: Java
        source: |
          client.snapshot().deleteRepository(d -> d
              .name("my_repository")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_snapshot/{repository}/_analyze":
    post:
      tags:
      - snapshot
      summary: Analyze a snapshot repository
      description: |
        Performs operations on a snapshot repository in order to check for incorrect behaviour.

        There are a large number of third-party storage systems available, not all of which are suitable for use as a snapshot repository by Elasticsearch.
        Some storage systems behave incorrectly, or perform poorly, especially when accessed concurrently by multiple clients as the nodes of an Elasticsearch cluster do.
        This API performs a collection of read and write operations on your repository which are designed to detect incorrect behaviour and to measure the performance characteristics of your storage system.

        The default values for the parameters are deliberately low to reduce the impact of running an analysis inadvertently and to provide a sensible starting point for your investigations.
        Run your first analysis with the default parameter values to check for simple problems.
        Some repositories may behave correctly when lightly loaded but incorrectly under production-like workloads.
        If the first analysis is successful, run a sequence of increasingly large analyses until you encounter a failure or you reach a `blob_count` of at least `2000`, a `max_blob_size` of at least `2gb`, a `max_total_data_size` of at least `1tb`, and a `register_operation_count` of at least `100`.
        Always specify a generous timeout, possibly `1h` or longer, to allow time for each analysis to run to completion.
        Some repositories may behave correctly when accessed by a small number of Elasticsearch nodes but incorrectly when accessed concurrently by a production-scale cluster.
        Perform the analyses using a multi-node cluster of a similar size to your production cluster so that it can detect any problems that only arise when the repository is accessed by many nodes at once.

        If the analysis fails, Elasticsearch detected that your repository behaved unexpectedly.
        This usually means you are using a third-party storage system with an incorrect or incompatible implementation of the API it claims to support.
        If so, this storage system is not suitable for use as a snapshot repository.
        Repository analysis triggers conditions that occur only rarely when taking snapshots in a production system.
        Snapshotting to unsuitable storage may appear to work correctly most of the time despite repository analysis failures.
        However your snapshot data is at risk if you store it in a snapshot repository that does not reliably pass repository analysis.
        You can demonstrate that the analysis failure is due to an incompatible storage implementation by verifying that Elasticsearch does not detect the same problem when analysing the reference implementation of the storage protocol you are using.
        For instance, if you are using storage that offers an API which the supplier claims to be compatible with AWS S3, verify that repositories in AWS S3 do not fail repository analysis.
        This allows you to demonstrate to your storage supplier that a repository analysis failure must only be caused by an incompatibility with AWS S3 and cannot be attributed to a problem in Elasticsearch.
        Please do not report Elasticsearch issues involving third-party storage systems unless you can demonstrate that the same issue exists when analysing a repository that uses the reference implementation of the same storage protocol.
        You will need to work with the supplier of your storage system to address the incompatibilities that Elasticsearch detects.

        If the analysis is successful, the API returns details of the testing process, optionally including how long each operation took.
        You can use this information to determine the performance of your storage system.
        If any operation fails or returns an incorrect result, the API returns an error.
        If the API returns an error, it may not have removed all the data it wrote to the repository.
        The error will indicate the location of any leftover data and this path is also recorded in the Elasticsearch logs.
        You should verify that this location has been cleaned up correctly.
        If there is still leftover data at the specified location, you should manually remove it.

        If the connection from your client to Elasticsearch is closed while the client is waiting for the result of the analysis, the test is cancelled.
        Some clients are configured to close their connection if no response is received within a certain timeout.
        An analysis takes a long time to complete so you might need to relax any such client-side timeouts.
        On cancellation the analysis attempts to clean up the data it was writing, but it may not be able to remove it all.
        The path to the leftover data is recorded in the Elasticsearch logs.
        You should verify that this location has been cleaned up correctly.
        If there is still leftover data at the specified location, you should manually remove it.

        If the analysis is successful then it detected no incorrect behaviour, but this does not mean that correct behaviour is guaranteed.
        The analysis attempts to detect common bugs but it does not offer 100% coverage.
        Additionally, it does not test the following:

        * Your repository must perform durable writes. Once a blob has been written it must remain in place until it is deleted, even after a power loss or similar disaster.
        * Your repository must not suffer from silent data corruption. Once a blob has been written, its contents must remain unchanged until it is deliberately modified or deleted.
        * Your repository must behave correctly even if connectivity from the cluster is disrupted. Reads and writes may fail in this case, but they must not return incorrect results.

        IMPORTANT: An analysis writes a substantial amount of data to your repository and then reads it back again.
        This consumes bandwidth on the network between the cluster and the repository, and storage space and I/O bandwidth on the repository itself.
        You must ensure this load does not affect other users of these systems.
        Analyses respect the repository settings `max_snapshot_bytes_per_sec` and `max_restore_bytes_per_sec` if available and the cluster setting `indices.recovery.max_bytes_per_sec` which you can use to limit the bandwidth they consume.

        NOTE: This API is intended for exploratory use by humans.
        You should expect the request parameters and the response format to vary in future versions.
        The response exposes immplementation details of the analysis which may change from version to version.

        NOTE: Different versions of Elasticsearch may perform different checks for repository compatibility, with newer versions typically being stricter than older ones.
        A storage system that passes repository analysis with one version of Elasticsearch may fail with a different version.
        This indicates it behaves incorrectly in ways that the former version did not detect.
        You must work with the supplier of your storage system to address the incompatibilities detected by the repository analysis API in any version of Elasticsearch.

        NOTE: This API may not work correctly in a mixed-version cluster.

        *Implementation details*

        NOTE: This section of documentation describes how the repository analysis API works in this version of Elasticsearch, but you should expect the implementation to vary between versions.
        The request parameters and response format depend on details of the implementation so may also be different in newer versions.

        The analysis comprises a number of blob-level tasks, as set by the `blob_count` parameter and a number of compare-and-exchange operations on linearizable registers, as set by the `register_operation_count` parameter.
        These tasks are distributed over the data and master-eligible nodes in the cluster for execution.

        For most blob-level tasks, the executing node first writes a blob to the repository and then instructs some of the other nodes in the cluster to attempt to read the data it just wrote.
        The size of the blob is chosen randomly, according to the `max_blob_size` and `max_total_data_size` parameters.
        If any of these reads fails then the repository does not implement the necessary read-after-write semantics that Elasticsearch requires.

        For some blob-level tasks, the executing node will instruct some of its peers to attempt to read the data before the writing process completes.
        These reads are permitted to fail, but must not return partial data.
        If any read returns partial data then the repository does not implement the necessary atomicity semantics that Elasticsearch requires.

        For some blob-level tasks, the executing node will overwrite the blob while its peers are reading it.
        In this case the data read may come from either the original or the overwritten blob, but the read operation must not return partial data or a mix of data from the two blobs.
        If any of these reads returns partial data or a mix of the two blobs then the repository does not implement the necessary atomicity semantics that Elasticsearch requires for overwrites.

        The executing node will use a variety of different methods to write the blob.
        For instance, where applicable, it will use both single-part and multi-part uploads.
        Similarly, the reading nodes will use a variety of different methods to read the data back again.
        For instance they may read the entire blob from start to end or may read only a subset of the data.

        For some blob-level tasks, the executing node will cancel the write before it is complete.
        In this case, it still instructs some of the other nodes in the cluster to attempt to read the blob but all of these reads must fail to find the blob.

        Linearizable registers are special blobs that Elasticsearch manipulates using an atomic compare-and-exchange operation.
        This operation ensures correct and strongly-consistent behavior even when the blob is accessed by multiple nodes at the same time.
        The detailed implementation of the compare-and-exchange operation on linearizable registers varies by repository type.
        Repository analysis verifies that that uncontended compare-and-exchange operations on a linearizable register blob always succeed.
        Repository analysis also verifies that contended operations either succeed or report the contention but do not return incorrect results.
        If an operation fails due to contention, Elasticsearch retries the operation until it succeeds.
        Most of the compare-and-exchange operations performed by repository analysis atomically increment a counter which is represented as an 8-byte blob.
        Some operations also verify the behavior on small blobs with sizes other than 8 bytes.

        ## Required authorization

        * Cluster privileges: `manage`
      operationId: snapshot-repository-analyze
      parameters:
      - in: path
        name: repository
        description: The name of the repository.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Name"
        style: simple
      - in: query
        name: blob_count
        description: |-
          The total number of blobs to write to the repository during the test.
          For realistic experiments, set this parameter to at least `2000`.
        deprecated: false
        schema:
          type: number
        style: form
      - in: query
        name: concurrency
        description: |-
          The number of operations to run concurrently during the test.
          For realistic experiments, leave this parameter unset.
        deprecated: false
        schema:
          type: number
        style: form
      - in: query
        name: detailed
        description: |-
          Indicates whether to return detailed results, including timing information for every operation performed during the analysis.
          If false, it returns only a summary of the analysis.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: early_read_node_count
        description: |-
          The number of nodes on which to perform an early read operation while writing each blob.
          Early read operations are only rarely performed.
          For realistic experiments, leave this parameter unset.
        deprecated: false
        schema:
          type: number
        style: form
      - in: query
        name: max_blob_size
        description: |-
          The maximum size of a blob to be written during the test.
          For realistic experiments, set this parameter to at least `2gb`.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.ByteSize"
        style: form
      - in: query
        name: max_total_data_size
        description: |-
          An upper limit on the total size of all the blobs written during the test.
          For realistic experiments, set this parameter to at least `1tb`.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.ByteSize"
        style: form
      - in: query
        name: rare_action_probability
        description: |-
          The probability of performing a rare action such as an early read, an overwrite, or an aborted write on each blob.
          For realistic experiments, leave this parameter unset.
        deprecated: false
        schema:
          type: number
        style: form
      - in: query
        name: rarely_abort_writes
        description: |-
          Indicates whether to rarely cancel writes before they complete.
          For realistic experiments, leave this parameter unset.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: read_node_count
        description: |-
          The number of nodes on which to read a blob after writing.
          For realistic experiments, leave this parameter unset.
        deprecated: false
        schema:
          type: number
        style: form
      - in: query
        name: register_operation_count
        description: |-
          The minimum number of linearizable register operations to perform in total.
          For realistic experiments, set this parameter to at least `100`.
        deprecated: false
        schema:
          type: number
        style: form
      - in: query
        name: seed
        description: |-
          The seed for the pseudo-random number generator used to generate the list of operations performed during the test.
          To repeat the same set of operations in multiple experiments, use the same seed in each experiment.
          Note that the operations are performed concurrently so might not always happen in the same order on each run.
          For realistic experiments, leave this parameter unset.
        deprecated: false
        schema:
          type: number
        style: form
      - in: query
        name: timeout
        description: |-
          The period of time to wait for the test to complete.
          If no response is received before the timeout expires, the test is cancelled and returns an error.
          For realistic experiments, set this parameter sufficiently long to allow the test to complete.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  blob_count:
                    description: The number of blobs written to the repository during
                      the test.
                    type: number
                  blob_path:
                    description: The path in the repository under which all the blobs
                      were written during the test.
                    type: string
                  concurrency:
                    description: The number of write operations performed concurrently
                      during the test.
                    type: number
                  coordinating_node:
                    description: The node that coordinated the analysis and performed
                      the final cleanup.
                    allOf:
                    - "$ref": "#/components/schemas/snapshot.repository_analyze.SnapshotNodeInfo"
                  delete_elapsed:
                    description: The time it took to delete all the blobs in the container.
                    allOf:
                    - "$ref": "#/components/schemas/_types.Duration"
                  delete_elapsed_nanos:
                    description: The time it took to delete all the blobs in the container,
                      in nanoseconds.
                    allOf:
                    - "$ref": "#/components/schemas/_types.DurationValueUnitNanos"
                  details:
                    description: A description of every read and write operation performed
                      during the test.
                    allOf:
                    - "$ref": "#/components/schemas/snapshot.repository_analyze.DetailsInfo"
                  early_read_node_count:
                    description: The limit on the number of nodes on which early read
                      operations were performed after writing each blob.
                    type: number
                  issues_detected:
                    description: |-
                      A list of correctness issues detected, which is empty if the API succeeded.
                      It is included to emphasize that a successful response does not guarantee correct behaviour in future.
                    type: array
                    items:
                      type: string
                  listing_elapsed:
                    description: The time it took to retrieve a list of all the blobs
                      in the container.
                    allOf:
                    - "$ref": "#/components/schemas/_types.Duration"
                  listing_elapsed_nanos:
                    description: The time it took to retrieve a list of all the blobs
                      in the container, in nanoseconds.
                    allOf:
                    - "$ref": "#/components/schemas/_types.DurationValueUnitNanos"
                  max_blob_size:
                    description: The limit on the size of a blob written during the
                      test.
                    allOf:
                    - "$ref": "#/components/schemas/_types.ByteSize"
                  max_blob_size_bytes:
                    description: The limit, in bytes, on the size of a blob written
                      during the test.
                    type: number
                  max_total_data_size:
                    description: The limit on the total size of all blob written during
                      the test.
                    allOf:
                    - "$ref": "#/components/schemas/_types.ByteSize"
                  max_total_data_size_bytes:
                    description: The limit, in bytes, on the total size of all blob
                      written during the test.
                    type: number
                  rare_action_probability:
                    description: The probability of performing rare actions during
                      the test.
                    type: number
                  read_node_count:
                    description: The limit on the number of nodes on which read operations
                      were performed after writing each blob.
                    type: number
                  repository:
                    description: The name of the repository that was the subject of
                      the analysis.
                    type: string
                  seed:
                    description: The seed for the pseudo-random number generator used
                      to generate the operations used during the test.
                    type: number
                  summary:
                    description: A collection of statistics that summarize the results
                      of the test.
                    allOf:
                    - "$ref": "#/components/schemas/snapshot.repository_analyze.SummaryInfo"
                required:
                - blob_count
                - blob_path
                - concurrency
                - coordinating_node
                - delete_elapsed
                - delete_elapsed_nanos
                - details
                - early_read_node_count
                - issues_detected
                - listing_elapsed
                - listing_elapsed_nanos
                - max_blob_size
                - max_blob_size_bytes
                - max_total_data_size
                - max_total_data_size_bytes
                - rare_action_probability
                - read_node_count
                - repository
                - seed
                - summary
      x-state: Generally available; Added in 7.12.0
      x-codeSamples:
      - lang: Console
        source: 'POST /_snapshot/my_repository/_analyze?blob_count=10&max_blob_size=1mb&timeout=120s

          '
      - lang: Python
        source: |-
          resp = client.snapshot.repository_analyze(
              name="my_repository",
              blob_count="10",
              max_blob_size="1mb",
              timeout="120s",
          )
      - lang: JavaScript
        source: |-
          const response = await client.snapshot.repositoryAnalyze({
            name: "my_repository",
            blob_count: 10,
            max_blob_size: "1mb",
            timeout: "120s",
          });
      - lang: Ruby
        source: |-
          response = client.snapshot.repository_analyze(
            repository: "my_repository",
            blob_count: "10",
            max_blob_size: "1mb",
            timeout: "120s"
          )
      - lang: PHP
        source: |-
          $resp = $client->snapshot()->repositoryAnalyze([
              "repository" => "my_repository",
              "blob_count" => "10",
              "max_blob_size" => "1mb",
              "timeout" => "120s",
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_snapshot/my_repository/_analyze?blob_count=10&max_blob_size=1mb&timeout=120s"'
      - lang: Java
        source: |
          client.snapshot().repositoryAnalyze(r -> r
              .blobCount(10)
              .maxBlobSize("1mb")
              .name("my_repository")
              .timeout(t -> t
                  .offset(120)
              )
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_snapshot/{repository}/_verify_integrity":
    post:
      tags:
      - snapshot
      summary: Verify the repository integrity
      description: |
        Verify the integrity of the contents of a snapshot repository.

        This API enables you to perform a comprehensive check of the contents of a repository, looking for any anomalies in its data or metadata which might prevent you from restoring snapshots from the repository or which might cause future snapshot create or delete operations to fail.

        If you suspect the integrity of the contents of one of your snapshot repositories, cease all write activity to this repository immediately, set its `read_only` option to `true`, and use this API to verify its integrity.
        Until you do so:

        * It may not be possible to restore some snapshots from this repository.
        * Searchable snapshots may report errors when searched or may have unassigned shards.
        * Taking snapshots into this repository may fail or may appear to succeed but have created a snapshot which cannot be restored.
        * Deleting snapshots from this repository may fail or may appear to succeed but leave the underlying data on disk.
        * Continuing to write to the repository while it is in an invalid state may causing additional damage to its contents.

        If the API finds any problems with the integrity of the contents of your repository, Elasticsearch will not be able to repair the damage.
        The only way to bring the repository back into a fully working state after its contents have been damaged is by restoring its contents from a repository backup which was taken before the damage occurred.
        You must also identify what caused the damage and take action to prevent it from happening again.

        If you cannot restore a repository backup, register a new repository and use this for all future snapshot operations.
        In some cases it may be possible to recover some of the contents of a damaged repository, either by restoring as many of its snapshots as needed and taking new snapshots of the restored data, or by using the reindex API to copy data from any searchable snapshots mounted from the damaged repository.

        Avoid all operations which write to the repository while the verify repository integrity API is running.
        If something changes the repository contents while an integrity verification is running then Elasticsearch may incorrectly report having detected some anomalies in its contents due to the concurrent writes.
        It may also incorrectly fail to report some anomalies that the concurrent writes prevented it from detecting.

        NOTE: This API is intended for exploratory use by humans. You should expect the request parameters and the response format to vary in future versions.

        NOTE: This API may not work correctly in a mixed-version cluster.

        The default values for the parameters of this API are designed to limit the impact of the integrity verification on other activities in your cluster.
        For instance, by default it will only use at most half of the `snapshot_meta` threads to verify the integrity of each snapshot, allowing other snapshot operations to use the other half of this thread pool.
        If you modify these parameters to speed up the verification process, you risk disrupting other snapshot-related operations in your cluster.
        For large repositories, consider setting up a separate single-node Elasticsearch cluster just for running the integrity verification API.

        The response exposes implementation details of the analysis which may change from version to version.
        The response body format is therefore not considered stable and may be different in newer versions.

        ## Required authorization

        * Cluster privileges: `manage`
      operationId: snapshot-repository-verify-integrity
      parameters:
      - in: path
        name: repository
        description: The name of the snapshot repository.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Names"
        style: simple
      - in: query
        name: blob_thread_pool_concurrency
        description: If `verify_blob_contents` is `true`, this parameter specifies
          how many blobs to verify at once.
        deprecated: false
        schema:
          type: number
        style: form
      - in: query
        name: index_snapshot_verification_concurrency
        description: The maximum number of index snapshots to verify concurrently
          within each index verification.
        deprecated: false
        schema:
          type: number
        style: form
      - in: query
        name: index_verification_concurrency
        description: |-
          The number of indices to verify concurrently.
          The default behavior is to use the entire `snapshot_meta` thread pool.
        deprecated: false
        schema:
          type: number
        style: form
      - in: query
        name: max_bytes_per_sec
        description: If `verify_blob_contents` is `true`, this parameter specifies
          the maximum amount of data that Elasticsearch will read from the repository
          every second.
        deprecated: false
        schema:
          type: string
        style: form
      - in: query
        name: max_failed_shard_snapshots
        description: |-
          The number of shard snapshot failures to track during integrity verification, in order to avoid excessive resource usage.
          If your repository contains more than this number of shard snapshot failures, the verification will fail.
        deprecated: false
        schema:
          type: number
        style: form
      - in: query
        name: meta_thread_pool_concurrency
        description: |-
          The maximum number of snapshot metadata operations to run concurrently.
          The default behavior is to use at most half of the `snapshot_meta` thread pool at once.
        deprecated: false
        schema:
          type: number
        style: form
      - in: query
        name: snapshot_verification_concurrency
        description: |-
          The number of snapshots to verify concurrently.
          The default behavior is to use at most half of the `snapshot_meta` thread pool at once.
        deprecated: false
        schema:
          type: number
        style: form
      - in: query
        name: verify_blob_contents
        description: |-
          Indicates whether to verify the checksum of every data blob in the repository.
          If this feature is enabled, Elasticsearch will read the entire repository contents, which may be extremely slow and expensive.
        deprecated: false
        schema:
          type: boolean
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
      x-state: Technical preview; Added in 8.16.0
      x-codeSamples:
      - lang: Console
        source: 'POST /_snapshot/my_repository/_verify_integrity

          '
      - lang: Python
        source: |-
          resp = client.snapshot.repository_verify_integrity(
              name="my_repository",
          )
      - lang: JavaScript
        source: |-
          const response = await client.snapshot.repositoryVerifyIntegrity({
            name: "my_repository",
          });
      - lang: Ruby
        source: |-
          response = client.snapshot.repository_verify_integrity(
            repository: "my_repository"
          )
      - lang: PHP
        source: |-
          $resp = $client->snapshot()->repositoryVerifyIntegrity([
              "repository" => "my_repository",
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_snapshot/my_repository/_verify_integrity"'
      - lang: Java
        source: |
          client.snapshot().repositoryVerifyIntegrity(r -> r
              .name("my_repository")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_snapshot/{repository}/{snapshot}/_restore":
    post:
      tags:
      - snapshot
      summary: Restore a snapshot
      description: |
        Restore a snapshot of a cluster or data streams and indices.

        You can restore a snapshot only to a running cluster with an elected master node.
        The snapshot repository must be registered and available to the cluster.
        The snapshot and cluster versions must be compatible.

        To restore a snapshot, the cluster's global metadata must be writable. Ensure there are't any cluster blocks that prevent writes. The restore operation ignores index blocks.

        Before you restore a data stream, ensure the cluster contains a matching index template with data streams enabled. To check, use the index management feature in Kibana or the get index template API:

        ```
        GET _index_template/*?filter_path=index_templates.name,index_templates.index_template.index_patterns,index_templates.index_template.data_stream
        ```

        If no such template exists, you can create one or restore a cluster state that contains one. Without a matching index template, a data stream can't roll over or create backing indices.

        If your snapshot contains data from App Search or Workplace Search, you must restore the Enterprise Search encryption key before you restore the snapshot.

        ## Required authorization

        * Cluster privileges: `manage`
      externalDocs:
        url: https://www.elastic.co/docs/deploy-manage/tools/snapshot-and-restore/restore-snapshot
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/restore-snapshot-api.html
      operationId: snapshot-restore
      parameters:
      - in: path
        name: repository
        description: The name of the repository to restore a snapshot from.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Name"
        style: simple
      - in: path
        name: snapshot
        description: The name of the snapshot to restore.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Name"
        style: simple
      - in: query
        name: master_timeout
        description: |-
          The period to wait for the master node.
          If the master node is not available before the timeout expires, the request fails and returns an error.
          To indicate that the request should never timeout, set it to `-1`.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: wait_for_completion
        description: |-
          If `true`, the request returns a response when the restore operation completes.
          The operation is complete when it finishes all attempts to recover primary shards for restored indices.
          This applies even if one or more of the recovery attempts fail.

          If `false`, the request returns a response when the restore operation initializes.
        deprecated: false
        schema:
          type: boolean
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                feature_states:
                  externalDocs:
                    url: https://www.elastic.co/docs/deploy-manage/tools/snapshot-and-restore#feature-state
                  description: |-
                    The feature states to restore.
                    If `include_global_state` is `true`, the request restores all feature states in the snapshot by default.
                    If `include_global_state` is `false`, the request restores no feature states by default.
                    Note that specifying an empty array will result in the default behavior.
                    To restore no feature states, regardless of the `include_global_state` value, specify an array containing only the value `none` (`["none"]`).
                  type: array
                  items:
                    type: string
                ignore_index_settings:
                  description: |-
                    The index settings to not restore from the snapshot.
                    You can't use this option to ignore `index.number_of_shards`.

                    For data streams, this option applies only to restored backing indices.
                    New backing indices are configured using the data stream's matching index template.
                  type: array
                  items:
                    type: string
                ignore_unavailable:
                  description: |-
                    If `true`, the request ignores any index or data stream in indices that's missing from the snapshot.
                    If `false`, the request returns an error for any missing index or data stream.
                  default: false
                  type: boolean
                include_aliases:
                  description: |-
                    If `true`, the request restores aliases for any restored data streams and indices.
                    If `false`, the request doesn’t restore aliases.
                  default: true
                  type: boolean
                include_global_state:
                  description: |-
                    If `true`, restore the cluster state. The cluster state includes:

                    * Persistent cluster settings
                    * Index templates
                    * Legacy index templates
                    * Ingest pipelines
                    * Index lifecycle management (ILM) policies
                    * Stored scripts
                    * For snapshots taken after 7.12.0, feature states

                    If `include_global_state` is `true`, the restore operation merges the legacy index templates in your cluster with the templates contained in the snapshot, replacing any existing ones whose name matches one in the snapshot.
                    It completely removes all persistent settings, non-legacy index templates, ingest pipelines, and ILM lifecycle policies that exist in your cluster and replaces them with the corresponding items from the snapshot.

                    Use the `feature_states` parameter to configure how feature states are restored.

                    If `include_global_state` is `true` and a snapshot was created without a global state then the restore request will fail.
                  default: false
                  type: boolean
                index_settings:
                  description: |-
                    Index settings to add or change in restored indices, including backing indices.
                    You can't use this option to change `index.number_of_shards`.

                    For data streams, this option applies only to restored backing indices.
                    New backing indices are configured using the data stream's matching index template.
                  allOf:
                  - "$ref": "#/components/schemas/indices._types.IndexSettings"
                indices:
                  description: |-
                    A comma-separated list of indices and data streams to restore.
                    It supports a multi-target syntax.
                    The default behavior is all regular indices and regular data streams in the snapshot.

                    You can't use this parameter to restore system indices or system data streams.
                    Use `feature_states` instead.
                  allOf:
                  - "$ref": "#/components/schemas/_types.Indices"
                partial:
                  description: |-
                    If `false`, the entire restore operation will fail if one or more indices included in the snapshot do not have all primary shards available.

                    If true, it allows restoring a partial snapshot of indices with unavailable shards.
                    Only shards that were successfully included in the snapshot will be restored.
                    All missing shards will be recreated as empty.
                  default: false
                  type: boolean
                rename_pattern:
                  externalDocs:
                    url: https://docs.oracle.com/javase/8/docs/api/java/util/regex/Matcher.html#appendReplacement-java.lang.StringBuffer-java.lang.String-
                  description: |-
                    A rename pattern to apply to restored data streams and indices.
                    Data streams and indices matching the rename pattern will be renamed according to `rename_replacement`.

                    The rename pattern is applied as defined by the regular expression that supports referencing the original text, according to the `appendReplacement` logic.
                  type: string
                rename_replacement:
                  description: The rename replacement string that is used with the
                    `rename_pattern`.
                  type: string
            examples:
              SnapshotRestoreRequestExample1:
                summary: Restore with rename pattern
                description: 'Run `POST /_snapshot/my_repository/snapshot_2/_restore?wait_for_completion=true`.
                  It restores `index_1` and `index_2` from `snapshot_2`. The `rename_pattern`
                  and `rename_replacement` parameters indicate any index matching
                  the regular expression `index_(.+)` will be renamed using the pattern
                  `restored_index_$1`. For example, `index_1` will be renamed to `restored_index_1`.

                  '
                value: |-
                  {
                    "indices": "index_1,index_2",
                    "ignore_unavailable": true,
                    "include_global_state": false,
                    "rename_pattern": "index_(.+)",
                    "rename_replacement": "restored_index_$1",
                    "include_aliases": false
                  }
              SnapshotRestoreRequestExample2:
                summary: Restore in-place
                description: 'Close `index_1` then run `POST /_snapshot/my_repository/snapshot_2/_restore?wait_for_completion=true`
                  to restore an index in-place. For example, you might want to perform
                  this type of restore operation when no alternative options surface
                  after the cluster allocation explain API reports `no_valid_shard_copy`.

                  '
                value: |-
                  {
                    "indices": "index_1"
                  }
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  accepted:
                    type: boolean
                  snapshot:
                    allOf:
                    - "$ref": "#/components/schemas/snapshot.restore.SnapshotRestore"
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: |-
          POST /_snapshot/my_repository/snapshot_2/_restore?wait_for_completion=true
          {
            "indices": "index_1,index_2",
            "ignore_unavailable": true,
            "include_global_state": false,
            "rename_pattern": "index_(.+)",
            "rename_replacement": "restored_index_$1",
            "include_aliases": false
          }
      - lang: Python
        source: |-
          resp = client.snapshot.restore(
              repository="my_repository",
              snapshot="snapshot_2",
              wait_for_completion=True,
              indices="index_1,index_2",
              ignore_unavailable=True,
              include_global_state=False,
              rename_pattern="index_(.+)",
              rename_replacement="restored_index_$1",
              include_aliases=False,
          )
      - lang: JavaScript
        source: |-
          const response = await client.snapshot.restore({
            repository: "my_repository",
            snapshot: "snapshot_2",
            wait_for_completion: "true",
            indices: "index_1,index_2",
            ignore_unavailable: true,
            include_global_state: false,
            rename_pattern: "index_(.+)",
            rename_replacement: "restored_index_$1",
            include_aliases: false,
          });
      - lang: Ruby
        source: |-
          response = client.snapshot.restore(
            repository: "my_repository",
            snapshot: "snapshot_2",
            wait_for_completion: "true",
            body: {
              "indices": "index_1,index_2",
              "ignore_unavailable": true,
              "include_global_state": false,
              "rename_pattern": "index_(.+)",
              "rename_replacement": "restored_index_$1",
              "include_aliases": false
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->snapshot()->restore([
              "repository" => "my_repository",
              "snapshot" => "snapshot_2",
              "wait_for_completion" => "true",
              "body" => [
                  "indices" => "index_1,index_2",
                  "ignore_unavailable" => true,
                  "include_global_state" => false,
                  "rename_pattern" => "index_(.+)",
                  "rename_replacement" => "restored_index_$1",
                  "include_aliases" => false,
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"indices":"index_1,index_2","ignore_unavailable":true,"include_global_state":false,"rename_pattern":"index_(.+)","rename_replacement":"restored_index_$1","include_aliases":false}''
          "$ELASTICSEARCH_URL/_snapshot/my_repository/snapshot_2/_restore?wait_for_completion=true"'
      - lang: Java
        source: |
          client.snapshot().restore(r -> r
              .ignoreUnavailable(true)
              .includeAliases(false)
              .includeGlobalState(false)
              .indices("index_1,index_2")
              .renamePattern("index_(.+)")
              .renameReplacement("restored_index_$1")
              .repository("my_repository")
              .snapshot("snapshot_2")
              .waitForCompletion(true)
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_snapshot/{repository}/{snapshot}/_status":
    get:
      tags:
      - snapshot
      summary: 'Get the snapshot status

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_snapshot/_status</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_snapshot/{repository}/_status</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_snapshot/{repository}/{snapshot}/_status</span>\n
        \                     </div>\n                    \n\nGet a detailed description
        of the current state for each shard participating in the snapshot.\n\nNote
        that this API should be used only to obtain detailed shard-level information
        for ongoing snapshots.\nIf this detail is not needed or you want to obtain
        information about one or more existing snapshots, use the get snapshot API.\n\nIf
        you omit the `<snapshot>` request path parameter, the request retrieves information
        only for currently running snapshots.\nThis usage is preferred.\nIf needed,
        you can specify `<repository>` and `<snapshot>` to retrieve information for
        specific snapshots, even if they're not currently running.\n\nNote that the
        stats will not be available for any shard snapshots in an ongoing snapshot
        completed by a node that (even momentarily) left the cluster.\nLoading the
        stats from the repository is an expensive operation (see the WARNING below).\nTherefore
        the stats values for such shards will be -1 even though the \"stage\" value
        will be \"DONE\", in order to minimize latency.\nA \"description\" field will
        be present for a shard snapshot completed by a departed node explaining why
        the shard snapshot's stats results are invalid.\nConsequently, the total stats
        for the index will be less than expected due to the missing values from these
        shards.\n\nWARNING: Using the API to return the status of any snapshots other
        than currently running snapshots can be expensive.\nThe API requires a read
        from the repository for each shard in each snapshot.\nFor example, if you
        have 100 snapshots with 1,000 shards each, an API request that includes all
        snapshots will require 100,000 reads (100 snapshots x 1,000 shards).\n\nDepending
        on the latency of your storage, such requests can take an extremely long time
        to return results.\nThese requests can also tax machine resources and, when
        using cloud storage, incur high processing costs.\n\n## Required authorization\n\n*
        Cluster privileges: `monitor_snapshot`\n"
      operationId: snapshot-status
      parameters:
      - "$ref": "#/components/parameters/snapshot.status-repository"
      - "$ref": "#/components/parameters/snapshot.status-snapshot"
      - "$ref": "#/components/parameters/snapshot.status-ignore_unavailable"
      - "$ref": "#/components/parameters/snapshot.status-master_timeout"
      responses:
        '200':
          "$ref": "#/components/responses/snapshot.status-200"
      x-state: Generally available; Added in 7.8.0
      x-codeSamples:
      - lang: Console
        source: 'GET _snapshot/my_repository/snapshot_2/_status

          '
      - lang: Python
        source: |-
          resp = client.snapshot.status(
              repository="my_repository",
              snapshot="snapshot_2",
          )
      - lang: JavaScript
        source: |-
          const response = await client.snapshot.status({
            repository: "my_repository",
            snapshot: "snapshot_2",
          });
      - lang: Ruby
        source: |-
          response = client.snapshot.status(
            repository: "my_repository",
            snapshot: "snapshot_2"
          )
      - lang: PHP
        source: |-
          $resp = $client->snapshot()->status([
              "repository" => "my_repository",
              "snapshot" => "snapshot_2",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_snapshot/my_repository/snapshot_2/_status"'
      - lang: Java
        source: |
          client.snapshot().status(s -> s
              .repository("my_repository")
              .snapshot("snapshot_2")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_snapshot/{repository}/_verify":
    post:
      tags:
      - snapshot
      summary: Verify a snapshot repository
      description: |
        Check for common misconfigurations in a snapshot repository.

        ## Required authorization

        * Cluster privileges: `manage`
      externalDocs:
        url: https://www.elastic.co/docs/deploy-manage/tools/snapshot-and-restore/self-managed#snapshots-repository-verification
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/verify-snapshot-repo-api.html
      operationId: snapshot-verify-repository
      parameters:
      - in: path
        name: repository
        description: The name of the snapshot repository to verify.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Name"
        style: simple
      - in: query
        name: master_timeout
        description: |-
          The period to wait for the master node.
          If the master node is not available before the timeout expires, the request fails and returns an error.
          To indicate that the request should never timeout, set it to `-1`.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: timeout
        description: |-
          The period to wait for a response from all relevant nodes in the cluster after updating the cluster metadata.
          If no response is received before the timeout expires, the cluster metadata update still applies but the response will indicate that it was not completely acknowledged.
          To indicate that the request should never timeout, set it to `-1`.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  nodes:
                    description: |-
                      Information about the nodes connected to the snapshot repository.
                      The key is the ID of the node.
                    type: object
                    additionalProperties:
                      "$ref": "#/components/schemas/snapshot.verify_repository.CompactNodeInfo"
                required:
                - nodes
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'POST _snapshot/my_unverified_backup/_verify

          '
      - lang: Python
        source: |-
          resp = client.snapshot.verify_repository(
              name="my_unverified_backup",
          )
      - lang: JavaScript
        source: |-
          const response = await client.snapshot.verifyRepository({
            name: "my_unverified_backup",
          });
      - lang: Ruby
        source: |-
          response = client.snapshot.verify_repository(
            repository: "my_unverified_backup"
          )
      - lang: PHP
        source: |-
          $resp = $client->snapshot()->verifyRepository([
              "repository" => "my_unverified_backup",
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_snapshot/my_unverified_backup/_verify"'
      - lang: Java
        source: |
          client.snapshot().verifyRepository(v -> v
              .name("my_unverified_backup")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_sql/close":
    post:
      tags:
      - sql
      summary: Clear an SQL search cursor
      operationId: sql-clear-cursor
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                cursor:
                  description: Cursor to clear.
                  type: string
              required:
              - cursor
            examples:
              ClearSqlCursorRequestExample1:
                description: Run `POST _sql/close` to clear an SQL search cursor.
                value: |-
                  {
                    "cursor": "sDXF1ZXJ5QW5kRmV0Y2gBAAAAAAAAAAEWYUpOYklQMHhRUEtld3RsNnFtYU1hQQ==:BAFmBGRhdGUBZgVsaWtlcwFzB21lc3NhZ2UBZgR1c2Vy9f///w8="
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  succeeded:
                    type: boolean
                required:
                - succeeded
      x-state: Generally available; Added in 6.3.0
      x-codeSamples:
      - lang: Console
        source: |-
          POST _sql/close
          {
            "cursor": "sDXF1ZXJ5QW5kRmV0Y2gBAAAAAAAAAAEWYUpOYklQMHhRUEtld3RsNnFtYU1hQQ==:BAFmBGRhdGUBZgVsaWtlcwFzB21lc3NhZ2UBZgR1c2Vy9f///w8="
          }
      - lang: Python
        source: |-
          resp = client.sql.clear_cursor(
              cursor="sDXF1ZXJ5QW5kRmV0Y2gBAAAAAAAAAAEWYUpOYklQMHhRUEtld3RsNnFtYU1hQQ==:BAFmBGRhdGUBZgVsaWtlcwFzB21lc3NhZ2UBZgR1c2Vy9f///w8=",
          )
      - lang: JavaScript
        source: |-
          const response = await client.sql.clearCursor({
            cursor:
              "sDXF1ZXJ5QW5kRmV0Y2gBAAAAAAAAAAEWYUpOYklQMHhRUEtld3RsNnFtYU1hQQ==:BAFmBGRhdGUBZgVsaWtlcwFzB21lc3NhZ2UBZgR1c2Vy9f///w8=",
          });
      - lang: Ruby
        source: |-
          response = client.sql.clear_cursor(
            body: {
              "cursor": "sDXF1ZXJ5QW5kRmV0Y2gBAAAAAAAAAAEWYUpOYklQMHhRUEtld3RsNnFtYU1hQQ==:BAFmBGRhdGUBZgVsaWtlcwFzB21lc3NhZ2UBZgR1c2Vy9f///w8="
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->sql()->clearCursor([
              "body" => [
                  "cursor" => "sDXF1ZXJ5QW5kRmV0Y2gBAAAAAAAAAAEWYUpOYklQMHhRUEtld3RsNnFtYU1hQQ==:BAFmBGRhdGUBZgVsaWtlcwFzB21lc3NhZ2UBZgR1c2Vy9f///w8=",
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"cursor":"sDXF1ZXJ5QW5kRmV0Y2gBAAAAAAAAAAEWYUpOYklQMHhRUEtld3RsNnFtYU1hQQ==:BAFmBGRhdGUBZgVsaWtlcwFzB21lc3NhZ2UBZgR1c2Vy9f///w8="}''
          "$ELASTICSEARCH_URL/_sql/close"'
      - lang: Java
        source: |
          client.sql().clearCursor(c -> c
              .cursor("sDXF1ZXJ5QW5kRmV0Y2gBAAAAAAAAAAEWYUpOYklQMHhRUEtld3RsNnFtYU1hQQ==:BAFmBGRhdGUBZgVsaWtlcwFzB21lc3NhZ2UBZgR1c2Vy9f///w8=")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_sql/async/delete/{id}":
    delete:
      tags:
      - sql
      summary: Delete an async SQL search
      description: |
        Delete an async SQL search or a stored synchronous SQL search.
        If the search is still running, the API cancels it.

        If the Elasticsearch security features are enabled, only the following users can use this API to delete a search:

        * Users with the `cancel_task` cluster privilege.
        * The user who first submitted the search.

        ## Required authorization

        * Cluster privileges: `cancel_task`
      operationId: sql-delete-async
      parameters:
      - in: path
        name: id
        description: The identifier for the search.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
      x-state: Generally available; Added in 7.15.0
      x-codeSamples:
      - lang: Console
        source: 'DELETE _sql/async/delete/FmdMX2pIang3UWhLRU5QS0lqdlppYncaMUpYQ05oSkpTc3kwZ21EdC1tbFJXQToxOTI=

          '
      - lang: Python
        source: |-
          resp = client.sql.delete_async(
              id="FmdMX2pIang3UWhLRU5QS0lqdlppYncaMUpYQ05oSkpTc3kwZ21EdC1tbFJXQToxOTI=",
          )
      - lang: JavaScript
        source: |-
          const response = await client.sql.deleteAsync({
            id: "FmdMX2pIang3UWhLRU5QS0lqdlppYncaMUpYQ05oSkpTc3kwZ21EdC1tbFJXQToxOTI=",
          });
      - lang: Ruby
        source: |-
          response = client.sql.delete_async(
            id: "FmdMX2pIang3UWhLRU5QS0lqdlppYncaMUpYQ05oSkpTc3kwZ21EdC1tbFJXQToxOTI="
          )
      - lang: PHP
        source: |-
          $resp = $client->sql()->deleteAsync([
              "id" => "FmdMX2pIang3UWhLRU5QS0lqdlppYncaMUpYQ05oSkpTc3kwZ21EdC1tbFJXQToxOTI=",
          ]);
      - lang: curl
        source: 'curl -X DELETE -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_sql/async/delete/FmdMX2pIang3UWhLRU5QS0lqdlppYncaMUpYQ05oSkpTc3kwZ21EdC1tbFJXQToxOTI="'
      - lang: Java
        source: |
          client.sql().deleteAsync(d -> d
              .id("FmdMX2pIang3UWhLRU5QS0lqdlppYncaMUpYQ05oSkpTc3kwZ21EdC1tbFJXQToxOTI=")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_sql/async/{id}":
    get:
      tags:
      - sql
      summary: Get async SQL search results
      description: |-
        Get the current status and available results for an async SQL search or stored synchronous SQL search.

        If the Elasticsearch security features are enabled, only the user who first submitted the SQL search can retrieve the search using this API.
      operationId: sql-get-async
      parameters:
      - in: path
        name: id
        description: The identifier for the search.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: delimiter
        description: |-
          The separator for CSV results.
          The API supports this parameter only for CSV responses.
        deprecated: false
        schema:
          type: string
        style: form
      - in: query
        name: format
        description: |-
          The format for the response.
          You must specify a format using this parameter or the `Accept` HTTP header.
          If you specify both, the API uses this parameter.
        deprecated: false
        schema:
          type: string
        style: form
      - in: query
        name: keep_alive
        description: |-
          The retention period for the search and its results.
          It defaults to the `keep_alive` period for the original SQL search.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: wait_for_completion_timeout
        description: |-
          The period to wait for complete results.
          It defaults to no timeout, meaning the request waits for complete search results.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    description: |-
                      Identifier for the search.
                      This value is returned only for async and saved synchronous searches.
                      For CSV, TSV, and TXT responses, this value is returned in the `Async-ID` HTTP header.
                    allOf:
                    - "$ref": "#/components/schemas/_types.Id"
                  is_running:
                    description: |-
                      If `true`, the search is still running.
                      If `false`, the search has finished.
                      This value is returned only for async and saved synchronous searches.
                      For CSV, TSV, and TXT responses, this value is returned in the `Async-partial` HTTP header.
                    type: boolean
                  is_partial:
                    description: |-
                      If `true`, the response does not contain complete search results.
                      If `is_partial` is `true` and `is_running` is `true`, the search is still running.
                      If `is_partial` is `true` but `is_running` is `false`, the results are partial due to a failure or timeout.
                      This value is returned only for async and saved synchronous searches.
                      For CSV, TSV, and TXT responses, this value is returned in the `Async-partial` HTTP header.
                    type: boolean
                  columns:
                    description: Column headings for the search results. Each object
                      is a column.
                    type: array
                    items:
                      "$ref": "#/components/schemas/sql._types.Column"
                  cursor:
                    description: |-
                      The cursor for the next set of paginated results.
                      For CSV, TSV, and TXT responses, this value is returned in the `Cursor` HTTP header.
                    type: string
                  rows:
                    description: The values for the search results.
                    type: array
                    items:
                      "$ref": "#/components/schemas/sql._types.Row"
                required:
                - id
                - is_running
                - is_partial
                - rows
      x-state: Generally available; Added in 7.15.0
      x-codeSamples:
      - lang: Console
        source: 'GET _sql/async/FnR0TDhyWUVmUmVtWXRWZER4MXZiNFEad2F5UDk2ZVdTVHV1S0xDUy00SklUdzozMTU=?wait_for_completion_timeout=2s&format=json

          '
      - lang: Python
        source: |-
          resp = client.sql.get_async(
              id="FnR0TDhyWUVmUmVtWXRWZER4MXZiNFEad2F5UDk2ZVdTVHV1S0xDUy00SklUdzozMTU=",
              wait_for_completion_timeout="2s",
              format="json",
          )
      - lang: JavaScript
        source: |-
          const response = await client.sql.getAsync({
            id: "FnR0TDhyWUVmUmVtWXRWZER4MXZiNFEad2F5UDk2ZVdTVHV1S0xDUy00SklUdzozMTU=",
            wait_for_completion_timeout: "2s",
            format: "json",
          });
      - lang: Ruby
        source: |-
          response = client.sql.get_async(
            id: "FnR0TDhyWUVmUmVtWXRWZER4MXZiNFEad2F5UDk2ZVdTVHV1S0xDUy00SklUdzozMTU=",
            wait_for_completion_timeout: "2s",
            format: "json"
          )
      - lang: PHP
        source: |-
          $resp = $client->sql()->getAsync([
              "id" => "FnR0TDhyWUVmUmVtWXRWZER4MXZiNFEad2F5UDk2ZVdTVHV1S0xDUy00SklUdzozMTU=",
              "wait_for_completion_timeout" => "2s",
              "format" => "json",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_sql/async/FnR0TDhyWUVmUmVtWXRWZER4MXZiNFEad2F5UDk2ZVdTVHV1S0xDUy00SklUdzozMTU=?wait_for_completion_timeout=2s&format=json"'
      - lang: Java
        source: |
          client.sql().getAsync(g -> g
              .format("json")
              .id("FnR0TDhyWUVmUmVtWXRWZER4MXZiNFEad2F5UDk2ZVdTVHV1S0xDUy00SklUdzozMTU=")
              .waitForCompletionTimeout(w -> w
                  .offset(2)
              )
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_sql/async/status/{id}":
    get:
      tags:
      - sql
      summary: Get the async SQL search status
      description: |
        Get the current status of an async SQL search or a stored synchronous SQL search.

        ## Required authorization

        * Cluster privileges: `monitor`
      operationId: sql-get-async-status
      parameters:
      - in: path
        name: id
        description: The identifier for the search.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  expiration_time_in_millis:
                    description: The timestamp, in milliseconds since the Unix epoch,
                      when Elasticsearch will delete the search and its results, even
                      if the search is still running.
                    allOf:
                    - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
                  id:
                    description: The identifier for the search.
                    type: string
                  is_running:
                    description: |-
                      If `true`, the search is still running.
                      If `false`, the search has finished.
                    type: boolean
                  is_partial:
                    description: |-
                      If `true`, the response does not contain complete search results.
                      If `is_partial` is `true` and `is_running` is `true`, the search is still running.
                      If `is_partial` is `true` but `is_running` is `false`, the results are partial due to a failure or timeout.
                    type: boolean
                  start_time_in_millis:
                    description: |-
                      The timestamp, in milliseconds since the Unix epoch, when the search started.
                      The API returns this property only for running searches.
                    allOf:
                    - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
                  completion_status:
                    description: |-
                      The HTTP status code for the search.
                      The API returns this property only for completed searches.
                    allOf:
                    - "$ref": "#/components/schemas/_types.uint"
                required:
                - expiration_time_in_millis
                - id
                - is_running
                - is_partial
                - start_time_in_millis
      x-state: Generally available; Added in 7.15.0
      x-codeSamples:
      - lang: Console
        source: 'GET _sql/async/status/FnR0TDhyWUVmUmVtWXRWZER4MXZiNFEad2F5UDk2ZVdTVHV1S0xDUy00SklUdzozMTU=

          '
      - lang: Python
        source: |-
          resp = client.sql.get_async_status(
              id="FnR0TDhyWUVmUmVtWXRWZER4MXZiNFEad2F5UDk2ZVdTVHV1S0xDUy00SklUdzozMTU=",
          )
      - lang: JavaScript
        source: |-
          const response = await client.sql.getAsyncStatus({
            id: "FnR0TDhyWUVmUmVtWXRWZER4MXZiNFEad2F5UDk2ZVdTVHV1S0xDUy00SklUdzozMTU=",
          });
      - lang: Ruby
        source: |-
          response = client.sql.get_async_status(
            id: "FnR0TDhyWUVmUmVtWXRWZER4MXZiNFEad2F5UDk2ZVdTVHV1S0xDUy00SklUdzozMTU="
          )
      - lang: PHP
        source: |-
          $resp = $client->sql()->getAsyncStatus([
              "id" => "FnR0TDhyWUVmUmVtWXRWZER4MXZiNFEad2F5UDk2ZVdTVHV1S0xDUy00SklUdzozMTU=",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_sql/async/status/FnR0TDhyWUVmUmVtWXRWZER4MXZiNFEad2F5UDk2ZVdTVHV1S0xDUy00SklUdzozMTU="'
      - lang: Java
        source: |
          client.sql().getAsyncStatus(g -> g
              .id("FnR0TDhyWUVmUmVtWXRWZER4MXZiNFEad2F5UDk2ZVdTVHV1S0xDUy00SklUdzozMTU=")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_sql":
    get:
      tags:
      - sql
      summary: 'Get SQL search results

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_sql</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_sql</span>\n
        \                     </div>\n                    \n\nRun an SQL request.\n\n##
        Required authorization\n\n* Index privileges: `read`\n"
      operationId: sql-query
      parameters:
      - "$ref": "#/components/parameters/sql.query-format"
      requestBody:
        "$ref": "#/components/requestBodies/sql.query"
      responses:
        '200':
          "$ref": "#/components/responses/sql.query-200"
      x-state: Generally available; Added in 6.3.0
      x-codeSamples:
      - lang: Console
        source: |-
          POST _sql?format=txt
          {
            "query": "SELECT * FROM library ORDER BY page_count DESC LIMIT 5"
          }
      - lang: Python
        source: |-
          resp = client.sql.query(
              format="txt",
              query="SELECT * FROM library ORDER BY page_count DESC LIMIT 5",
          )
      - lang: JavaScript
        source: |-
          const response = await client.sql.query({
            format: "txt",
            query: "SELECT * FROM library ORDER BY page_count DESC LIMIT 5",
          });
      - lang: Ruby
        source: |-
          response = client.sql.query(
            format: "txt",
            body: {
              "query": "SELECT * FROM library ORDER BY page_count DESC LIMIT 5"
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->sql()->query([
              "format" => "txt",
              "body" => [
                  "query" => "SELECT * FROM library ORDER BY page_count DESC LIMIT 5",
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"query":"SELECT * FROM library ORDER BY page_count
          DESC LIMIT 5"}'' "$ELASTICSEARCH_URL/_sql?format=txt"'
      - lang: Java
        source: |
          client.sql().query(q -> q
              .format(SqlFormat.Txt)
              .query("SELECT * FROM library ORDER BY page_count DESC LIMIT 5")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_sql/translate":
    get:
      tags:
      - sql
      summary: 'Translate SQL into Elasticsearch queries

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_sql/translate</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_sql/translate</span>\n
        \                     </div>\n                    \n\nTranslate an SQL search
        into a search API request containing Query DSL.\nIt accepts the same request
        body parameters as the SQL search API, excluding `cursor`.\n\n## Required
        authorization\n\n* Index privileges: `read`\n"
      operationId: sql-translate
      requestBody:
        "$ref": "#/components/requestBodies/sql.translate"
      responses:
        '200':
          "$ref": "#/components/responses/sql.translate-200"
      x-state: Generally available; Added in 6.3.0
      x-codeSamples:
      - lang: Console
        source: |-
          POST _sql/translate
          {
            "query": "SELECT * FROM library ORDER BY page_count DESC",
            "fetch_size": 10
          }
      - lang: Python
        source: |-
          resp = client.sql.translate(
              query="SELECT * FROM library ORDER BY page_count DESC",
              fetch_size=10,
          )
      - lang: JavaScript
        source: |-
          const response = await client.sql.translate({
            query: "SELECT * FROM library ORDER BY page_count DESC",
            fetch_size: 10,
          });
      - lang: Ruby
        source: |-
          response = client.sql.translate(
            body: {
              "query": "SELECT * FROM library ORDER BY page_count DESC",
              "fetch_size": 10
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->sql()->translate([
              "body" => [
                  "query" => "SELECT * FROM library ORDER BY page_count DESC",
                  "fetch_size" => 10,
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"query":"SELECT * FROM library ORDER BY page_count
          DESC","fetch_size":10}'' "$ELASTICSEARCH_URL/_sql/translate"'
      - lang: Java
        source: |
          client.sql().translate(t -> t
              .fetchSize(10)
              .query("SELECT * FROM library ORDER BY page_count DESC")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_ssl/certificates":
    get:
      tags:
      - security
      summary: Get SSL certificates
      description: |
        Get information about the X.509 certificates that are used to encrypt communications in the cluster.
        The API returns a list that includes certificates from all TLS contexts including:

        - Settings for transport and HTTP interfaces
        - TLS settings that are used within authentication realms
        - TLS settings for remote monitoring exporters

        The list includes certificates that are used for configuring trust, such as those configured in the `xpack.security.transport.ssl.truststore` and `xpack.security.transport.ssl.certificate_authorities` settings.
        It also includes certificates that are used for configuring server identity, such as `xpack.security.http.ssl.keystore` and `xpack.security.http.ssl.certificate settings`.

        The list does not include certificates that are sourced from the default SSL context of the Java Runtime Environment (JRE), even if those certificates are in use within Elasticsearch.

        NOTE: When a PKCS#11 token is configured as the truststore of the JRE, the API returns all the certificates that are included in the PKCS#11 token irrespective of whether these are used in the Elasticsearch TLS configuration.

        If Elasticsearch is configured to use a keystore or truststore, the API output includes all certificates in that store, even though some of the certificates might not be in active use within the cluster.

        ## Required authorization

        * Cluster privileges: `monitor`
      externalDocs:
        url: https://www.elastic.co/docs/deploy-manage/security/set-up-basic-security#encrypt-internode-communication
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/security-api-ssl.html
      operationId: ssl-certificates
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  "$ref": "#/components/schemas/ssl.certificates.CertificateInformation"
              examples:
                GetCertificatesResponseExample1:
                  description: 'A successful response from `GET /_ssl/certificates`,
                    which provides information about the certificates on a single
                    node of Elasticsearch.

                    '
                  value: |-
                    [
                      {
                        "path": "certs/elastic-certificates.p12",
                        "format": "PKCS12",
                        "alias": "instance",
                        "subject_dn": "CN=Elastic Certificate Tool Autogenerated CA",
                        "serial_number": "a20f0ee901e8f69dc633ff633e5cd5437cdb4137",
                        "has_private_key": false,
                        "expiry": "2021-01-15T20:42:49.000Z"
                      },
                      {
                        "path": "certs/elastic-certificates.p12",
                        "format": "PKCS12",
                        "alias": "ca",
                        "subject_dn": "CN=Elastic Certificate Tool Autogenerated CA",
                        "serial_number": "a20f0ee901e8f69dc633ff633e5cd5437cdb4137",
                        "has_private_key": false,
                        "expiry": "2021-01-15T20:42:49.000Z"
                      },
                      {
                        "path": "certs/elastic-certificates.p12",
                        "format": "PKCS12",
                        "alias": "instance",
                        "subject_dn": "CN=instance",
                        "serial_number": "fc1905e1494dc5230218d079c47a617088f84ce0",
                        "has_private_key": true,
                        "expiry": "2021-01-15T20:44:32.000Z"
                      }
                    ]
      x-state: Generally available; Added in 6.2.0
      x-codeSamples:
      - lang: Console
        source: 'GET /_ssl/certificates

          '
      - lang: Python
        source: resp = client.ssl.certificates()
      - lang: JavaScript
        source: const response = await client.ssl.certificates();
      - lang: Ruby
        source: response = client.ssl.certificates
      - lang: PHP
        source: "$resp = $client->ssl()->certificates();"
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_ssl/certificates"'
      - lang: Java
        source: 'client.ssl().certificates();

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_streams/{name}/_disable":
    post:
      tags:
      - streams
      summary: Disable a named stream
      description: |
        Turn off the named stream feature for this cluster.

        ## Required authorization

        * Cluster privileges: `manage`
      operationId: streams-logs-disable
      parameters:
      - in: path
        name: name
        description: |+
          The stream type to disable.

          Supported values include:
            - `logs`: The logs stream type.
            - `logs.otel`: The logs.otel stream type, meant for OTel-formatted data.
            - `logs.ecs`: The logs.ecs stream type, meant for ECS-formatted data.

        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/streams._types.StreamType"
        style: simple
      - in: query
        name: master_timeout
        description: |-
          The period to wait for a connection to the master node.
          If no response is received before the timeout expires, the request fails and returns an error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: timeout
        description: |-
          The period to wait for a response.
          If no response is received before the timeout expires, the request fails and returns an error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
              examples:
                PostStreamsLogsDisableResponseExample1:
                  summary: Disable logs.otel streams
                  description: 'A successful response from `POST _streams/logs.otel/_disable`
                    endpoint

                    '
                  value: |-
                    {
                      "acknowledged": true
                    }
      x-state: Technical preview; Added in 9.1.0
      x-codeSamples:
      - lang: Console
        source: 'POST _streams/logs.otel/_disable

          '
      - lang: Python
        source: |-
          resp = client.streams.logs_disable(
              name="logs.otel",
          )
      - lang: JavaScript
        source: |-
          const response = await client.streams.logsDisable({
            name: "logs.otel",
          });
      - lang: Ruby
        source: |-
          response = client.streams.logs_disable(
            name: "logs.otel"
          )
      - lang: PHP
        source: |-
          $resp = $client->streams()->logsDisable([
              "name" => "logs.otel",
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_streams/logs.otel/_disable"'
      - lang: Java
        source: 'client.streams().logsDisable(l -> l);

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_streams/{name}/_enable":
    post:
      tags:
      - streams
      summary: Enable a named stream
      description: |
        Turn on the named stream feature for this cluster.

        NOTE: To protect existing data, this feature can be turned on only if the cluster does not have
        existing indices or data streams that match the pattern `<name>|<name>.*` for the enabled stream
        type name. If those indices or data streams exist, a `409 - Conflict` response and error is
        returned.

        ## Required authorization

        * Cluster privileges: `manage`
      operationId: streams-logs-enable
      parameters:
      - in: path
        name: name
        description: |+
          The stream type to enable.

          Supported values include:
            - `logs`: The logs stream type.
            - `logs.otel`: The logs.otel stream type, meant for OTel-formatted data.
            - `logs.ecs`: The logs.ecs stream type, meant for ECS-formatted data.

        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/streams._types.StreamType"
        style: simple
      - in: query
        name: master_timeout
        description: |-
          The period to wait for a connection to the master node.
          If no response is received before the timeout expires, the request fails and returns an error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: timeout
        description: |-
          The period to wait for a response.
          If no response is received before the timeout expires, the request fails and returns an error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
              examples:
                PostStreamsEnableResponseExample1:
                  summary: Enable logs streams
                  description: 'A successful response from `POST _streams/logs.otel/_enable`
                    endpoint

                    '
                  value: |-
                    {
                      "acknowledged": true
                    }
      x-state: Technical preview; Added in 9.1.0
      x-codeSamples:
      - lang: Console
        source: 'POST _streams/logs.otel/_enable

          '
      - lang: Python
        source: |-
          resp = client.streams.logs_enable(
              name="logs.otel",
          )
      - lang: JavaScript
        source: |-
          const response = await client.streams.logsEnable({
            name: "logs.otel",
          });
      - lang: Ruby
        source: |-
          response = client.streams.logs_enable(
            name: "logs.otel"
          )
      - lang: PHP
        source: |-
          $resp = $client->streams()->logsEnable([
              "name" => "logs.otel",
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_streams/logs.otel/_enable"'
      - lang: Java
        source: 'client.streams().logsEnable(l -> l);

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_streams/status":
    get:
      tags:
      - streams
      summary: Get the status of streams
      description: |
        Get the current status for all types of streams.

        ## Required authorization

        * Cluster privileges: `monitor`
      operationId: streams-status
      parameters:
      - in: query
        name: master_timeout
        description: Period to wait for a connection to the master node. If no response
          is received before the timeout expires, the request fails and returns an
          error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  logs:
                    allOf:
                    - "$ref": "#/components/schemas/streams.status.StreamStatus"
                  logs.otel:
                    allOf:
                    - "$ref": "#/components/schemas/streams.status.StreamStatus"
                  logs.ecs:
                    allOf:
                    - "$ref": "#/components/schemas/streams.status.StreamStatus"
                required:
                - logs
                - logs.otel
                - logs.ecs
              examples:
                GetStreamsStatusResponseExample1:
                  summary: Get Streams Status A successful response from `GET _streams/status`
                    that outlines the current state of all wired streams in the cluster.
                  value: |-
                    {
                      "logs": {
                        "enabled": false
                      }
                      "logs.ecs": {
                        "enabled": true
                      }
                      "logs.otel": {
                        "enabled": true
                      }
                    }
      x-state: Technical preview; Added in 9.1.0
      x-codeSamples:
      - lang: Console
        source: 'GET _streams/status

          '
      - lang: Python
        source: resp = client.streams.status()
      - lang: JavaScript
        source: const response = await client.streams.status();
      - lang: Ruby
        source: response = client.streams.status
      - lang: PHP
        source: "$resp = $client->streams()->status();"
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_streams/status"'
      - lang: Java
        source: 'client.streams().status(s -> s);

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_synonyms/{id}":
    get:
      tags:
      - synonyms
      summary: Get a synonym set
      description: |2


        ## Required authorization

        * Cluster privileges: `manage_search_synonyms`
      operationId: synonyms-get-synonym
      parameters:
      - in: path
        name: id
        description: The synonyms set identifier to retrieve.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: from
        description: The starting offset for query rules to retrieve.
        deprecated: false
        schema:
          type: number
        style: form
      - in: query
        name: size
        description: The max number of query rules to retrieve.
        deprecated: false
        schema:
          type: number
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    description: The total number of synonyms rules that the synonyms
                      set contains.
                    type: number
                  synonyms_set:
                    description: Synonym rule details.
                    type: array
                    items:
                      "$ref": "#/components/schemas/synonyms._types.SynonymRuleRead"
                required:
                - count
                - synonyms_set
              examples:
                SynonymsGetResponseExample1:
                  description: A successful response from `GET _synonyms/my-synonyms-set`.
                  value: |-
                    {
                      "count": 3,
                      "synonyms_set": [
                        {
                          "id": "test-1",
                          "synonyms": "hello, hi"
                        },
                        {
                          "id": "test-2",
                          "synonyms": "bye, goodbye"
                        },
                        {
                          "id": "test-3",
                          "synonyms": "test => check"
                        }
                      ]
                    }
      x-state: Generally available; Added in 8.10.0
      x-codeSamples:
      - lang: Console
        source: 'GET _synonyms/my-synonyms-set

          '
      - lang: Python
        source: |-
          resp = client.synonyms.get_synonym(
              id="my-synonyms-set",
          )
      - lang: JavaScript
        source: |-
          const response = await client.synonyms.getSynonym({
            id: "my-synonyms-set",
          });
      - lang: Ruby
        source: |-
          response = client.synonyms.get_synonym(
            id: "my-synonyms-set"
          )
      - lang: PHP
        source: |-
          $resp = $client->synonyms()->getSynonym([
              "id" => "my-synonyms-set",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_synonyms/my-synonyms-set"'
      - lang: Java
        source: |
          client.synonyms().getSynonym(g -> g
              .id("my-synonyms-set")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    put:
      tags:
      - synonyms
      summary: Create or update a synonym set
      description: |
        Synonyms sets are limited to a maximum of 10,000 synonym rules per set.
        If you need to manage more synonym rules, you can create multiple synonym sets.

        When an existing synonyms set is updated, the search analyzers that use the synonyms set are reloaded automatically for all indices.
        This is equivalent to invoking the reload search analyzers API for all indices that use the synonyms set.

        For practical examples of how to create or update a synonyms set, refer to the External documentation.

        ## Required authorization

        * Cluster privileges: `manage_search_synonyms`
      externalDocs:
        url: https://www.elastic.co/docs/solutions/search/full-text/create-update-synonyms-api-example
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/put-synonyms-set.html
      operationId: synonyms-put-synonym
      parameters:
      - in: path
        name: id
        description: The ID of the synonyms set to be created or updated.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: refresh
        description: |-
          If `true`, the request will refresh the analyzers with the new synonyms set and wait for the new synonyms to be available before returning.
          If `false`, analyzers will not be reloaded with the new synonym set
        deprecated: false
        schema:
          type: boolean
        x-state: Generally available; Added in 9.1.0
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                synonyms_set:
                  description: The synonym rules definitions for the synonyms set.
                  oneOf:
                  - "$ref": "#/components/schemas/synonyms._types.SynonymRule"
                  - type: array
                    items:
                      "$ref": "#/components/schemas/synonyms._types.SynonymRule"
              required:
              - synonyms_set
            examples:
              SynonymsPutRequestExample1:
                description: ''
                value: |2-

                  {
                    "synonyms_set": {
                    "synonyms" : "hello, hi, howdy"
                    }
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    description: The update operation result.
                    allOf:
                    - "$ref": "#/components/schemas/_types.Result"
                  reload_analyzers_details:
                    description: |-
                      Updating a synonyms set can reload the associated analyzers in case refresh is set to true.
                      This information is the analyzers reloading result.
                    allOf:
                    - "$ref": "#/components/schemas/indices.reload_search_analyzers.ReloadResult"
                required:
                - result
      x-state: Generally available; Added in 8.10.0
      x-codeSamples:
      - lang: Console
        source: |-
          PUT _synonyms/my-synonyms-set

          {
            "synonyms_set": {
            "synonyms" : "hello, hi, howdy"
            }
          }
      - lang: Python
        source: |-
          resp = client.synonyms.put_synonym(
              id="my-synonyms-set",
              synonyms_set={
                  "synonyms": "hello, hi, howdy"
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.synonyms.putSynonym({
            id: "my-synonyms-set",
            synonyms_set: {
              synonyms: "hello, hi, howdy",
            },
          });
      - lang: Ruby
        source: |-
          response = client.synonyms.put_synonym(
            id: "my-synonyms-set",
            body: {
              "synonyms_set": {
                "synonyms": "hello, hi, howdy"
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->synonyms()->putSynonym([
              "id" => "my-synonyms-set",
              "body" => [
                  "synonyms_set" => [
                      "synonyms" => "hello, hi, howdy",
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"synonyms_set":{"synonyms":"hello, hi, howdy"}}''
          "$ELASTICSEARCH_URL/_synonyms/my-synonyms-set"'
      - lang: Java
        source: |
          client.synonyms().putSynonym(p -> p
              .id("my-synonyms-set")
              .synonymsSet(s -> s
                  .synonyms("hello, hi, howdy")
              )
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    delete:
      tags:
      - synonyms
      summary: Delete a synonym set
      description: |
        You can only delete a synonyms set that is not in use by any index analyzer.

        Synonyms sets can be used in synonym graph token filters and synonym token filters.
        These synonym filters can be used as part of search analyzers.

        Analyzers need to be loaded when an index is restored (such as when a node starts, or the index becomes open).
        Even if the analyzer is not used on any field mapping, it still needs to be loaded on the index recovery phase.

        If any analyzers cannot be loaded, the index becomes unavailable and the cluster status becomes red or yellow as index shards are not available.
        To prevent that, synonyms sets that are used in analyzers can't be deleted.
        A delete request in this case will return a 400 response code.

        To remove a synonyms set, you must first remove all indices that contain analyzers using it.
        You can migrate an index by creating a new index that does not contain the token filter with the synonyms set, and use the reindex API in order to copy over the index data.
        Once finished, you can delete the index.
        When the synonyms set is not used in analyzers, you will be able to delete it.

        ## Required authorization

        * Cluster privileges: `manage_search_synonyms`
      operationId: synonyms-delete-synonym
      parameters:
      - in: path
        name: id
        description: The synonyms set identifier to delete.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
      x-state: Generally available; Added in 8.10.0
      x-codeSamples:
      - lang: Console
        source: 'DELETE _synonyms/my-synonyms-set

          '
      - lang: Python
        source: |-
          resp = client.synonyms.delete_synonym(
              id="my-synonyms-set",
          )
      - lang: JavaScript
        source: |-
          const response = await client.synonyms.deleteSynonym({
            id: "my-synonyms-set",
          });
      - lang: Ruby
        source: |-
          response = client.synonyms.delete_synonym(
            id: "my-synonyms-set"
          )
      - lang: PHP
        source: |-
          $resp = $client->synonyms()->deleteSynonym([
              "id" => "my-synonyms-set",
          ]);
      - lang: curl
        source: 'curl -X DELETE -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_synonyms/my-synonyms-set"'
      - lang: Java
        source: |
          client.synonyms().deleteSynonym(d -> d
              .id("my-synonyms-set")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_synonyms/{set_id}/{rule_id}":
    get:
      tags:
      - synonyms
      summary: Get a synonym rule
      description: |
        Get a synonym rule from a synonym set.

        ## Required authorization

        * Cluster privileges: `manage_search_synonyms`
      operationId: synonyms-get-synonym-rule
      parameters:
      - in: path
        name: set_id
        description: The ID of the synonym set to retrieve the synonym rule from.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: path
        name: rule_id
        description: The ID of the synonym rule to retrieve.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/synonyms._types.SynonymRuleRead"
              examples:
                SynonymRuleGetResponseExample1:
                  description: A successful response from `GET _synonyms/my-synonyms-set/test-1`.
                  value: |-
                    {
                      "id": "test-1",
                      "synonyms": "hello, hi"
                    }
      x-state: Generally available; Added in 8.10.0
      x-codeSamples:
      - lang: Console
        source: 'GET _synonyms/my-synonyms-set/test-1

          '
      - lang: Python
        source: |-
          resp = client.synonyms.get_synonym_rule(
              set_id="my-synonyms-set",
              rule_id="test-1",
          )
      - lang: JavaScript
        source: |-
          const response = await client.synonyms.getSynonymRule({
            set_id: "my-synonyms-set",
            rule_id: "test-1",
          });
      - lang: Ruby
        source: |-
          response = client.synonyms.get_synonym_rule(
            set_id: "my-synonyms-set",
            rule_id: "test-1"
          )
      - lang: PHP
        source: |-
          $resp = $client->synonyms()->getSynonymRule([
              "set_id" => "my-synonyms-set",
              "rule_id" => "test-1",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_synonyms/my-synonyms-set/test-1"'
      - lang: Java
        source: |
          client.synonyms().getSynonymRule(g -> g
              .ruleId("test-1")
              .setId("my-synonyms-set")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    put:
      tags:
      - synonyms
      summary: Create or update a synonym rule
      description: |
        Create or update a synonym rule in a synonym set.

        If any of the synonym rules included is invalid, the API returns an error.

        When you update a synonym rule, all analyzers using the synonyms set will be reloaded automatically to reflect the new rule.

        ## Required authorization

        * Cluster privileges: `manage_search_synonyms`
      operationId: synonyms-put-synonym-rule
      parameters:
      - in: path
        name: set_id
        description: The ID of the synonym set.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: path
        name: rule_id
        description: The ID of the synonym rule to be updated or created.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: refresh
        description: |-
          If `true`, the request will refresh the analyzers with the new synonym rule and wait for the new synonyms to be available before returning.
          If `false`, analyzers will not be reloaded with the new synonym rule
        deprecated: false
        schema:
          type: boolean
        x-state: Generally available; Added in 9.1.0
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                synonyms:
                  externalDocs:
                    url: https://www.elastic.co/docs/reference/text-analysis/analysis-synonym-graph-tokenfilter#analysis-synonym-graph-define-synonyms
                  description: The synonym rule information definition, which must
                    be in Solr format.
                  allOf:
                  - "$ref": "#/components/schemas/synonyms._types.SynonymString"
              required:
              - synonyms
            examples:
              SynonymRulePutRequestExample1:
                summary: synonyms/apis/put-synonym-rule.asciidoc:107
                description: ''
                value: |-
                  {
                    "synonyms": "hello, hi, howdy"
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/synonyms._types.SynonymsUpdateResult"
              examples:
                SynonymRuleResponseExample1:
                  description: 'A successful response from `PUT _synonyms/my-synonyms-set/test-1`.

                    '
                  value: |-
                    {
                      "result": "updated",
                      "reload_analyzers_details": {
                        "_shards": {
                          "total": 2,
                          "successful": 1,
                          "failed": 0
                        },
                        "reload_details": [
                          {
                            "index": "test-index",
                            "reloaded_analyzers": [
                              "my_search_analyzer"
                            ],
                            "reloaded_node_ids": [
                              "1wYFZzq8Sxeu_Jvt9mlbkg"
                            ]
                          }
                        ]
                      }
                    }
      x-state: Generally available; Added in 8.10.0
      x-codeSamples:
      - lang: Console
        source: |-
          PUT _synonyms/my-synonyms-set/test-1
          {
            "synonyms": "hello, hi, howdy"
          }
      - lang: Python
        source: |-
          resp = client.synonyms.put_synonym_rule(
              set_id="my-synonyms-set",
              rule_id="test-1",
              synonyms="hello, hi, howdy",
          )
      - lang: JavaScript
        source: |-
          const response = await client.synonyms.putSynonymRule({
            set_id: "my-synonyms-set",
            rule_id: "test-1",
            synonyms: "hello, hi, howdy",
          });
      - lang: Ruby
        source: |-
          response = client.synonyms.put_synonym_rule(
            set_id: "my-synonyms-set",
            rule_id: "test-1",
            body: {
              "synonyms": "hello, hi, howdy"
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->synonyms()->putSynonymRule([
              "set_id" => "my-synonyms-set",
              "rule_id" => "test-1",
              "body" => [
                  "synonyms" => "hello, hi, howdy",
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"synonyms":"hello, hi, howdy"}'' "$ELASTICSEARCH_URL/_synonyms/my-synonyms-set/test-1"'
      - lang: Java
        source: |
          client.synonyms().putSynonymRule(p -> p
              .ruleId("test-1")
              .setId("my-synonyms-set")
              .synonyms("hello, hi, howdy")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    delete:
      tags:
      - synonyms
      summary: Delete a synonym rule
      description: |
        Delete a synonym rule from a synonym set.

        ## Required authorization

        * Cluster privileges: `manage_search_synonyms`
      operationId: synonyms-delete-synonym-rule
      parameters:
      - in: path
        name: set_id
        description: The ID of the synonym set to update.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: path
        name: rule_id
        description: The ID of the synonym rule to delete.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: refresh
        description: |-
          If `true`, the request will refresh the analyzers with the deleted synonym rule and wait for the new synonyms to be available before returning.
          If `false`, analyzers will not be reloaded with the deleted synonym rule
        deprecated: false
        schema:
          type: boolean
        x-state: Generally available; Added in 9.1.0
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/synonyms._types.SynonymsUpdateResult"
              examples:
                SynonymRuleDeleteResponseExample1:
                  description: 'A successful response from `DELETE _synonyms/my-synonyms-set/test-1`.
                    All analyzers using this synonyms set will be reloaded automatically
                    to reflect the rule being deleted.

                    '
                  value: |-
                    {
                      "result": "deleted",
                      "reload_analyzers_details": {
                        "_shards": {
                          "total": 2,
                          "successful": 1,
                          "failed": 0
                        },
                        "reload_details": [
                          {
                            "index": "test-index",
                            "reloaded_analyzers": [
                              "my_search_analyzer"
                            ],
                            "reloaded_node_ids": [
                              "1wYFZzq8Sxeu_Jvt9mlbkg"
                            ]
                          }
                        ]
                      }
                    }
      x-state: Generally available; Added in 8.10.0
      x-codeSamples:
      - lang: Console
        source: 'DELETE _synonyms/my-synonyms-set/test-1

          '
      - lang: Python
        source: |-
          resp = client.synonyms.delete_synonym_rule(
              set_id="my-synonyms-set",
              rule_id="test-1",
          )
      - lang: JavaScript
        source: |-
          const response = await client.synonyms.deleteSynonymRule({
            set_id: "my-synonyms-set",
            rule_id: "test-1",
          });
      - lang: Ruby
        source: |-
          response = client.synonyms.delete_synonym_rule(
            set_id: "my-synonyms-set",
            rule_id: "test-1"
          )
      - lang: PHP
        source: |-
          $resp = $client->synonyms()->deleteSynonymRule([
              "set_id" => "my-synonyms-set",
              "rule_id" => "test-1",
          ]);
      - lang: curl
        source: 'curl -X DELETE -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_synonyms/my-synonyms-set/test-1"'
      - lang: Java
        source: |
          client.synonyms().deleteSynonymRule(d -> d
              .ruleId("test-1")
              .setId("my-synonyms-set")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_synonyms":
    get:
      tags:
      - synonyms
      summary: Get all synonym sets
      description: |
        Get a summary of all defined synonym sets.

        ## Required authorization

        * Cluster privileges: `manage_search_synonyms`
      operationId: synonyms-get-synonyms-sets
      parameters:
      - in: query
        name: from
        description: The starting offset for synonyms sets to retrieve.
        deprecated: false
        schema:
          type: number
        style: form
      - in: query
        name: size
        description: The maximum number of synonyms sets to retrieve.
        deprecated: false
        schema:
          type: number
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    description: The total number of synonyms sets defined.
                    type: number
                  results:
                    description: The identifier and total number of defined synonym
                      rules for each synonyms set.
                    type: array
                    items:
                      "$ref": "#/components/schemas/synonyms.get_synonyms_sets.SynonymsSetItem"
                required:
                - count
                - results
              examples:
                SynonymsSetsGetResponseExample1:
                  description: A successful response from `GET _synonyms`.
                  value: |-
                    {
                      "count": 3,
                      "results": [
                        {
                          "synonyms_set": "ecommerce-synonyms",
                          "count": 2
                        },
                        {
                          "synonyms_set": "my-synonyms-set",
                          "count": 3
                        },
                        {
                          "synonyms_set": "new-ecommerce-synonyms",
                          "count": 1
                        }
                      ]
                    }
      x-state: Generally available; Added in 8.10.0
      x-codeSamples:
      - lang: Console
        source: 'GET _synonyms

          '
      - lang: Python
        source: resp = client.synonyms.get_synonyms_sets()
      - lang: JavaScript
        source: const response = await client.synonyms.getSynonymsSets();
      - lang: Ruby
        source: response = client.synonyms.get_synonyms_sets
      - lang: PHP
        source: "$resp = $client->synonyms()->getSynonymsSets();"
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_synonyms"'
      - lang: Java
        source: 'client.synonyms().getSynonymsSets(g -> g);

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_tasks/{task_id}/_cancel":
    post:
      tags:
      - tasks
      summary: 'Cancel a task

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_tasks/_cancel</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_tasks/{task_id}/_cancel</span>\n
        \                     </div>\n                    \n\nWARNING: The task management
        API is new and should still be considered a beta feature.\nThe API may change
        in ways that are not backwards compatible.\n\nA task may continue to run for
        some time after it has been cancelled because it may not be able to safely
        stop its current activity straight away.\nIt is also possible that Elasticsearch
        must complete its work on other tasks before it can process the cancellation.\nThe
        get task information API will continue to list these cancelled tasks until
        they complete.\nThe cancelled flag in the response indicates that the cancellation
        command has been processed and the task will stop as soon as possible.\n\nTo
        troubleshoot why a cancelled task does not complete promptly, use the get
        task information API with the `?detailed` parameter to identify the other
        tasks the system is running.\nYou can also use the node hot threads API to
        obtain detailed information about the work the system is doing instead of
        completing the cancelled task.\n\n## Required authorization\n\n* Cluster privileges:
        `manage`\n"
      operationId: tasks-cancel
      parameters:
      - "$ref": "#/components/parameters/tasks.cancel-task_id"
      - "$ref": "#/components/parameters/tasks.cancel-actions"
      - "$ref": "#/components/parameters/tasks.cancel-nodes"
      - "$ref": "#/components/parameters/tasks.cancel-parent_task_id"
      - "$ref": "#/components/parameters/tasks.cancel-wait_for_completion"
      responses:
        '200':
          "$ref": "#/components/responses/tasks.cancel-200"
      x-state: Technical preview; Added in 2.3.0
      x-codeSamples:
      - lang: Console
        source: 'POST _tasks/<task_id>/_cancel

          '
      - lang: Python
        source: |-
          resp = client.tasks.cancel(
              task_id="<task_id>",
          )
      - lang: JavaScript
        source: |-
          const response = await client.tasks.cancel({
            task_id: "<task_id>",
          });
      - lang: Ruby
        source: |-
          response = client.tasks.cancel(
            task_id: "<task_id>"
          )
      - lang: PHP
        source: |-
          $resp = $client->tasks()->cancel([
              "task_id" => "<task_id>",
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_tasks/<task_id>/_cancel"'
      - lang: Java
        source: |
          client.tasks().cancel(c -> c
              .taskId("<task_id>")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_tasks/{task_id}":
    get:
      tags:
      - tasks
      summary: Get task information
      description: |
        Get information about a task currently running in the cluster.

        WARNING: The task management API is new and should still be considered a beta feature.
        The API may change in ways that are not backwards compatible.

        If the task identifier is not found, a 404 response code indicates that there are no resources that match the request.

        ## Required authorization

        * Cluster privileges: `monitor`
      operationId: tasks-get
      parameters:
      - in: path
        name: task_id
        description: The task identifier.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: timeout
        description: |-
          The period to wait for a response.
          If no response is received before the timeout expires, the request fails and returns an error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: wait_for_completion
        description: If `true`, the request blocks until the task has completed.
        deprecated: false
        schema:
          type: boolean
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  completed:
                    type: boolean
                  task:
                    allOf:
                    - "$ref": "#/components/schemas/tasks._types.TaskInfo"
                  response:
                    type: object
                  error:
                    allOf:
                    - "$ref": "#/components/schemas/_types.ErrorCause"
                required:
                - completed
                - task
              examples:
                GetTaskResponseExample1:
                  summary: Get cluster actions
                  description: 'A successful response from `GET _tasks?actions=cluster:*`,
                    which retrieves all cluster-related tasks.

                    '
                  value: |-
                    {
                      "nodes" : {
                        "oTUltX4IQMOUUVeiohTt8A" : {
                          "name" : "H5dfFeA",
                          "transport_address" : "127.0.0.1:9300",
                          "host" : "127.0.0.1",
                          "ip" : "127.0.0.1:9300",
                          "tasks" : {
                            "oTUltX4IQMOUUVeiohTt8A:124" : {
                              "node" : "oTUltX4IQMOUUVeiohTt8A",
                              "id" : 124,
                              "type" : "direct",
                              "action" : "cluster:monitor/tasks/lists[n]",
                              "start_time_in_millis" : 1458585884904,
                              "running_time_in_nanos" : 47402,
                              "cancellable" : false,
                              "parent_task_id" : "oTUltX4IQMOUUVeiohTt8A:123"
                            },
                            "oTUltX4IQMOUUVeiohTt8A:123" : {
                              "node" : "oTUltX4IQMOUUVeiohTt8A",
                              "id" : 123,
                              "type" : "transport",
                              "action" : "cluster:monitor/tasks/lists",
                              "start_time_in_millis" : 1458585884904,
                              "running_time_in_nanos" : 236042,
                              "cancellable" : false
                            }
                          }
                        }
                      }
                    }
                GetTaskResponseExample2:
                  summary: Get details about a delete by query
                  description: 'A successful response from `GET _tasks?detailed=true&actions=*/delete/byquery`,
                    which gets the status of a delete by query operation. The `status`
                    object contains the actual status. `total` is the total number
                    of operations that the reindex expects to perform. You can estimate
                    the progress by adding the `updated`, `created`, and `deleted`
                    fields. The request will finish when their sum is equal to the
                    `total` field.

                    '
                  value: "{\n  \"nodes\" : {\n    \"r1A2WoRbTwKZ516z6NEs5A\" : {\n
                    \     \"name\" : \"r1A2WoR\",\n      \"transport_address\" : \"127.0.0.1:9300\",\n
                    \     \"host\" : \"127.0.0.1\",\n      \"ip\" : \"127.0.0.1:9300\",\n
                    \     \"attributes\" : {\n        \"testattr\" : \"test\",\n        \"portsfile\"
                    : \"true\"\n      },\n      \"tasks\" : {\n        \"r1A2WoRbTwKZ516z6NEs5A:36619\"
                    : {\n          \"node\" : \"r1A2WoRbTwKZ516z6NEs5A\",\n          \"id\"
                    : 36619,\n          \"type\" : \"transport\",\n          \"action\"
                    : \"indices:data/write/delete/byquery\",\n          \"status\"
                    : {    \n            \"total\" : 6154,\n            \"updated\"
                    : 0,\n            \"created\" : 0,\n            \"deleted\" :
                    3500,\n            \"batches\" : 36,\n            \"version_conflicts\"
                    : 0,\n            \"noops\" : 0,\n            \"retries\": 0,\n
                    \           \"throttled_millis\": 0\n          },\n          \"description\"
                    : \"\"\n        }\n      }\n    }\n  }\n}"
      x-state: Technical preview; Added in 5.0.0
      x-codeSamples:
      - lang: Console
        source: 'GET _tasks?detailed=true&actions=*/delete/byquery

          '
      - lang: Python
        source: |-
          resp = client.tasks.list(
              detailed=True,
              actions="*/delete/byquery",
          )
      - lang: JavaScript
        source: |-
          const response = await client.tasks.list({
            detailed: "true",
            actions: "*/delete/byquery",
          });
      - lang: Ruby
        source: |-
          response = client.tasks.list(
            detailed: "true",
            actions: "*/delete/byquery"
          )
      - lang: PHP
        source: |-
          $resp = $client->tasks()->list([
              "detailed" => "true",
              "actions" => "*/delete/byquery",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_tasks?detailed=true&actions=*/delete/byquery"'
      - lang: Java
        source: |
          client.tasks().list(l -> l
              .actions("*/delete/byquery")
              .detailed(true)
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_tasks":
    get:
      tags:
      - tasks
      summary: Get all tasks
      description: |
        Get information about the tasks currently running on one or more nodes in the cluster.

        WARNING: The task management API is new and should still be considered a beta feature.
        The API may change in ways that are not backwards compatible.

        **Identifying running tasks**

        The `X-Opaque-Id header`, when provided on the HTTP request header, is going to be returned as a header in the response as well as in the headers field for in the task information.
        This enables you to track certain calls or associate certain tasks with the client that started them.
        For example:

        ```
        curl -i -H "X-Opaque-Id: 123456" "http://localhost:9200/_tasks?group_by=parents"
        ```

        The API returns the following result:

        ```
        HTTP/1.1 200 OK
        X-Opaque-Id: 123456
        content-type: application/json; charset=UTF-8
        content-length: 831

        {
          "tasks" : {
            "u5lcZHqcQhu-rUoFaqDphA:45" : {
              "node" : "u5lcZHqcQhu-rUoFaqDphA",
              "id" : 45,
              "type" : "transport",
              "action" : "cluster:monitor/tasks/lists",
              "start_time_in_millis" : 1513823752749,
              "running_time_in_nanos" : 293139,
              "cancellable" : false,
              "headers" : {
                "X-Opaque-Id" : "123456"
              },
              "children" : [
                {
                  "node" : "u5lcZHqcQhu-rUoFaqDphA",
                  "id" : 46,
                  "type" : "direct",
                  "action" : "cluster:monitor/tasks/lists[n]",
                  "start_time_in_millis" : 1513823752750,
                  "running_time_in_nanos" : 92133,
                  "cancellable" : false,
                  "parent_task_id" : "u5lcZHqcQhu-rUoFaqDphA:45",
                  "headers" : {
                    "X-Opaque-Id" : "123456"
                  }
                }
              ]
            }
          }
         }
        ```
        In this example, `X-Opaque-Id: 123456` is the ID as a part of the response header.
        The `X-Opaque-Id` in the task `headers` is the ID for the task that was initiated by the REST request.
        The `X-Opaque-Id` in the children `headers` is the child task of the task that was initiated by the REST request.

        ## Required authorization

        * Cluster privileges: `monitor`
      operationId: tasks-list
      parameters:
      - in: query
        name: actions
        description: |-
          A comma-separated list or wildcard expression of actions used to limit the request.
          For example, you can use `cluser:*` to retrieve all cluster-related tasks.
        deprecated: false
        schema:
          oneOf:
          - type: string
          - type: array
            items:
              type: string
        style: form
      - in: query
        name: detailed
        description: |-
          If `true`, the response includes detailed information about the running tasks.
          This information is useful to distinguish tasks from each other but is more costly to run.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: group_by
        description: |+
          A key that is used to group tasks in the response.
          The task lists can be grouped either by nodes or by parent tasks.

          Supported values include:
            - `nodes`: Group tasks by node ID.
            - `parents`: Group tasks by parent task ID.
            - `none`: Do not group tasks.

        deprecated: false
        schema:
          "$ref": "#/components/schemas/tasks._types.GroupBy"
        style: form
      - in: query
        name: nodes
        description: A comma-separated list of node IDs or names that is used to limit
          the returned information.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.NodeIds"
        style: form
      - in: query
        name: parent_task_id
        description: |-
          A parent task identifier that is used to limit returned information.
          To return all tasks, omit this parameter or use a value of `-1`.
          If the parent task is not found, the API does not return a 404 response code.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: form
      - in: query
        name: timeout
        description: |-
          The period to wait for each node to respond.
          If a node does not respond before its timeout expires, the response does not include its information.
          However, timed out nodes are included in the `node_failures` property.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: wait_for_completion
        description: If `true`, the request blocks until the operation is complete.
        deprecated: false
        schema:
          type: boolean
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/tasks._types.TaskListResponseBase"
              examples:
                ListTasksResponseExample1:
                  description: 'A successful response from `GET _tasks?actions=*search&detailed`
                    The `detailed` parameter affects the `description` field, which
                    contains human readable text that identifies the particular request
                    that the task is performing. For example, it helps identify the
                    search request being performed by a search task.

                    '
                  value: |-
                    {
                      "nodes" : {
                        "oTUltX4IQMOUUVeiohTt8A" : {
                          "name" : "H5dfFeA",
                          "transport_address" : "127.0.0.1:9300",
                          "host" : "127.0.0.1",
                          "ip" : "127.0.0.1:9300",
                          "tasks" : {
                            "oTUltX4IQMOUUVeiohTt8A:464" : {
                              "node" : "oTUltX4IQMOUUVeiohTt8A",
                              "id" : 464,
                              "type" : "transport",
                              "action" : "indices:data/read/search",
                              "description" : "indices[test], types[test], search_type[QUERY_THEN_FETCH], source[{\"query\":...}]",
                              "start_time_in_millis" : 1483478610008,
                              "running_time_in_nanos" : 13991383,
                              "cancellable" : true,
                              "cancelled" : false
                            }
                          }
                        }
                      }
                    }
      x-state: Technical preview; Added in 2.3.0
      x-codeSamples:
      - lang: Console
        source: 'GET _tasks?actions=*search&detailed

          '
      - lang: Python
        source: |-
          resp = client.tasks.list(
              actions="*search",
              detailed=True,
          )
      - lang: JavaScript
        source: |-
          const response = await client.tasks.list({
            actions: "*search",
            detailed: "true",
          });
      - lang: Ruby
        source: |-
          response = client.tasks.list(
            actions: "*search",
            detailed: "true"
          )
      - lang: PHP
        source: |-
          $resp = $client->tasks()->list([
              "actions" => "*search",
              "detailed" => "true",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_tasks?actions=*search&detailed"'
      - lang: Java
        source: |
          client.tasks().list(l -> l
              .actions("*search")
              .detailed(true)
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/{index}/_terms_enum":
    post:
      tags:
      - search
      summary: 'Get terms in an index

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/{index}/_terms_enum</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/{index}/_terms_enum</span>\n
        \                     </div>\n                    \n\nDiscover terms that
        match a partial string in an index.\nThis API is designed for low-latency
        look-ups used in auto-complete scenarios.\n\n> info\n> The terms enum API
        may return terms from deleted documents. Deleted documents are initially only
        marked as deleted. It is not until their segments are merged that documents
        are actually deleted. Until that happens, the terms enum API will return terms
        from these documents."
      operationId: terms-enum
      parameters:
      - "$ref": "#/components/parameters/terms_enum-index"
      requestBody:
        "$ref": "#/components/requestBodies/terms_enum"
      responses:
        '200':
          "$ref": "#/components/responses/terms_enum-200"
      x-state: Generally available; Added in 7.14.0
      x-codeSamples:
      - lang: Console
        source: |-
          POST stackoverflow/_terms_enum
          {
              "field" : "tags",
              "string" : "kiba"
          }
      - lang: Python
        source: |-
          resp = client.terms_enum(
              index="stackoverflow",
              field="tags",
              string="kiba",
          )
      - lang: JavaScript
        source: |-
          const response = await client.termsEnum({
            index: "stackoverflow",
            field: "tags",
            string: "kiba",
          });
      - lang: Ruby
        source: |-
          response = client.terms_enum(
            index: "stackoverflow",
            body: {
              "field": "tags",
              "string": "kiba"
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->termsEnum([
              "index" => "stackoverflow",
              "body" => [
                  "field" => "tags",
                  "string" => "kiba",
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"field":"tags","string":"kiba"}'' "$ELASTICSEARCH_URL/stackoverflow/_terms_enum"'
      - lang: Java
        source: |
          client.termsEnum(t -> t
              .field("tags")
              .index("stackoverflow")
              .string("kiba")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/{index}/_termvectors/{id}":
    post:
      tags:
      - document
      summary: 'Get term vector information

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/{index}/_termvectors</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/{index}/_termvectors</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/{index}/_termvectors/{id}</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/{index}/_termvectors/{id}</span>\n
        \                     </div>\n                    \n\nGet information and
        statistics about terms in the fields of a particular document.\n\nYou can
        retrieve term vectors for documents stored in the index or for artificial
        documents passed in the body of the request.\nYou can specify the fields you
        are interested in through the `fields` parameter or by adding the fields to
        the request body.\nFor example:\n\n```\nGET /my-index-000001/_termvectors/1?fields=message\n```\n\nFields
        can be specified using wildcards, similar to the multi match query.\n\nTerm
        vectors are real-time by default, not near real-time.\nThis can be changed
        by setting `realtime` parameter to `false`.\n\nYou can request three types
        of values: _term information_, _term statistics_, and _field statistics_.\nBy
        default, all term information and field statistics are returned for all fields
        but term statistics are excluded.\n\n**Term information**\n\n* term frequency
        in the field (always returned)\n* term positions (`positions: true`)\n* start
        and end offsets (`offsets: true`)\n* term payloads (`payloads: true`), as
        base64 encoded bytes\n\nIf the requested information wasn't stored in the
        index, it will be computed on the fly if possible.\nAdditionally, term vectors
        could be computed for documents not even existing in the index, but instead
        provided by the user.\n\n> warn\n> Start and end offsets assume UTF-16 encoding
        is being used. If you want to use these offsets in order to get the original
        text that produced this token, you should make sure that the string you are
        taking a sub-string of is also encoded using UTF-16.\n\n**Behaviour**\n\nThe
        term and field statistics are not accurate.\nDeleted documents are not taken
        into account.\nThe information is only retrieved for the shard the requested
        document resides in.\nThe term and field statistics are therefore only useful
        as relative measures whereas the absolute numbers have no meaning in this
        context.\nBy default, when requesting term vectors of artificial documents,
        a shard to get the statistics from is randomly selected.\nUse `routing` only
        to hit a particular shard.\nRefer to the linked documentation for detailed
        examples of how to use this API.\n\n## Required authorization\n\n* Index privileges:
        `read`\n"
      externalDocs:
        url: https://www.elastic.co/docs/reference/elasticsearch/rest-apis/term-vectors-examples
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/docs-termvectors.html
      operationId: termvectors
      parameters:
      - "$ref": "#/components/parameters/termvectors-index"
      - "$ref": "#/components/parameters/termvectors-id"
      - "$ref": "#/components/parameters/termvectors-fields"
      - "$ref": "#/components/parameters/termvectors-field_statistics"
      - "$ref": "#/components/parameters/termvectors-offsets"
      - "$ref": "#/components/parameters/termvectors-payloads"
      - "$ref": "#/components/parameters/termvectors-positions"
      - "$ref": "#/components/parameters/termvectors-preference"
      - "$ref": "#/components/parameters/termvectors-realtime"
      - "$ref": "#/components/parameters/termvectors-routing"
      - "$ref": "#/components/parameters/termvectors-term_statistics"
      - "$ref": "#/components/parameters/termvectors-version"
      - "$ref": "#/components/parameters/termvectors-version_type"
      requestBody:
        "$ref": "#/components/requestBodies/termvectors"
      responses:
        '200':
          "$ref": "#/components/responses/termvectors-200"
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: |-
          GET /my-index-000001/_termvectors/1
          {
            "fields" : ["text"],
            "offsets" : true,
            "payloads" : true,
            "positions" : true,
            "term_statistics" : true,
            "field_statistics" : true
          }
      - lang: Python
        source: |-
          resp = client.termvectors(
              index="my-index-000001",
              id="1",
              fields=[
                  "text"
              ],
              offsets=True,
              payloads=True,
              positions=True,
              term_statistics=True,
              field_statistics=True,
          )
      - lang: JavaScript
        source: |-
          const response = await client.termvectors({
            index: "my-index-000001",
            id: 1,
            fields: ["text"],
            offsets: true,
            payloads: true,
            positions: true,
            term_statistics: true,
            field_statistics: true,
          });
      - lang: Ruby
        source: |-
          response = client.termvectors(
            index: "my-index-000001",
            id: "1",
            body: {
              "fields": [
                "text"
              ],
              "offsets": true,
              "payloads": true,
              "positions": true,
              "term_statistics": true,
              "field_statistics": true
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->termvectors([
              "index" => "my-index-000001",
              "id" => "1",
              "body" => [
                  "fields" => array(
                      "text",
                  ),
                  "offsets" => true,
                  "payloads" => true,
                  "positions" => true,
                  "term_statistics" => true,
                  "field_statistics" => true,
              ],
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"fields":["text"],"offsets":true,"payloads":true,"positions":true,"term_statistics":true,"field_statistics":true}''
          "$ELASTICSEARCH_URL/my-index-000001/_termvectors/1"'
      - lang: Java
        source: |
          client.termvectors(t -> t
              .fieldStatistics(true)
              .fields("text")
              .id("1")
              .index("my-index-000001")
              .offsets(true)
              .payloads(true)
              .positions(true)
              .termStatistics(true)
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_text_structure/find_field_structure":
    get:
      tags:
      - text_structure
      summary: Find the structure of a text field
      description: |
        Find the structure of a text field in an Elasticsearch index.

        This API provides a starting point for extracting further information from log messages already ingested into Elasticsearch.
        For example, if you have ingested data into a very simple index that has just `@timestamp` and message fields, you can use this API to see what common structure exists in the message field.

        The response from the API contains:

        * Sample messages.
        * Statistics that reveal the most common values for all fields detected within the text and basic numeric statistics for numeric fields.
        * Information about the structure of the text, which is useful when you write ingest configurations to index it or similarly formatted text.
        * Appropriate mappings for an Elasticsearch index, which you could use to ingest the text.

        All this information can be calculated by the structure finder with no guidance.
        However, you can optionally override some of the decisions about the text structure by specifying one or more query parameters.

        If the structure finder produces unexpected results, specify the `explain` query parameter and an explanation will appear in the response.
        It helps determine why the returned structure was chosen.

        ## Required authorization

        * Cluster privileges: `monitor_text_structure`
      operationId: text-structure-find-field-structure
      parameters:
      - in: query
        name: column_names
        description: |-
          If `format` is set to `delimited`, you can specify the column names in a comma-separated list.
          If this parameter is not specified, the structure finder uses the column names from the header row of the text.
          If the text does not have a header row, columns are named "column1", "column2", "column3", for example.
        deprecated: false
        schema:
          oneOf:
          - type: string
          - type: array
            items:
              type: string
        style: form
      - in: query
        name: delimiter
        description: |-
          If you have set `format` to `delimited`, you can specify the character used to delimit the values in each row.
          Only a single character is supported; the delimiter cannot have multiple characters.
          By default, the API considers the following possibilities: comma, tab, semi-colon, and pipe (`|`).
          In this default scenario, all rows must have the same number of fields for the delimited format to be detected.
          If you specify a delimiter, up to 10% of the rows can have a different number of columns than the first row.
        deprecated: false
        schema:
          type: string
        style: form
      - in: query
        name: documents_to_sample
        description: |-
          The number of documents to include in the structural analysis.
          The minimum value is 2.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.uint"
        style: form
      - in: query
        name: ecs_compatibility
        description: |-
          The mode of compatibility with ECS compliant Grok patterns.
          Use this parameter to specify whether to use ECS Grok patterns instead of legacy ones when the structure finder creates a Grok pattern.
          This setting primarily has an impact when a whole message Grok pattern such as `%{CATALINALOG}` matches the input.
          If the structure finder identifies a common structure but has no idea of the meaning then generic field names such as `path`, `ipaddress`, `field1`, and `field2` are used in the `grok_pattern` output.
          The intention in that situation is that a user who knows the meanings will rename the fields before using them.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/text_structure._types.EcsCompatibilityType"
        style: form
      - in: query
        name: explain
        description: If `true`, the response includes a field named `explanation`,
          which is an array of strings that indicate how the structure finder produced
          its result.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: field
        description: The field that should be analyzed.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Field"
        style: form
      - in: query
        name: format
        description: |-
          The high level structure of the text.
          By default, the API chooses the format.
          In this default scenario, all rows must have the same number of fields for a delimited format to be detected.
          If the format is set to delimited and the delimiter is not set, however, the API tolerates up to 5% of rows that have a different number of columns than the first row.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/text_structure._types.FormatType"
        style: form
      - in: query
        name: grok_pattern
        description: |-
          If the format is `semi_structured_text`, you can specify a Grok pattern that is used to extract fields from every message in the text.
          The name of the timestamp field in the Grok pattern must match what is specified in the `timestamp_field` parameter.
          If that parameter is not specified, the name of the timestamp field in the Grok pattern must match "timestamp".
          If `grok_pattern` is not specified, the structure finder creates a Grok pattern.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.GrokPattern"
        style: form
      - in: query
        name: index
        description: The name of the index that contains the analyzed field.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.IndexName"
        style: form
      - in: query
        name: quote
        description: |-
          If the format is `delimited`, you can specify the character used to quote the values in each row if they contain newlines or the delimiter character.
          Only a single character is supported.
          If this parameter is not specified, the default value is a double quote (`"`).
          If your delimited text format does not use quoting, a workaround is to set this argument to a character that does not appear anywhere in the sample.
        deprecated: false
        schema:
          type: string
        style: form
      - in: query
        name: should_trim_fields
        description: |-
          If the format is `delimited`, you can specify whether values between delimiters should have whitespace trimmed from them.
          If this parameter is not specified and the delimiter is pipe (`|`), the default value is true.
          Otherwise, the default value is `false`.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: should_parse_recursively
        description: |-
          If the format is `ndjson`, you can specify whether to parse nested JSON objects recursively.
          The nested objects are parsed to a maximum depth equal to the default value of the `index.mapping.depth.limit` setting.
          Anything beyond that depth is parsed as an `object` type field.
          For formats other than `ndjson`, this parameter is ignored.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: timeout
        description: |-
          The maximum amount of time that the structure analysis can take.
          If the analysis is still running when the timeout expires, it will be stopped.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: timestamp_field
        description: |-
          The name of the field that contains the primary timestamp of each record in the text.
          In particular, if the text was ingested into an index, this is the field that would be used to populate the `@timestamp` field.

          If the format is `semi_structured_text`, this field must match the name of the appropriate extraction in the `grok_pattern`.
          Therefore, for semi-structured text, it is best not to specify this parameter unless `grok_pattern` is also specified.

          For structured text, if you specify this parameter, the field must exist within the text.

          If this parameter is not specified, the structure finder makes a decision about which field (if any) is the primary timestamp field.
          For structured text, it is not compulsory to have a timestamp in the text.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Field"
        style: form
      - in: query
        name: timestamp_format
        description: |-
          The Java time format of the timestamp field in the text.
          Only a subset of Java time format letter groups are supported:

          * `a`
          * `d`
          * `dd`
          * `EEE`
          * `EEEE`
          * `H`
          * `HH`
          * `h`
          * `M`
          * `MM`
          * `MMM`
          * `MMMM`
          * `mm`
          * `ss`
          * `XX`
          * `XXX`
          * `yy`
          * `yyyy`
          * `zzz`

          Additionally `S` letter groups (fractional seconds) of length one to nine are supported providing they occur after `ss` and are separated from the `ss` by a period (`.`), comma (`,`), or colon (`:`).
          Spacing and punctuation is also permitted with the exception a question mark (`?`), newline, and carriage return, together with literal text enclosed in single quotes.
          For example, `MM/dd HH.mm.ss,SSSSSS 'in' yyyy` is a valid override format.

          One valuable use case for this parameter is when the format is semi-structured text, there are multiple timestamp formats in the text, and you know which format corresponds to the primary timestamp, but you do not want to specify the full `grok_pattern`.
          Another is when the timestamp format is one that the structure finder does not consider by default.

          If this parameter is not specified, the structure finder chooses the best format from a built-in set.

          If the special value `null` is specified, the structure finder will not look for a primary timestamp in the text.
          When the format is semi-structured text, this will result in the structure finder treating the text as single-line messages.
        deprecated: false
        schema:
          type: string
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  charset:
                    type: string
                  ecs_compatibility:
                    allOf:
                    - "$ref": "#/components/schemas/text_structure._types.EcsCompatibilityType"
                  field_stats:
                    type: object
                    additionalProperties:
                      "$ref": "#/components/schemas/text_structure._types.FieldStat"
                  format:
                    allOf:
                    - "$ref": "#/components/schemas/text_structure._types.FormatType"
                  grok_pattern:
                    allOf:
                    - "$ref": "#/components/schemas/_types.GrokPattern"
                  java_timestamp_formats:
                    type: array
                    items:
                      type: string
                  joda_timestamp_formats:
                    type: array
                    items:
                      type: string
                  ingest_pipeline:
                    allOf:
                    - "$ref": "#/components/schemas/ingest._types.PipelineConfig"
                  mappings:
                    allOf:
                    - "$ref": "#/components/schemas/_types.mapping.TypeMapping"
                  multiline_start_pattern:
                    type: string
                  need_client_timezone:
                    type: boolean
                  num_lines_analyzed:
                    type: number
                  num_messages_analyzed:
                    type: number
                  sample_start:
                    type: string
                  timestamp_field:
                    allOf:
                    - "$ref": "#/components/schemas/_types.Field"
                required:
                - charset
                - field_stats
                - format
                - ingest_pipeline
                - mappings
                - need_client_timezone
                - num_lines_analyzed
                - num_messages_analyzed
                - sample_start
              examples:
                FindFieldStructureResponseExample1:
                  description: A successful response from `GET _text_structure/find_field_structure?index=test-logs&field=message`.
                  value: |-
                    {
                      "num_lines_analyzed" : 22,
                      "num_messages_analyzed" : 22,
                      "sample_start" : "[2024-03-05T10:52:36,256][INFO ][o.a.l.u.VectorUtilPanamaProvider] [laptop] Java vector incubator API enabled; uses preferredBitSize=128\n[2024-03-05T10:52:41,038][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [repository-url]\n",
                      "charset" : "UTF-8",
                      "format" : "semi_structured_text",
                      "multiline_start_pattern" : "^\\[\\b\\d{4}-\\d{2}-\\d{2}[T ]\\d{2}:\\d{2}",
                      "grok_pattern" : "\\[%{TIMESTAMP_ISO8601:timestamp}\\]\\[%{LOGLEVEL:loglevel} \\]\\[.*",
                      "ecs_compatibility" : "disabled",
                      "timestamp_field" : "timestamp",
                      "joda_timestamp_formats" : [
                        "ISO8601"
                      ],
                      "java_timestamp_formats" : [
                        "ISO8601"
                      ],
                      "need_client_timezone" : true,
                      "mappings" : {
                        "properties" : {
                          "@timestamp" : {
                            "type" : "date"
                          },
                          "loglevel" : {
                            "type" : "keyword"
                          },
                          "message" : {
                            "type" : "text"
                          }
                        }
                      },
                      "ingest_pipeline" : {
                        "description" : "Ingest pipeline created by text structure finder",
                        "processors" : [
                          {
                            "grok" : {
                              "field" : "message",
                              "patterns" : [
                                "\\[%{TIMESTAMP_ISO8601:timestamp}\\]\\[%{LOGLEVEL:loglevel} \\]\\[.*"
                              ],
                              "ecs_compatibility" : "disabled"
                            }
                          },
                          {
                            "date" : {
                              "field" : "timestamp",
                              "timezone" : "{{ event.timezone }}",
                              "formats" : [
                                "ISO8601"
                              ]
                            }
                          },
                          {
                            "remove" : {
                              "field" : "timestamp"
                            }
                          }
                        ]
                      },
                      "field_stats" : {
                        "loglevel" : {
                          "count" : 22,
                          "cardinality" : 1,
                          "top_hits" : [
                            {
                              "value" : "INFO",
                              "count" : 22
                            }
                          ]
                        },
                        "message" : {
                          "count" : 22,
                          "cardinality" : 22,
                          "top_hits" : [
                            {
                              "value" : "[2024-03-05T10:52:36,256][INFO ][o.a.l.u.VectorUtilPanamaProvider] [laptop] Java vector incubator API enabled; uses preferredBitSize=128",
                              "count" : 1
                            },
                            {
                              "value" : "[2024-03-05T10:52:41,038][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [repository-url]",
                              "count" : 1
                            },
                            {
                              "value" : "[2024-03-05T10:52:41,042][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [rest-root]",
                              "count" : 1
                            },
                            {
                              "value" : "[2024-03-05T10:52:41,043][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [ingest-user-agent]",
                              "count" : 1
                            },
                            {
                              "value" : "[2024-03-05T10:52:41,043][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-core]",
                              "count" : 1
                            },
                            {
                              "value" : "[2024-03-05T10:52:41,043][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-redact]",
                              "count" : 1
                            },
                            {
                              "value" : "[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [lang-painless]]",
                              "count" : 1
                            },
                            {
                              "value" : "[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [repository-s3]",
                              "count" : 1
                            },
                            {
                              "value" : "[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-analytics]",
                              "count" : 1
                            },
                            {
                              "value" : "[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-autoscaling]",
                              "count" : 1
                            }
                          ]
                        },
                        "timestamp" : {
                          "count" : 22,
                          "cardinality" : 14,
                          "earliest" : "2024-03-05T10:52:36,256",
                          "latest" : "2024-03-05T10:52:49,199",
                          "top_hits" : [
                            {
                              "value" : "2024-03-05T10:52:41,044",
                              "count" : 6
                            },
                            {
                              "value" : "2024-03-05T10:52:41,043",
                              "count" : 3
                            },
                            {
                              "value" : "2024-03-05T10:52:41,059",
                              "count" : 2
                            },
                            {
                              "value" : "2024-03-05T10:52:36,256",
                              "count" : 1
                            },
                            {
                              "value" : "2024-03-05T10:52:41,038",
                              "count" : 1
                            },
                            {
                              "value" : "2024-03-05T10:52:41,042",
                              "count" : 1
                            },
                            {
                              "value" : "2024-03-05T10:52:43,291",
                              "count" : 1
                            },
                            {
                              "value" : "2024-03-05T10:52:46,098",
                              "count" : 1
                            },
                            {
                              "value" : "2024-03-05T10:52:47,227",
                              "count" : 1
                            },
                            {
                              "value" : "2024-03-05T10:52:47,259",
                              "count" : 1
                            }
                          ]
                        }
                      }
                    }
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'GET _text_structure/find_field_structure?index=test-logs&field=message

          '
      - lang: Python
        source: |-
          resp = client.text_structure.find_field_structure(
              index="test-logs",
              field="message",
          )
      - lang: JavaScript
        source: |-
          const response = await client.textStructure.findFieldStructure({
            index: "test-logs",
            field: "message",
          });
      - lang: Ruby
        source: |-
          response = client.text_structure.find_field_structure(
            index: "test-logs",
            field: "message"
          )
      - lang: PHP
        source: |-
          $resp = $client->textStructure()->findFieldStructure([
              "index" => "test-logs",
              "field" => "message",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_text_structure/find_field_structure?index=test-logs&field=message"'
      - lang: Java
        source: |
          client.textStructure().findFieldStructure(f -> f
              .field("message")
              .index("test-logs")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_text_structure/find_message_structure":
    post:
      tags:
      - text_structure
      summary: 'Find the structure of text messages

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_text_structure/find_message_structure</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_text_structure/find_message_structure</span>\n
        \                     </div>\n                    \n\nFind the structure of
        a list of text messages.\nThe messages must contain data that is suitable
        to be ingested into Elasticsearch.\n\nThis API provides a starting point for
        ingesting data into Elasticsearch in a format that is suitable for subsequent
        use with other Elastic Stack functionality.\nUse this API rather than the
        find text structure API if your input text has already been split up into
        separate messages by some other process.\n\nThe response from the API contains:\n\n*
        Sample messages.\n* Statistics that reveal the most common values for all
        fields detected within the text and basic numeric statistics for numeric fields.\n*
        Information about the structure of the text, which is useful when you write
        ingest configurations to index it or similarly formatted text.\nAppropriate
        mappings for an Elasticsearch index, which you could use to ingest the text.\n\nAll
        this information can be calculated by the structure finder with no guidance.\nHowever,
        you can optionally override some of the decisions about the text structure
        by specifying one or more query parameters.\n\nIf the structure finder produces
        unexpected results, specify the `explain` query parameter and an explanation
        will appear in the response.\nIt helps determine why the returned structure
        was chosen.\n\n## Required authorization\n\n* Cluster privileges: `monitor_text_structure`\n"
      operationId: text-structure-find-message-structure
      parameters:
      - "$ref": "#/components/parameters/text_structure.find_message_structure-column_names"
      - "$ref": "#/components/parameters/text_structure.find_message_structure-delimiter"
      - "$ref": "#/components/parameters/text_structure.find_message_structure-ecs_compatibility"
      - "$ref": "#/components/parameters/text_structure.find_message_structure-explain"
      - "$ref": "#/components/parameters/text_structure.find_message_structure-format"
      - "$ref": "#/components/parameters/text_structure.find_message_structure-grok_pattern"
      - "$ref": "#/components/parameters/text_structure.find_message_structure-quote"
      - "$ref": "#/components/parameters/text_structure.find_message_structure-should_trim_fields"
      - "$ref": "#/components/parameters/text_structure.find_message_structure-should_parse_recursively"
      - "$ref": "#/components/parameters/text_structure.find_message_structure-timeout"
      - "$ref": "#/components/parameters/text_structure.find_message_structure-timestamp_field"
      - "$ref": "#/components/parameters/text_structure.find_message_structure-timestamp_format"
      requestBody:
        "$ref": "#/components/requestBodies/text_structure.find_message_structure"
      responses:
        '200':
          "$ref": "#/components/responses/text_structure.find_message_structure-200"
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: |-
          POST _text_structure/find_message_structure
          {
            "messages": [
              "[2024-03-05T10:52:36,256][INFO ][o.a.l.u.VectorUtilPanamaProvider] [laptop] Java vector incubator API enabled; uses preferredBitSize=128",
              "[2024-03-05T10:52:41,038][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [repository-url]",
              "[2024-03-05T10:52:41,042][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [rest-root]",
              "[2024-03-05T10:52:41,043][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-core]",
              "[2024-03-05T10:52:41,043][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-redact]",
              "[2024-03-05T10:52:41,043][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [ingest-user-agent]",
              "[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-monitoring]",
              "[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [repository-s3]",
              "[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-analytics]",
              "[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-ent-search]",
              "[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-autoscaling]",
              "[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [lang-painless]]",
              "[2024-03-05T10:52:41,059][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [lang-expression]",
              "[2024-03-05T10:52:41,059][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-eql]",
              "[2024-03-05T10:52:43,291][INFO ][o.e.e.NodeEnvironment    ] [laptop] heap size [16gb], compressed ordinary object pointers [true]",
              "[2024-03-05T10:52:46,098][INFO ][o.e.x.s.Security         ] [laptop] Security is enabled",
              "[2024-03-05T10:52:47,227][INFO ][o.e.x.p.ProfilingPlugin  ] [laptop] Profiling is enabled",
              "[2024-03-05T10:52:47,259][INFO ][o.e.x.p.ProfilingPlugin  ] [laptop] profiling index templates will not be installed or reinstalled",
              "[2024-03-05T10:52:47,755][INFO ][o.e.i.r.RecoverySettings ] [laptop] using rate limit [40mb] with [default=40mb, read=0b, write=0b, max=0b]",
              "[2024-03-05T10:52:47,787][INFO ][o.e.d.DiscoveryModule    ] [laptop] using discovery type [multi-node] and seed hosts providers [settings]",
              "[2024-03-05T10:52:49,188][INFO ][o.e.n.Node               ] [laptop] initialized",
              "[2024-03-05T10:52:49,199][INFO ][o.e.n.Node               ] [laptop] starting ..."
            ]
          }
      - lang: Python
        source: |-
          resp = client.text_structure.find_message_structure(
              messages=[
                  "[2024-03-05T10:52:36,256][INFO ][o.a.l.u.VectorUtilPanamaProvider] [laptop] Java vector incubator API enabled; uses preferredBitSize=128",
                  "[2024-03-05T10:52:41,038][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [repository-url]",
                  "[2024-03-05T10:52:41,042][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [rest-root]",
                  "[2024-03-05T10:52:41,043][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-core]",
                  "[2024-03-05T10:52:41,043][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-redact]",
                  "[2024-03-05T10:52:41,043][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [ingest-user-agent]",
                  "[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-monitoring]",
                  "[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [repository-s3]",
                  "[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-analytics]",
                  "[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-ent-search]",
                  "[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-autoscaling]",
                  "[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [lang-painless]]",
                  "[2024-03-05T10:52:41,059][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [lang-expression]",
                  "[2024-03-05T10:52:41,059][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-eql]",
                  "[2024-03-05T10:52:43,291][INFO ][o.e.e.NodeEnvironment    ] [laptop] heap size [16gb], compressed ordinary object pointers [true]",
                  "[2024-03-05T10:52:46,098][INFO ][o.e.x.s.Security         ] [laptop] Security is enabled",
                  "[2024-03-05T10:52:47,227][INFO ][o.e.x.p.ProfilingPlugin  ] [laptop] Profiling is enabled",
                  "[2024-03-05T10:52:47,259][INFO ][o.e.x.p.ProfilingPlugin  ] [laptop] profiling index templates will not be installed or reinstalled",
                  "[2024-03-05T10:52:47,755][INFO ][o.e.i.r.RecoverySettings ] [laptop] using rate limit [40mb] with [default=40mb, read=0b, write=0b, max=0b]",
                  "[2024-03-05T10:52:47,787][INFO ][o.e.d.DiscoveryModule    ] [laptop] using discovery type [multi-node] and seed hosts providers [settings]",
                  "[2024-03-05T10:52:49,188][INFO ][o.e.n.Node               ] [laptop] initialized",
                  "[2024-03-05T10:52:49,199][INFO ][o.e.n.Node               ] [laptop] starting ..."
              ],
          )
      - lang: JavaScript
        source: |-
          const response = await client.textStructure.findMessageStructure({
            messages: [
              "[2024-03-05T10:52:36,256][INFO ][o.a.l.u.VectorUtilPanamaProvider] [laptop] Java vector incubator API enabled; uses preferredBitSize=128",
              "[2024-03-05T10:52:41,038][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [repository-url]",
              "[2024-03-05T10:52:41,042][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [rest-root]",
              "[2024-03-05T10:52:41,043][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-core]",
              "[2024-03-05T10:52:41,043][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-redact]",
              "[2024-03-05T10:52:41,043][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [ingest-user-agent]",
              "[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-monitoring]",
              "[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [repository-s3]",
              "[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-analytics]",
              "[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-ent-search]",
              "[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-autoscaling]",
              "[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [lang-painless]]",
              "[2024-03-05T10:52:41,059][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [lang-expression]",
              "[2024-03-05T10:52:41,059][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-eql]",
              "[2024-03-05T10:52:43,291][INFO ][o.e.e.NodeEnvironment    ] [laptop] heap size [16gb], compressed ordinary object pointers [true]",
              "[2024-03-05T10:52:46,098][INFO ][o.e.x.s.Security         ] [laptop] Security is enabled",
              "[2024-03-05T10:52:47,227][INFO ][o.e.x.p.ProfilingPlugin  ] [laptop] Profiling is enabled",
              "[2024-03-05T10:52:47,259][INFO ][o.e.x.p.ProfilingPlugin  ] [laptop] profiling index templates will not be installed or reinstalled",
              "[2024-03-05T10:52:47,755][INFO ][o.e.i.r.RecoverySettings ] [laptop] using rate limit [40mb] with [default=40mb, read=0b, write=0b, max=0b]",
              "[2024-03-05T10:52:47,787][INFO ][o.e.d.DiscoveryModule    ] [laptop] using discovery type [multi-node] and seed hosts providers [settings]",
              "[2024-03-05T10:52:49,188][INFO ][o.e.n.Node               ] [laptop] initialized",
              "[2024-03-05T10:52:49,199][INFO ][o.e.n.Node               ] [laptop] starting ...",
            ],
          });
      - lang: Ruby
        source: |-
          response = client.text_structure.find_message_structure(
            body: {
              "messages": [
                "[2024-03-05T10:52:36,256][INFO ][o.a.l.u.VectorUtilPanamaProvider] [laptop] Java vector incubator API enabled; uses preferredBitSize=128",
                "[2024-03-05T10:52:41,038][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [repository-url]",
                "[2024-03-05T10:52:41,042][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [rest-root]",
                "[2024-03-05T10:52:41,043][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-core]",
                "[2024-03-05T10:52:41,043][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-redact]",
                "[2024-03-05T10:52:41,043][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [ingest-user-agent]",
                "[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-monitoring]",
                "[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [repository-s3]",
                "[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-analytics]",
                "[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-ent-search]",
                "[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-autoscaling]",
                "[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [lang-painless]]",
                "[2024-03-05T10:52:41,059][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [lang-expression]",
                "[2024-03-05T10:52:41,059][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-eql]",
                "[2024-03-05T10:52:43,291][INFO ][o.e.e.NodeEnvironment    ] [laptop] heap size [16gb], compressed ordinary object pointers [true]",
                "[2024-03-05T10:52:46,098][INFO ][o.e.x.s.Security         ] [laptop] Security is enabled",
                "[2024-03-05T10:52:47,227][INFO ][o.e.x.p.ProfilingPlugin  ] [laptop] Profiling is enabled",
                "[2024-03-05T10:52:47,259][INFO ][o.e.x.p.ProfilingPlugin  ] [laptop] profiling index templates will not be installed or reinstalled",
                "[2024-03-05T10:52:47,755][INFO ][o.e.i.r.RecoverySettings ] [laptop] using rate limit [40mb] with [default=40mb, read=0b, write=0b, max=0b]",
                "[2024-03-05T10:52:47,787][INFO ][o.e.d.DiscoveryModule    ] [laptop] using discovery type [multi-node] and seed hosts providers [settings]",
                "[2024-03-05T10:52:49,188][INFO ][o.e.n.Node               ] [laptop] initialized",
                "[2024-03-05T10:52:49,199][INFO ][o.e.n.Node               ] [laptop] starting ..."
              ]
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->textStructure()->findMessageStructure([
              "body" => [
                  "messages" => array(
                      "[2024-03-05T10:52:36,256][INFO ][o.a.l.u.VectorUtilPanamaProvider] [laptop] Java vector incubator API enabled; uses preferredBitSize=128",
                      "[2024-03-05T10:52:41,038][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [repository-url]",
                      "[2024-03-05T10:52:41,042][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [rest-root]",
                      "[2024-03-05T10:52:41,043][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-core]",
                      "[2024-03-05T10:52:41,043][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-redact]",
                      "[2024-03-05T10:52:41,043][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [ingest-user-agent]",
                      "[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-monitoring]",
                      "[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [repository-s3]",
                      "[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-analytics]",
                      "[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-ent-search]",
                      "[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-autoscaling]",
                      "[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [lang-painless]]",
                      "[2024-03-05T10:52:41,059][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [lang-expression]",
                      "[2024-03-05T10:52:41,059][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-eql]",
                      "[2024-03-05T10:52:43,291][INFO ][o.e.e.NodeEnvironment    ] [laptop] heap size [16gb], compressed ordinary object pointers [true]",
                      "[2024-03-05T10:52:46,098][INFO ][o.e.x.s.Security         ] [laptop] Security is enabled",
                      "[2024-03-05T10:52:47,227][INFO ][o.e.x.p.ProfilingPlugin  ] [laptop] Profiling is enabled",
                      "[2024-03-05T10:52:47,259][INFO ][o.e.x.p.ProfilingPlugin  ] [laptop] profiling index templates will not be installed or reinstalled",
                      "[2024-03-05T10:52:47,755][INFO ][o.e.i.r.RecoverySettings ] [laptop] using rate limit [40mb] with [default=40mb, read=0b, write=0b, max=0b]",
                      "[2024-03-05T10:52:47,787][INFO ][o.e.d.DiscoveryModule    ] [laptop] using discovery type [multi-node] and seed hosts providers [settings]",
                      "[2024-03-05T10:52:49,188][INFO ][o.e.n.Node               ] [laptop] initialized",
                      "[2024-03-05T10:52:49,199][INFO ][o.e.n.Node               ] [laptop] starting ...",
                  ),
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"messages":["[2024-03-05T10:52:36,256][INFO ][o.a.l.u.VectorUtilPanamaProvider]
          [laptop] Java vector incubator API enabled; uses preferredBitSize=128","[2024-03-05T10:52:41,038][INFO
          ][o.e.p.PluginsService     ] [laptop] loaded module [repository-url]","[2024-03-05T10:52:41,042][INFO
          ][o.e.p.PluginsService     ] [laptop] loaded module [rest-root]","[2024-03-05T10:52:41,043][INFO
          ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-core]","[2024-03-05T10:52:41,043][INFO
          ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-redact]","[2024-03-05T10:52:41,043][INFO
          ][o.e.p.PluginsService     ] [laptop] loaded module [ingest-user-agent]","[2024-03-05T10:52:41,044][INFO
          ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-monitoring]","[2024-03-05T10:52:41,044][INFO
          ][o.e.p.PluginsService     ] [laptop] loaded module [repository-s3]","[2024-03-05T10:52:41,044][INFO
          ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-analytics]","[2024-03-05T10:52:41,044][INFO
          ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-ent-search]","[2024-03-05T10:52:41,044][INFO
          ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-autoscaling]","[2024-03-05T10:52:41,044][INFO
          ][o.e.p.PluginsService     ] [laptop] loaded module [lang-painless]]","[2024-03-05T10:52:41,059][INFO
          ][o.e.p.PluginsService     ] [laptop] loaded module [lang-expression]","[2024-03-05T10:52:41,059][INFO
          ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-eql]","[2024-03-05T10:52:43,291][INFO
          ][o.e.e.NodeEnvironment    ] [laptop] heap size [16gb], compressed ordinary
          object pointers [true]","[2024-03-05T10:52:46,098][INFO ][o.e.x.s.Security         ]
          [laptop] Security is enabled","[2024-03-05T10:52:47,227][INFO ][o.e.x.p.ProfilingPlugin  ]
          [laptop] Profiling is enabled","[2024-03-05T10:52:47,259][INFO ][o.e.x.p.ProfilingPlugin  ]
          [laptop] profiling index templates will not be installed or reinstalled","[2024-03-05T10:52:47,755][INFO
          ][o.e.i.r.RecoverySettings ] [laptop] using rate limit [40mb] with [default=40mb,
          read=0b, write=0b, max=0b]","[2024-03-05T10:52:47,787][INFO ][o.e.d.DiscoveryModule    ]
          [laptop] using discovery type [multi-node] and seed hosts providers [settings]","[2024-03-05T10:52:49,188][INFO
          ][o.e.n.Node               ] [laptop] initialized","[2024-03-05T10:52:49,199][INFO
          ][o.e.n.Node               ] [laptop] starting ..."]}'' "$ELASTICSEARCH_URL/_text_structure/find_message_structure"'
      - lang: Java
        source: |
          client.textStructure().findMessageStructure(f -> f
              .messages(List.of("[2024-03-05T10:52:36,256][INFO ][o.a.l.u.VectorUtilPanamaProvider] [laptop] Java vector incubator API enabled; uses preferredBitSize=128","[2024-03-05T10:52:41,038][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [repository-url]","[2024-03-05T10:52:41,042][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [rest-root]","[2024-03-05T10:52:41,043][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-core]","[2024-03-05T10:52:41,043][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-redact]","[2024-03-05T10:52:41,043][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [ingest-user-agent]","[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-monitoring]","[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [repository-s3]","[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-analytics]","[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-ent-search]","[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-autoscaling]","[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [lang-painless]]","[2024-03-05T10:52:41,059][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [lang-expression]","[2024-03-05T10:52:41,059][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-eql]","[2024-03-05T10:52:43,291][INFO ][o.e.e.NodeEnvironment    ] [laptop] heap size [16gb], compressed ordinary object pointers [true]","[2024-03-05T10:52:46,098][INFO ][o.e.x.s.Security         ] [laptop] Security is enabled","[2024-03-05T10:52:47,227][INFO ][o.e.x.p.ProfilingPlugin  ] [laptop] Profiling is enabled","[2024-03-05T10:52:47,259][INFO ][o.e.x.p.ProfilingPlugin  ] [laptop] profiling index templates will not be installed or reinstalled","[2024-03-05T10:52:47,755][INFO ][o.e.i.r.RecoverySettings ] [laptop] using rate limit [40mb] with [default=40mb, read=0b, write=0b, max=0b]","[2024-03-05T10:52:47,787][INFO ][o.e.d.DiscoveryModule    ] [laptop] using discovery type [multi-node] and seed hosts providers [settings]","[2024-03-05T10:52:49,188][INFO ][o.e.n.Node               ] [laptop] initialized","[2024-03-05T10:52:49,199][INFO ][o.e.n.Node               ] [laptop] starting ..."))
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_text_structure/find_structure":
    post:
      tags:
      - text_structure
      summary: Find the structure of a text file
      description: |
        The text file must contain data that is suitable to be ingested into Elasticsearch.

        This API provides a starting point for ingesting data into Elasticsearch in a format that is suitable for subsequent use with other Elastic Stack functionality.
        Unlike other Elasticsearch endpoints, the data that is posted to this endpoint does not need to be UTF-8 encoded and in JSON format.
        It must, however, be text; binary text formats are not currently supported.
        The size is limited to the Elasticsearch HTTP receive buffer size, which defaults to 100 Mb.

        The response from the API contains:

        * A couple of messages from the beginning of the text.
        * Statistics that reveal the most common values for all fields detected within the text and basic numeric statistics for numeric fields.
        * Information about the structure of the text, which is useful when you write ingest configurations to index it or similarly formatted text.
        * Appropriate mappings for an Elasticsearch index, which you could use to ingest the text.

        All this information can be calculated by the structure finder with no guidance.
        However, you can optionally override some of the decisions about the text structure by specifying one or more query parameters.

        ## Required authorization

        * Cluster privileges: `monitor_text_structure`
      externalDocs:
        url: https://www.elastic.co/docs/reference/elasticsearch/rest-apis/find-text-structure-examples
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/find-structure.html
      operationId: text-structure-find-structure
      parameters:
      - in: query
        name: charset
        description: |-
          The text's character set.
          It must be a character set that is supported by the JVM that Elasticsearch uses.
          For example, `UTF-8`, `UTF-16LE`, `windows-1252`, or `EUC-JP`.
          If this parameter is not specified, the structure finder chooses an appropriate character set.
        deprecated: false
        schema:
          type: string
        style: form
      - in: query
        name: column_names
        description: |-
          If you have set format to `delimited`, you can specify the column names in a comma-separated list.
          If this parameter is not specified, the structure finder uses the column names from the header row of the text.
          If the text does not have a header role, columns are named "column1", "column2", "column3", for example.
        deprecated: false
        schema:
          oneOf:
          - type: string
          - type: array
            items:
              type: string
        style: form
      - in: query
        name: delimiter
        description: |-
          If you have set `format` to `delimited`, you can specify the character used to delimit the values in each row.
          Only a single character is supported; the delimiter cannot have multiple characters.
          By default, the API considers the following possibilities: comma, tab, semi-colon, and pipe (`|`).
          In this default scenario, all rows must have the same number of fields for the delimited format to be detected.
          If you specify a delimiter, up to 10% of the rows can have a different number of columns than the first row.
        deprecated: false
        schema:
          type: string
        style: form
      - in: query
        name: ecs_compatibility
        description: |-
          The mode of compatibility with ECS compliant Grok patterns.
          Use this parameter to specify whether to use ECS Grok patterns instead of legacy ones when the structure finder creates a Grok pattern.
          Valid values are `disabled` and `v1`.
          This setting primarily has an impact when a whole message Grok pattern such as `%{CATALINALOG}` matches the input.
          If the structure finder identifies a common structure but has no idea of meaning then generic field names such as `path`, `ipaddress`, `field1`, and `field2` are used in the `grok_pattern` output, with the intention that a user who knows the meanings rename these fields before using it.
        deprecated: false
        schema:
          type: string
        style: form
      - in: query
        name: explain
        description: |-
          If this parameter is set to `true`, the response includes a field named explanation, which is an array of strings that indicate how the structure finder produced its result.
          If the structure finder produces unexpected results for some text, use this query parameter to help you determine why the returned structure was chosen.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: format
        description: |-
          The high level structure of the text.
          Valid values are `ndjson`, `xml`, `delimited`, and `semi_structured_text`.
          By default, the API chooses the format.
          In this default scenario, all rows must have the same number of fields for a delimited format to be detected.
          If the format is set to `delimited` and the delimiter is not set, however, the API tolerates up to 5% of rows that have a different number of columns than the first row.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/text_structure.find_structure.FindStructureFormat"
        style: form
      - in: query
        name: grok_pattern
        description: |-
          If you have set `format` to `semi_structured_text`, you can specify a Grok pattern that is used to extract fields from every message in the text.
          The name of the timestamp field in the Grok pattern must match what is specified in the `timestamp_field` parameter.
          If that parameter is not specified, the name of the timestamp field in the Grok pattern must match "timestamp".
          If `grok_pattern` is not specified, the structure finder creates a Grok pattern.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.GrokPattern"
        style: form
      - in: query
        name: has_header_row
        description: |-
          If you have set `format` to `delimited`, you can use this parameter to indicate whether the column names are in the first row of the text.
          If this parameter is not specified, the structure finder guesses based on the similarity of the first row of the text to other rows.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: line_merge_size_limit
        description: |-
          The maximum number of characters in a message when lines are merged to form messages while analyzing semi-structured text.
          If you have extremely long messages you may need to increase this, but be aware that this may lead to very long processing times if the way to group lines into messages is misdetected.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.uint"
        style: form
      - in: query
        name: lines_to_sample
        description: |-
          The number of lines to include in the structural analysis, starting from the beginning of the text.
          The minimum is 2.
          If the value of this parameter is greater than the number of lines in the text, the analysis proceeds (as long as there are at least two lines in the text) for all of the lines.

          NOTE: The number of lines and the variation of the lines affects the speed of the analysis.
          For example, if you upload text where the first 1000 lines are all variations on the same message, the analysis will find more commonality than would be seen with a bigger sample.
          If possible, however, it is more efficient to upload sample text with more variety in the first 1000 lines than to request analysis of 100000 lines to achieve some variety.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.uint"
        style: form
      - in: query
        name: quote
        description: |-
          If you have set `format` to `delimited`, you can specify the character used to quote the values in each row if they contain newlines or the delimiter character.
          Only a single character is supported.
          If this parameter is not specified, the default value is a double quote (`"`).
          If your delimited text format does not use quoting, a workaround is to set this argument to a character that does not appear anywhere in the sample.
        deprecated: false
        schema:
          type: string
        style: form
      - in: query
        name: should_trim_fields
        description: |-
          If you have set `format` to `delimited`, you can specify whether values between delimiters should have whitespace trimmed from them.
          If this parameter is not specified and the delimiter is pipe (`|`), the default value is `true`.
          Otherwise, the default value is `false`.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: should_parse_recursively
        description: |-
          If the format is `ndjson`, you can specify whether to parse nested JSON objects recursively.
          The nested objects are parsed to a maximum depth equal to the default value of the `index.mapping.depth.limit` setting.
          Anything beyond that depth is parsed as an `object` type field.
          For formats other than `ndjson`, this parameter is ignored.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: timeout
        description: |-
          The maximum amount of time that the structure analysis can take.
          If the analysis is still running when the timeout expires then it will be stopped.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: timestamp_field
        description: |-
          The name of the field that contains the primary timestamp of each record in the text.
          In particular, if the text were ingested into an index, this is the field that would be used to populate the `@timestamp` field.

          If the `format` is `semi_structured_text`, this field must match the name of the appropriate extraction in the `grok_pattern`.
          Therefore, for semi-structured text, it is best not to specify this parameter unless `grok_pattern` is also specified.

          For structured text, if you specify this parameter, the field must exist within the text.

          If this parameter is not specified, the structure finder makes a decision about which field (if any) is the primary timestamp field.
          For structured text, it is not compulsory to have a timestamp in the text.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Field"
        style: form
      - in: query
        name: timestamp_format
        description: |-
          The Java time format of the timestamp field in the text.

          Only a subset of Java time format letter groups are supported:

          * `a`
          * `d`
          * `dd`
          * `EEE`
          * `EEEE`
          * `H`
          * `HH`
          * `h`
          * `M`
          * `MM`
          * `MMM`
          * `MMMM`
          * `mm`
          * `ss`
          * `XX`
          * `XXX`
          * `yy`
          * `yyyy`
          * `zzz`

          Additionally `S` letter groups (fractional seconds) of length one to nine are supported providing they occur after `ss` and separated from the `ss` by a `.`, `,` or `:`.
          Spacing and punctuation is also permitted with the exception of `?`, newline and carriage return, together with literal text enclosed in single quotes.
          For example, `MM/dd HH.mm.ss,SSSSSS 'in' yyyy` is a valid override format.

          One valuable use case for this parameter is when the format is semi-structured text, there are multiple timestamp formats in the text, and you know which format corresponds to the primary timestamp, but you do not want to specify the full `grok_pattern`.
          Another is when the timestamp format is one that the structure finder does not consider by default.

          If this parameter is not specified, the structure finder chooses the best format from a built-in set.

          If the special value `null` is specified the structure finder will not look for a primary timestamp in the text.
          When the format is semi-structured text this will result in the structure finder treating the text as single-line messages.
        deprecated: false
        schema:
          type: string
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                type: object
            examples:
              FindStructureRequestExample1:
                description: Run `POST _text_structure/find_structure` to analyze
                  newline-delimited JSON text.
                value: |-
                  {"name": "Leviathan Wakes", "author": "James S.A. Corey", "release_date": "2011-06-02", "page_count": 561}
                  {"name": "Hyperion", "author": "Dan Simmons", "release_date": "1989-05-26", "page_count": 482}
                  {"name": "Dune", "author": "Frank Herbert", "release_date": "1965-06-01", "page_count": 604}
                  {"name": "Dune Messiah", "author": "Frank Herbert", "release_date": "1969-10-15", "page_count": 331}
                  {"name": "Children of Dune", "author": "Frank Herbert", "release_date": "1976-04-21", "page_count": 408}
                  {"name": "God Emperor of Dune", "author": "Frank Herbert", "release_date": "1981-05-28", "page_count": 454}
                  {"name": "Consider Phlebas", "author": "Iain M. Banks", "release_date": "1987-04-23", "page_count": 471}
                  {"name": "Pandora's Star", "author": "Peter F. Hamilton", "release_date": "2004-03-02", "page_count": 768}
                  {"name": "Revelation Space", "author": "Alastair Reynolds", "release_date": "2000-03-15", "page_count": 585}
                  {"name": "A Fire Upon the Deep", "author": "Vernor Vinge", "release_date": "1992-06-01", "page_count": 613}
                  {"name": "Ender's Game", "author": "Orson Scott Card", "release_date": "1985-06-01", "page_count": 324}
                  {"name": "1984", "author": "George Orwell", "release_date": "1985-06-01", "page_count": 328}
                  {"name": "Fahrenheit 451", "author": "Ray Bradbury", "release_date": "1953-10-15", "page_count": 227}
                  {"name": "Brave New World", "author": "Aldous Huxley", "release_date": "1932-06-01", "page_count": 268}
                  {"name": "Foundation", "author": "Isaac Asimov", "release_date": "1951-06-01", "page_count": 224}
                  {"name": "The Giver", "author": "Lois Lowry", "release_date": "1993-04-26", "page_count": 208}
                  {"name": "Slaughterhouse-Five", "author": "Kurt Vonnegut", "release_date": "1969-06-01", "page_count": 275}
                  {"name": "The Hitchhiker's Guide to the Galaxy", "author": "Douglas Adams", "release_date": "1979-10-12", "page_count": 180}
                  {"name": "Snow Crash", "author": "Neal Stephenson", "release_date": "1992-06-01", "page_count": 470}
                  {"name": "Neuromancer", "author": "William Gibson", "release_date": "1984-07-01", "page_count": 271}
                  {"name": "The Handmaid's Tale", "author": "Margaret Atwood", "release_date": "1985-06-01", "page_count": 311}
                  {"name": "Starship Troopers", "author": "Robert A. Heinlein", "release_date": "1959-12-01", "page_count": 335}
                  {"name": "The Left Hand of Darkness", "author": "Ursula K. Le Guin", "release_date": "1969-06-01", "page_count": 304}
                  {"name": "The Moon is a Harsh Mistress", "author": "Robert A. Heinlein", "release_date": "1966-04-01", "page_count": 288}
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  charset:
                    description: The character encoding used to parse the text.
                    type: string
                  has_header_row:
                    type: boolean
                  has_byte_order_marker:
                    description: For UTF character encodings, it indicates whether
                      the text begins with a byte order marker.
                    type: boolean
                  format:
                    description: Valid values include `ndjson`, `xml`, `delimited`,
                      and `semi_structured_text`.
                    type: string
                  field_stats:
                    description: |-
                      The most common values of each field, plus basic numeric statistics for the numeric `page_count` field.
                      This information may provide clues that the data needs to be cleaned or transformed prior to use by other Elastic Stack functionality.
                    type: object
                    additionalProperties:
                      "$ref": "#/components/schemas/text_structure._types.FieldStat"
                  sample_start:
                    description: |-
                      The first two messages in the text verbatim.
                      This may help diagnose parse errors or accidental uploads of the wrong text.
                    type: string
                  num_messages_analyzed:
                    description: |-
                      The number of distinct messages the lines contained.
                      For NDJSON, this value is the same as `num_lines_analyzed`.
                      For other text formats, messages can span several lines.
                    type: number
                  mappings:
                    description: Some suitable mappings for an index into which the
                      data could be ingested.
                    allOf:
                    - "$ref": "#/components/schemas/_types.mapping.TypeMapping"
                  quote:
                    type: string
                  delimiter:
                    type: string
                  need_client_timezone:
                    description: |-
                      If a timestamp format is detected that does not include a timezone, `need_client_timezone` is `true`.
                      The server that parses the text must therefore be told the correct timezone by the client.
                    type: boolean
                  num_lines_analyzed:
                    description: The number of lines of the text that were analyzed.
                    type: number
                  column_names:
                    description: If `format` is `delimited`, the `column_names` field
                      lists the column names in the order they appear in the sample.
                    type: array
                    items:
                      type: string
                  explanation:
                    type: array
                    items:
                      type: string
                  grok_pattern:
                    allOf:
                    - "$ref": "#/components/schemas/_types.GrokPattern"
                  multiline_start_pattern:
                    type: string
                  exclude_lines_pattern:
                    type: string
                  java_timestamp_formats:
                    description: |-
                      The Java time formats recognized in the time fields.
                      Elasticsearch mappings and ingest pipelines use this format.
                    type: array
                    items:
                      type: string
                  joda_timestamp_formats:
                    description: Information that is used to tell Logstash how to
                      parse timestamps.
                    type: array
                    items:
                      type: string
                  timestamp_field:
                    description: The field considered most likely to be the primary
                      timestamp of each document.
                    allOf:
                    - "$ref": "#/components/schemas/_types.Field"
                  should_trim_fields:
                    type: boolean
                  ingest_pipeline:
                    allOf:
                    - "$ref": "#/components/schemas/ingest._types.PipelineConfig"
                required:
                - charset
                - has_byte_order_marker
                - format
                - field_stats
                - sample_start
                - num_messages_analyzed
                - mappings
                - need_client_timezone
                - num_lines_analyzed
                - ingest_pipeline
              examples:
                FindStructureResponseExample1:
                  description: A successful response from `POST _text_structure/find_structure`.
                  value: |-
                    {
                      "num_lines_analyzed" : 24,
                      "num_messages_analyzed" : 24,
                      "sample_start" : "{\"name\": \"Leviathan Wakes\", \"author\": \"James S.A. Corey\", \"release_date\": \"2011-06-02\", \"page_count\": 561}\n{\"name\": \"Hyperion\", \"author\": \"Dan Simmons\", \"release_date\": \"1989-05-26\", \"page_count\": 482}\n",
                      "charset" : "UTF-8",
                      "has_byte_order_marker" : false,
                      "format" : "ndjson",
                      "ecs_compatibility" : "disabled",
                      "timestamp_field" : "release_date",
                      "joda_timestamp_formats" : [
                        "ISO8601"
                      ],
                      "java_timestamp_formats" : [
                        "ISO8601"
                      ],
                      "need_client_timezone" : true,
                      "mappings" : {
                        "properties" : {
                          "@timestamp" : {
                            "type" : "date"
                          },
                          "author" : {
                            "type" : "keyword"
                          },
                          "name" : {
                            "type" : "keyword"
                          },
                          "page_count" : {
                            "type" : "long"
                          },
                          "release_date" : {
                            "type" : "date",
                            "format" : "iso8601"
                          }
                        }
                      },
                      "ingest_pipeline" : {
                        "description" : "Ingest pipeline created by text structure finder",
                        "processors" : [
                          {
                            "date" : {
                              "field" : "release_date",
                              "timezone" : "{{ event.timezone }}",
                              "formats" : [
                                "ISO8601"
                              ]
                            }
                          }
                        ]
                      },
                      "field_stats" : {
                        "author" : {
                          "count" : 24,
                          "cardinality" : 20,
                          "top_hits" : [
                            {
                              "value" : "Frank Herbert",
                              "count" : 4
                            },
                            {
                              "value" : "Robert A. Heinlein",
                              "count" : 2
                            },
                            {
                              "value" : "Alastair Reynolds",
                              "count" : 1
                            },
                            {
                              "value" : "Aldous Huxley",
                              "count" : 1
                            },
                            {
                              "value" : "Dan Simmons",
                              "count" : 1
                            },
                            {
                              "value" : "Douglas Adams",
                              "count" : 1
                            },
                            {
                              "value" : "George Orwell",
                              "count" : 1
                            },
                            {
                              "value" : "Iain M. Banks",
                              "count" : 1
                            },
                            {
                              "value" : "Isaac Asimov",
                              "count" : 1
                            },
                            {
                              "value" : "James S.A. Corey",
                              "count" : 1
                            }
                          ]
                        },
                        "name" : {
                          "count" : 24,
                          "cardinality" : 24,
                          "top_hits" : [
                            {
                              "value" : "1984",
                              "count" : 1
                            },
                            {
                              "value" : "A Fire Upon the Deep",
                              "count" : 1
                            },
                            {
                              "value" : "Brave New World",
                              "count" : 1
                            },
                            {
                              "value" : "Children of Dune",
                              "count" : 1
                            },
                            {
                              "value" : "Consider Phlebas",
                              "count" : 1
                            },
                            {
                              "value" : "Dune",
                              "count" : 1
                            },
                            {
                              "value" : "Dune Messiah",
                              "count" : 1
                            },
                            {
                              "value" : "Ender's Game",
                              "count" : 1
                            },
                            {
                              "value" : "Fahrenheit 451",
                              "count" : 1
                            },
                            {
                              "value" : "Foundation",
                              "count" : 1
                            }
                          ]
                        },
                        "page_count" : {
                          "count" : 24,
                          "cardinality" : 24,
                          "min_value" : 180,
                          "max_value" : 768,
                          "mean_value" : 387.0833333333333,
                          "median_value" : 329.5,
                          "top_hits" : [
                            {
                              "value" : 180,
                              "count" : 1
                            },
                            {
                              "value" : 208,
                              "count" : 1
                            },
                            {
                              "value" : 224,
                              "count" : 1
                            },
                            {
                              "value" : 227,
                              "count" : 1
                            },
                            {
                              "value" : 268,
                              "count" : 1
                            },
                            {
                              "value" : 271,
                              "count" : 1
                            },
                            {
                              "value" : 275,
                              "count" : 1
                            },
                            {
                              "value" : 288,
                              "count" : 1
                            },
                            {
                              "value" : 304,
                              "count" : 1
                            },
                            {
                              "value" : 311,
                              "count" : 1
                            }
                          ]
                        },
                        "release_date" : {
                          "count" : 24,
                          "cardinality" : 20,
                          "earliest" : "1932-06-01",
                          "latest" : "2011-06-02",
                          "top_hits" : [
                            {
                              "value" : "1985-06-01",
                              "count" : 3
                            },
                            {
                              "value" : "1969-06-01",
                              "count" : 2
                            },
                            {
                              "value" : "1992-06-01",
                              "count" : 2
                            },
                            {
                              "value" : "1932-06-01",
                              "count" : 1
                            },
                            {
                              "value" : "1951-06-01",
                              "count" : 1
                            },
                            {
                              "value" : "1953-10-15",
                              "count" : 1
                            },
                            {
                              "value" : "1959-12-01",
                              "count" : 1
                            },
                            {
                              "value" : "1965-06-01",
                              "count" : 1
                            },
                            {
                              "value" : "1966-04-01",
                              "count" : 1
                            },
                            {
                              "value" : "1969-10-15",
                              "count" : 1
                            }
                          ]
                        }
                      }
                    }
      x-state: Generally available; Added in 7.13.0
      x-codeSamples:
      - lang: Console
        source: |-
          POST _text_structure/find_structure
          {"name": "Leviathan Wakes", "author": "James S.A. Corey", "release_date": "2011-06-02", "page_count": 561}
          {"name": "Hyperion", "author": "Dan Simmons", "release_date": "1989-05-26", "page_count": 482}
          {"name": "Dune", "author": "Frank Herbert", "release_date": "1965-06-01", "page_count": 604}
          {"name": "Dune Messiah", "author": "Frank Herbert", "release_date": "1969-10-15", "page_count": 331}
          {"name": "Children of Dune", "author": "Frank Herbert", "release_date": "1976-04-21", "page_count": 408}
          {"name": "God Emperor of Dune", "author": "Frank Herbert", "release_date": "1981-05-28", "page_count": 454}
          {"name": "Consider Phlebas", "author": "Iain M. Banks", "release_date": "1987-04-23", "page_count": 471}
          {"name": "Pandora's Star", "author": "Peter F. Hamilton", "release_date": "2004-03-02", "page_count": 768}
          {"name": "Revelation Space", "author": "Alastair Reynolds", "release_date": "2000-03-15", "page_count": 585}
          {"name": "A Fire Upon the Deep", "author": "Vernor Vinge", "release_date": "1992-06-01", "page_count": 613}
          {"name": "Ender's Game", "author": "Orson Scott Card", "release_date": "1985-06-01", "page_count": 324}
          {"name": "1984", "author": "George Orwell", "release_date": "1985-06-01", "page_count": 328}
          {"name": "Fahrenheit 451", "author": "Ray Bradbury", "release_date": "1953-10-15", "page_count": 227}
          {"name": "Brave New World", "author": "Aldous Huxley", "release_date": "1932-06-01", "page_count": 268}
          {"name": "Foundation", "author": "Isaac Asimov", "release_date": "1951-06-01", "page_count": 224}
          {"name": "The Giver", "author": "Lois Lowry", "release_date": "1993-04-26", "page_count": 208}
          {"name": "Slaughterhouse-Five", "author": "Kurt Vonnegut", "release_date": "1969-06-01", "page_count": 275}
          {"name": "The Hitchhiker's Guide to the Galaxy", "author": "Douglas Adams", "release_date": "1979-10-12", "page_count": 180}
          {"name": "Snow Crash", "author": "Neal Stephenson", "release_date": "1992-06-01", "page_count": 470}
          {"name": "Neuromancer", "author": "William Gibson", "release_date": "1984-07-01", "page_count": 271}
          {"name": "The Handmaid's Tale", "author": "Margaret Atwood", "release_date": "1985-06-01", "page_count": 311}
          {"name": "Starship Troopers", "author": "Robert A. Heinlein", "release_date": "1959-12-01", "page_count": 335}
          {"name": "The Left Hand of Darkness", "author": "Ursula K. Le Guin", "release_date": "1969-06-01", "page_count": 304}
          {"name": "The Moon is a Harsh Mistress", "author": "Robert A. Heinlein", "release_date": "1966-04-01", "page_count": 288}
      - lang: Python
        source: |-
          resp = client.text_structure.find_structure(
              text_files=[
                  {
                      "name": "Leviathan Wakes",
                      "author": "James S.A. Corey",
                      "release_date": "2011-06-02",
                      "page_count": 561
                  },
                  {
                      "name": "Hyperion",
                      "author": "Dan Simmons",
                      "release_date": "1989-05-26",
                      "page_count": 482
                  },
                  {
                      "name": "Dune",
                      "author": "Frank Herbert",
                      "release_date": "1965-06-01",
                      "page_count": 604
                  },
                  {
                      "name": "Dune Messiah",
                      "author": "Frank Herbert",
                      "release_date": "1969-10-15",
                      "page_count": 331
                  },
                  {
                      "name": "Children of Dune",
                      "author": "Frank Herbert",
                      "release_date": "1976-04-21",
                      "page_count": 408
                  },
                  {
                      "name": "God Emperor of Dune",
                      "author": "Frank Herbert",
                      "release_date": "1981-05-28",
                      "page_count": 454
                  },
                  {
                      "name": "Consider Phlebas",
                      "author": "Iain M. Banks",
                      "release_date": "1987-04-23",
                      "page_count": 471
                  },
                  {
                      "name": "Pandora's Star",
                      "author": "Peter F. Hamilton",
                      "release_date": "2004-03-02",
                      "page_count": 768
                  },
                  {
                      "name": "Revelation Space",
                      "author": "Alastair Reynolds",
                      "release_date": "2000-03-15",
                      "page_count": 585
                  },
                  {
                      "name": "A Fire Upon the Deep",
                      "author": "Vernor Vinge",
                      "release_date": "1992-06-01",
                      "page_count": 613
                  },
                  {
                      "name": "Ender's Game",
                      "author": "Orson Scott Card",
                      "release_date": "1985-06-01",
                      "page_count": 324
                  },
                  {
                      "name": "1984",
                      "author": "George Orwell",
                      "release_date": "1985-06-01",
                      "page_count": 328
                  },
                  {
                      "name": "Fahrenheit 451",
                      "author": "Ray Bradbury",
                      "release_date": "1953-10-15",
                      "page_count": 227
                  },
                  {
                      "name": "Brave New World",
                      "author": "Aldous Huxley",
                      "release_date": "1932-06-01",
                      "page_count": 268
                  },
                  {
                      "name": "Foundation",
                      "author": "Isaac Asimov",
                      "release_date": "1951-06-01",
                      "page_count": 224
                  },
                  {
                      "name": "The Giver",
                      "author": "Lois Lowry",
                      "release_date": "1993-04-26",
                      "page_count": 208
                  },
                  {
                      "name": "Slaughterhouse-Five",
                      "author": "Kurt Vonnegut",
                      "release_date": "1969-06-01",
                      "page_count": 275
                  },
                  {
                      "name": "The Hitchhiker's Guide to the Galaxy",
                      "author": "Douglas Adams",
                      "release_date": "1979-10-12",
                      "page_count": 180
                  },
                  {
                      "name": "Snow Crash",
                      "author": "Neal Stephenson",
                      "release_date": "1992-06-01",
                      "page_count": 470
                  },
                  {
                      "name": "Neuromancer",
                      "author": "William Gibson",
                      "release_date": "1984-07-01",
                      "page_count": 271
                  },
                  {
                      "name": "The Handmaid's Tale",
                      "author": "Margaret Atwood",
                      "release_date": "1985-06-01",
                      "page_count": 311
                  },
                  {
                      "name": "Starship Troopers",
                      "author": "Robert A. Heinlein",
                      "release_date": "1959-12-01",
                      "page_count": 335
                  },
                  {
                      "name": "The Left Hand of Darkness",
                      "author": "Ursula K. Le Guin",
                      "release_date": "1969-06-01",
                      "page_count": 304
                  },
                  {
                      "name": "The Moon is a Harsh Mistress",
                      "author": "Robert A. Heinlein",
                      "release_date": "1966-04-01",
                      "page_count": 288
                  }
              ],
          )
      - lang: JavaScript
        source: |-
          const response = await client.textStructure.findStructure({
            text_files: [
              {
                name: "Leviathan Wakes",
                author: "James S.A. Corey",
                release_date: "2011-06-02",
                page_count: 561,
              },
              {
                name: "Hyperion",
                author: "Dan Simmons",
                release_date: "1989-05-26",
                page_count: 482,
              },
              {
                name: "Dune",
                author: "Frank Herbert",
                release_date: "1965-06-01",
                page_count: 604,
              },
              {
                name: "Dune Messiah",
                author: "Frank Herbert",
                release_date: "1969-10-15",
                page_count: 331,
              },
              {
                name: "Children of Dune",
                author: "Frank Herbert",
                release_date: "1976-04-21",
                page_count: 408,
              },
              {
                name: "God Emperor of Dune",
                author: "Frank Herbert",
                release_date: "1981-05-28",
                page_count: 454,
              },
              {
                name: "Consider Phlebas",
                author: "Iain M. Banks",
                release_date: "1987-04-23",
                page_count: 471,
              },
              {
                name: "Pandora's Star",
                author: "Peter F. Hamilton",
                release_date: "2004-03-02",
                page_count: 768,
              },
              {
                name: "Revelation Space",
                author: "Alastair Reynolds",
                release_date: "2000-03-15",
                page_count: 585,
              },
              {
                name: "A Fire Upon the Deep",
                author: "Vernor Vinge",
                release_date: "1992-06-01",
                page_count: 613,
              },
              {
                name: "Ender's Game",
                author: "Orson Scott Card",
                release_date: "1985-06-01",
                page_count: 324,
              },
              {
                name: "1984",
                author: "George Orwell",
                release_date: "1985-06-01",
                page_count: 328,
              },
              {
                name: "Fahrenheit 451",
                author: "Ray Bradbury",
                release_date: "1953-10-15",
                page_count: 227,
              },
              {
                name: "Brave New World",
                author: "Aldous Huxley",
                release_date: "1932-06-01",
                page_count: 268,
              },
              {
                name: "Foundation",
                author: "Isaac Asimov",
                release_date: "1951-06-01",
                page_count: 224,
              },
              {
                name: "The Giver",
                author: "Lois Lowry",
                release_date: "1993-04-26",
                page_count: 208,
              },
              {
                name: "Slaughterhouse-Five",
                author: "Kurt Vonnegut",
                release_date: "1969-06-01",
                page_count: 275,
              },
              {
                name: "The Hitchhiker's Guide to the Galaxy",
                author: "Douglas Adams",
                release_date: "1979-10-12",
                page_count: 180,
              },
              {
                name: "Snow Crash",
                author: "Neal Stephenson",
                release_date: "1992-06-01",
                page_count: 470,
              },
              {
                name: "Neuromancer",
                author: "William Gibson",
                release_date: "1984-07-01",
                page_count: 271,
              },
              {
                name: "The Handmaid's Tale",
                author: "Margaret Atwood",
                release_date: "1985-06-01",
                page_count: 311,
              },
              {
                name: "Starship Troopers",
                author: "Robert A. Heinlein",
                release_date: "1959-12-01",
                page_count: 335,
              },
              {
                name: "The Left Hand of Darkness",
                author: "Ursula K. Le Guin",
                release_date: "1969-06-01",
                page_count: 304,
              },
              {
                name: "The Moon is a Harsh Mistress",
                author: "Robert A. Heinlein",
                release_date: "1966-04-01",
                page_count: 288,
              },
            ],
          });
      - lang: Ruby
        source: |-
          response = client.text_structure.find_structure(
            body: [
              {
                "name": "Leviathan Wakes",
                "author": "James S.A. Corey",
                "release_date": "2011-06-02",
                "page_count": 561
              },
              {
                "name": "Hyperion",
                "author": "Dan Simmons",
                "release_date": "1989-05-26",
                "page_count": 482
              },
              {
                "name": "Dune",
                "author": "Frank Herbert",
                "release_date": "1965-06-01",
                "page_count": 604
              },
              {
                "name": "Dune Messiah",
                "author": "Frank Herbert",
                "release_date": "1969-10-15",
                "page_count": 331
              },
              {
                "name": "Children of Dune",
                "author": "Frank Herbert",
                "release_date": "1976-04-21",
                "page_count": 408
              },
              {
                "name": "God Emperor of Dune",
                "author": "Frank Herbert",
                "release_date": "1981-05-28",
                "page_count": 454
              },
              {
                "name": "Consider Phlebas",
                "author": "Iain M. Banks",
                "release_date": "1987-04-23",
                "page_count": 471
              },
              {
                "name": "Pandora's Star",
                "author": "Peter F. Hamilton",
                "release_date": "2004-03-02",
                "page_count": 768
              },
              {
                "name": "Revelation Space",
                "author": "Alastair Reynolds",
                "release_date": "2000-03-15",
                "page_count": 585
              },
              {
                "name": "A Fire Upon the Deep",
                "author": "Vernor Vinge",
                "release_date": "1992-06-01",
                "page_count": 613
              },
              {
                "name": "Ender's Game",
                "author": "Orson Scott Card",
                "release_date": "1985-06-01",
                "page_count": 324
              },
              {
                "name": "1984",
                "author": "George Orwell",
                "release_date": "1985-06-01",
                "page_count": 328
              },
              {
                "name": "Fahrenheit 451",
                "author": "Ray Bradbury",
                "release_date": "1953-10-15",
                "page_count": 227
              },
              {
                "name": "Brave New World",
                "author": "Aldous Huxley",
                "release_date": "1932-06-01",
                "page_count": 268
              },
              {
                "name": "Foundation",
                "author": "Isaac Asimov",
                "release_date": "1951-06-01",
                "page_count": 224
              },
              {
                "name": "The Giver",
                "author": "Lois Lowry",
                "release_date": "1993-04-26",
                "page_count": 208
              },
              {
                "name": "Slaughterhouse-Five",
                "author": "Kurt Vonnegut",
                "release_date": "1969-06-01",
                "page_count": 275
              },
              {
                "name": "The Hitchhiker's Guide to the Galaxy",
                "author": "Douglas Adams",
                "release_date": "1979-10-12",
                "page_count": 180
              },
              {
                "name": "Snow Crash",
                "author": "Neal Stephenson",
                "release_date": "1992-06-01",
                "page_count": 470
              },
              {
                "name": "Neuromancer",
                "author": "William Gibson",
                "release_date": "1984-07-01",
                "page_count": 271
              },
              {
                "name": "The Handmaid's Tale",
                "author": "Margaret Atwood",
                "release_date": "1985-06-01",
                "page_count": 311
              },
              {
                "name": "Starship Troopers",
                "author": "Robert A. Heinlein",
                "release_date": "1959-12-01",
                "page_count": 335
              },
              {
                "name": "The Left Hand of Darkness",
                "author": "Ursula K. Le Guin",
                "release_date": "1969-06-01",
                "page_count": 304
              },
              {
                "name": "The Moon is a Harsh Mistress",
                "author": "Robert A. Heinlein",
                "release_date": "1966-04-01",
                "page_count": 288
              }
            ]
          )
      - lang: PHP
        source: |-
          $resp = $client->textStructure()->findStructure([
              "body" => array(
                  [
                      "name" => "Leviathan Wakes",
                      "author" => "James S.A. Corey",
                      "release_date" => "2011-06-02",
                      "page_count" => 561,
                  ],
                  [
                      "name" => "Hyperion",
                      "author" => "Dan Simmons",
                      "release_date" => "1989-05-26",
                      "page_count" => 482,
                  ],
                  [
                      "name" => "Dune",
                      "author" => "Frank Herbert",
                      "release_date" => "1965-06-01",
                      "page_count" => 604,
                  ],
                  [
                      "name" => "Dune Messiah",
                      "author" => "Frank Herbert",
                      "release_date" => "1969-10-15",
                      "page_count" => 331,
                  ],
                  [
                      "name" => "Children of Dune",
                      "author" => "Frank Herbert",
                      "release_date" => "1976-04-21",
                      "page_count" => 408,
                  ],
                  [
                      "name" => "God Emperor of Dune",
                      "author" => "Frank Herbert",
                      "release_date" => "1981-05-28",
                      "page_count" => 454,
                  ],
                  [
                      "name" => "Consider Phlebas",
                      "author" => "Iain M. Banks",
                      "release_date" => "1987-04-23",
                      "page_count" => 471,
                  ],
                  [
                      "name" => "Pandora's Star",
                      "author" => "Peter F. Hamilton",
                      "release_date" => "2004-03-02",
                      "page_count" => 768,
                  ],
                  [
                      "name" => "Revelation Space",
                      "author" => "Alastair Reynolds",
                      "release_date" => "2000-03-15",
                      "page_count" => 585,
                  ],
                  [
                      "name" => "A Fire Upon the Deep",
                      "author" => "Vernor Vinge",
                      "release_date" => "1992-06-01",
                      "page_count" => 613,
                  ],
                  [
                      "name" => "Ender's Game",
                      "author" => "Orson Scott Card",
                      "release_date" => "1985-06-01",
                      "page_count" => 324,
                  ],
                  [
                      "name" => "1984",
                      "author" => "George Orwell",
                      "release_date" => "1985-06-01",
                      "page_count" => 328,
                  ],
                  [
                      "name" => "Fahrenheit 451",
                      "author" => "Ray Bradbury",
                      "release_date" => "1953-10-15",
                      "page_count" => 227,
                  ],
                  [
                      "name" => "Brave New World",
                      "author" => "Aldous Huxley",
                      "release_date" => "1932-06-01",
                      "page_count" => 268,
                  ],
                  [
                      "name" => "Foundation",
                      "author" => "Isaac Asimov",
                      "release_date" => "1951-06-01",
                      "page_count" => 224,
                  ],
                  [
                      "name" => "The Giver",
                      "author" => "Lois Lowry",
                      "release_date" => "1993-04-26",
                      "page_count" => 208,
                  ],
                  [
                      "name" => "Slaughterhouse-Five",
                      "author" => "Kurt Vonnegut",
                      "release_date" => "1969-06-01",
                      "page_count" => 275,
                  ],
                  [
                      "name" => "The Hitchhiker's Guide to the Galaxy",
                      "author" => "Douglas Adams",
                      "release_date" => "1979-10-12",
                      "page_count" => 180,
                  ],
                  [
                      "name" => "Snow Crash",
                      "author" => "Neal Stephenson",
                      "release_date" => "1992-06-01",
                      "page_count" => 470,
                  ],
                  [
                      "name" => "Neuromancer",
                      "author" => "William Gibson",
                      "release_date" => "1984-07-01",
                      "page_count" => 271,
                  ],
                  [
                      "name" => "The Handmaid's Tale",
                      "author" => "Margaret Atwood",
                      "release_date" => "1985-06-01",
                      "page_count" => 311,
                  ],
                  [
                      "name" => "Starship Troopers",
                      "author" => "Robert A. Heinlein",
                      "release_date" => "1959-12-01",
                      "page_count" => 335,
                  ],
                  [
                      "name" => "The Left Hand of Darkness",
                      "author" => "Ursula K. Le Guin",
                      "release_date" => "1969-06-01",
                      "page_count" => 304,
                  ],
                  [
                      "name" => "The Moon is a Harsh Mistress",
                      "author" => "Robert A. Heinlein",
                      "release_date" => "1966-04-01",
                      "page_count" => 288,
                  ],
              ),
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/x-ndjson" -d $''{"name":"Leviathan Wakes","author":"James S.A.
          Corey","release_date":"2011-06-02","page_count":561}\n{"name":"Hyperion","author":"Dan
          Simmons","release_date":"1989-05-26","page_count":482}\n{"name":"Dune","author":"Frank
          Herbert","release_date":"1965-06-01","page_count":604}\n{"name":"Dune Messiah","author":"Frank
          Herbert","release_date":"1969-10-15","page_count":331}\n{"name":"Children
          of Dune","author":"Frank Herbert","release_date":"1976-04-21","page_count":408}\n{"name":"God
          Emperor of Dune","author":"Frank Herbert","release_date":"1981-05-28","page_count":454}\n{"name":"Consider
          Phlebas","author":"Iain M. Banks","release_date":"1987-04-23","page_count":471}\n{"name":"Pandora''"''"$''s
          Star","author":"Peter F. Hamilton","release_date":"2004-03-02","page_count":768}\n{"name":"Revelation
          Space","author":"Alastair Reynolds","release_date":"2000-03-15","page_count":585}\n{"name":"A
          Fire Upon the Deep","author":"Vernor Vinge","release_date":"1992-06-01","page_count":613}\n{"name":"Ender''"''"$''s
          Game","author":"Orson Scott Card","release_date":"1985-06-01","page_count":324}\n{"name":"1984","author":"George
          Orwell","release_date":"1985-06-01","page_count":328}\n{"name":"Fahrenheit
          451","author":"Ray Bradbury","release_date":"1953-10-15","page_count":227}\n{"name":"Brave
          New World","author":"Aldous Huxley","release_date":"1932-06-01","page_count":268}\n{"name":"Foundation","author":"Isaac
          Asimov","release_date":"1951-06-01","page_count":224}\n{"name":"The Giver","author":"Lois
          Lowry","release_date":"1993-04-26","page_count":208}\n{"name":"Slaughterhouse-Five","author":"Kurt
          Vonnegut","release_date":"1969-06-01","page_count":275}\n{"name":"The Hitchhiker''"''"$''s
          Guide to the Galaxy","author":"Douglas Adams","release_date":"1979-10-12","page_count":180}\n{"name":"Snow
          Crash","author":"Neal Stephenson","release_date":"1992-06-01","page_count":470}\n{"name":"Neuromancer","author":"William
          Gibson","release_date":"1984-07-01","page_count":271}\n{"name":"The Handmaid''"''"$''s
          Tale","author":"Margaret Atwood","release_date":"1985-06-01","page_count":311}\n{"name":"Starship
          Troopers","author":"Robert A. Heinlein","release_date":"1959-12-01","page_count":335}\n{"name":"The
          Left Hand of Darkness","author":"Ursula K. Le Guin","release_date":"1969-06-01","page_count":304}\n{"name":"The
          Moon is a Harsh Mistress","author":"Robert A. Heinlein","release_date":"1966-04-01","page_count":288}\n''
          "$ELASTICSEARCH_URL/_text_structure/find_structure"'
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_text_structure/test_grok_pattern":
    post:
      tags:
      - text_structure
      summary: 'Test a Grok pattern

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_text_structure/test_grok_pattern</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_text_structure/test_grok_pattern</span>\n
        \                     </div>\n                    \n\nTest a Grok pattern
        on one or more lines of text.\nThe API indicates whether the lines match the
        pattern together with the offsets and lengths of the matched substrings."
      externalDocs:
        url: https://www.elastic.co/docs/explore-analyze/scripting/grok
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/test-grok-pattern.html
      operationId: text-structure-test-grok-pattern
      parameters:
      - "$ref": "#/components/parameters/text_structure.test_grok_pattern-ecs_compatibility"
      requestBody:
        "$ref": "#/components/requestBodies/text_structure.test_grok_pattern"
      responses:
        '200':
          "$ref": "#/components/responses/text_structure.test_grok_pattern-200"
      x-state: Generally available; Added in 8.13.0
      x-codeSamples:
      - lang: Console
        source: |-
          GET _text_structure/test_grok_pattern
          {
            "grok_pattern": "Hello %{WORD:first_name} %{WORD:last_name}",
            "text": [
              "Hello John Doe",
              "this does not match"
            ]
          }
      - lang: Python
        source: |-
          resp = client.text_structure.test_grok_pattern(
              grok_pattern="Hello %{WORD:first_name} %{WORD:last_name}",
              text=[
                  "Hello John Doe",
                  "this does not match"
              ],
          )
      - lang: JavaScript
        source: |-
          const response = await client.textStructure.testGrokPattern({
            grok_pattern: "Hello %{WORD:first_name} %{WORD:last_name}",
            text: ["Hello John Doe", "this does not match"],
          });
      - lang: Ruby
        source: |-
          response = client.text_structure.test_grok_pattern(
            body: {
              "grok_pattern": "Hello %{WORD:first_name} %{WORD:last_name}",
              "text": [
                "Hello John Doe",
                "this does not match"
              ]
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->textStructure()->testGrokPattern([
              "body" => [
                  "grok_pattern" => "Hello %{WORD:first_name} %{WORD:last_name}",
                  "text" => array(
                      "Hello John Doe",
                      "this does not match",
                  ),
              ],
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"grok_pattern":"Hello %{WORD:first_name} %{WORD:last_name}","text":["Hello
          John Doe","this does not match"]}'' "$ELASTICSEARCH_URL/_text_structure/test_grok_pattern"'
      - lang: Java
        source: |
          client.textStructure().testGrokPattern(t -> t
              .grokPattern("Hello %{WORD:first_name} %{WORD:last_name}")
              .text(List.of("Hello John Doe","this does not match"))
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_transform/{transform_id}":
    get:
      tags:
      - transform
      summary: 'Get transforms

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_transform</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_transform/{transform_id}</span>\n
        \                     </div>\n                    \n\nGet configuration information
        for transforms.\n\n## Required authorization\n\n* Cluster privileges: `monitor_transform`\n"
      operationId: transform-get-transform
      parameters:
      - "$ref": "#/components/parameters/transform.get_transform-transform_id"
      - "$ref": "#/components/parameters/transform.get_transform-allow_no_match"
      - "$ref": "#/components/parameters/transform.get_transform-from"
      - "$ref": "#/components/parameters/transform.get_transform-size"
      - "$ref": "#/components/parameters/transform.get_transform-exclude_generated"
      responses:
        '200':
          "$ref": "#/components/responses/transform.get_transform-200"
      x-state: Generally available; Added in 7.5.0
      x-codeSamples:
      - lang: Console
        source: 'GET _transform?size=10

          '
      - lang: Python
        source: |-
          resp = client.transform.get_transform(
              size="10",
          )
      - lang: JavaScript
        source: |-
          const response = await client.transform.getTransform({
            size: 10,
          });
      - lang: Ruby
        source: |-
          response = client.transform.get_transform(
            size: "10"
          )
      - lang: PHP
        source: |-
          $resp = $client->transform()->getTransform([
              "size" => "10",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_transform?size=10"'
      - lang: Java
        source: |
          client.transform().getTransform(g -> g
              .size(10)
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    put:
      tags:
      - transform
      summary: Create a transform
      description: |
        Creates a transform.

        A transform copies data from source indices, transforms it, and persists it into an entity-centric destination index. You can also think of the destination index as a two-dimensional tabular data structure (known as
        a data frame). The ID for each document in the data frame is generated from a hash of the entity, so there is a
        unique row per entity.

        You must choose either the latest or pivot method for your transform; you cannot use both in a single transform. If
        you choose to use the pivot method for your transform, the entities are defined by the set of `group_by` fields in
        the pivot object. If you choose to use the latest method, the entities are defined by the `unique_key` field values
        in the latest object.

        You must have `create_index`, `index`, and `read` privileges on the destination index and `read` and
        `view_index_metadata` privileges on the source indices. When Elasticsearch security features are enabled, the
        transform remembers which roles the user that created it had at the time of creation and uses those same roles. If
        those roles do not have the required privileges on the source and destination indices, the transform fails when it
        attempts unauthorized operations.

        NOTE: You must use Kibana or this API to create a transform. Do not add a transform directly into any
        `.transform-internal*` indices using the Elasticsearch index API. If Elasticsearch security features are enabled, do
        not give users any privileges on `.transform-internal*` indices. If you used transforms prior to 7.5, also do not
        give users any privileges on `.data-frame-internal*` indices.

        ## Required authorization

        * Index privileges: `create_index`,`read`,`index`,`view_index_metadata`
        * Cluster privileges: `manage_transform`
      operationId: transform-put-transform
      parameters:
      - in: path
        name: transform_id
        description: |-
          Identifier for the transform. This identifier can contain lowercase alphanumeric characters (a-z and 0-9),
          hyphens, and underscores. It has a 64 character limit and must start and end with alphanumeric characters.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: defer_validation
        description: |-
          When the transform is created, a series of validations occur to ensure its success. For example, there is a
          check for the existence of the source indices and a check that the destination index is not part of the source
          index pattern. You can use this parameter to skip the checks, for example when the source index does not exist
          until after the transform is created. The validations are always run when you start the transform, however, with
          the exception of privilege checks.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: timeout
        description: Period to wait for a response. If no response is received before
          the timeout expires, the request fails and returns an error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                dest:
                  description: The destination for the transform.
                  allOf:
                  - "$ref": "#/components/schemas/transform._types.Destination"
                description:
                  description: Free text description of the transform.
                  type: string
                frequency:
                  description: |-
                    The interval between checks for changes in the source indices when the transform is running continuously. Also
                    determines the retry interval in the event of transient failures while the transform is searching or indexing.
                    The minimum value is `1s` and the maximum is `1h`.
                  default: 1m
                  allOf:
                  - "$ref": "#/components/schemas/_types.Duration"
                latest:
                  description: The latest method transforms the data by finding the
                    latest document for each unique key.
                  allOf:
                  - "$ref": "#/components/schemas/transform._types.Latest"
                _meta:
                  description: Defines optional transform metadata.
                  allOf:
                  - "$ref": "#/components/schemas/_types.Metadata"
                pivot:
                  description: |-
                    The pivot method transforms the data by aggregating and grouping it. These objects define the group by fields
                    and the aggregation to reduce the data.
                  allOf:
                  - "$ref": "#/components/schemas/transform._types.Pivot"
                retention_policy:
                  description: |-
                    Defines a retention policy for the transform. Data that meets the defined criteria is deleted from the
                    destination index.
                  allOf:
                  - "$ref": "#/components/schemas/transform._types.RetentionPolicyContainer"
                settings:
                  description: Defines optional transform settings.
                  allOf:
                  - "$ref": "#/components/schemas/transform._types.Settings"
                source:
                  description: The source of the data for the transform.
                  allOf:
                  - "$ref": "#/components/schemas/transform._types.Source"
                sync:
                  description: Defines the properties transforms require to run continuously.
                  allOf:
                  - "$ref": "#/components/schemas/transform._types.SyncContainer"
              required:
              - dest
              - source
            examples:
              PutTransformRequestExample1:
                summary: A pivot transform
                description: Run `PUT _transform/ecommerce_transform1` to create a
                  transform that uses the pivot method.
                value: |-
                  {
                    "source": {
                      "index": "kibana_sample_data_ecommerce",
                      "query": {
                        "term": {
                          "geoip.continent_name": {
                            "value": "Asia"
                          }
                        }
                      }
                    },
                    "pivot": {
                      "group_by": {
                        "customer_id": {
                          "terms": {
                            "field": "customer_id",
                            "missing_bucket": true
                          }
                        }
                      },
                      "aggregations": {
                        "max_price": {
                          "max": {
                            "field": "taxful_total_price"
                          }
                        }
                      }
                    },
                    "description": "Maximum priced ecommerce data by customer_id in Asia",
                    "dest": {
                      "index": "kibana_sample_data_ecommerce_transform1",
                      "pipeline": "add_timestamp_pipeline"
                    },
                    "frequency": "5m",
                    "sync": {
                      "time": {
                        "field": "order_date",
                        "delay": "60s"
                      }
                    },
                    "retention_policy": {
                      "time": {
                        "field": "order_date",
                        "max_age": "30d"
                      }
                    }
                  }
              PutTransformRequestExample2:
                summary: A latest transform
                description: Run `PUT _transform/ecommerce_transform2` to create a
                  transform that uses the latest method.
                value: |-
                  {
                    "source": {
                      "index": "kibana_sample_data_ecommerce"
                    },
                    "latest": {
                      "unique_key": [
                        "customer_id"
                      ],
                      "sort": "order_date"
                    },
                    "description": "Latest order for each customer",
                    "dest": {
                      "index": "kibana_sample_data_ecommerce_transform2"
                    },
                    "frequency": "5m",
                    "sync": {
                      "time": {
                        "field": "order_date",
                        "delay": "60s"
                      }
                    }
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
              examples:
                PutTransformResponseExample1:
                  description: A successful response when creating a transform.
                  value: |-
                    {
                      "acknowledged": true
                    }
      x-state: Generally available; Added in 7.2.0
      x-codeSamples:
      - lang: Console
        source: |-
          PUT _transform/ecommerce_transform1
          {
            "source": {
              "index": "kibana_sample_data_ecommerce",
              "query": {
                "term": {
                  "geoip.continent_name": {
                    "value": "Asia"
                  }
                }
              }
            },
            "pivot": {
              "group_by": {
                "customer_id": {
                  "terms": {
                    "field": "customer_id",
                    "missing_bucket": true
                  }
                }
              },
              "aggregations": {
                "max_price": {
                  "max": {
                    "field": "taxful_total_price"
                  }
                }
              }
            },
            "description": "Maximum priced ecommerce data by customer_id in Asia",
            "dest": {
              "index": "kibana_sample_data_ecommerce_transform1",
              "pipeline": "add_timestamp_pipeline"
            },
            "frequency": "5m",
            "sync": {
              "time": {
                "field": "order_date",
                "delay": "60s"
              }
            },
            "retention_policy": {
              "time": {
                "field": "order_date",
                "max_age": "30d"
              }
            }
          }
      - lang: Python
        source: |-
          resp = client.transform.put_transform(
              transform_id="ecommerce_transform1",
              source={
                  "index": "kibana_sample_data_ecommerce",
                  "query": {
                      "term": {
                          "geoip.continent_name": {
                              "value": "Asia"
                          }
                      }
                  }
              },
              pivot={
                  "group_by": {
                      "customer_id": {
                          "terms": {
                              "field": "customer_id",
                              "missing_bucket": True
                          }
                      }
                  },
                  "aggregations": {
                      "max_price": {
                          "max": {
                              "field": "taxful_total_price"
                          }
                      }
                  }
              },
              description="Maximum priced ecommerce data by customer_id in Asia",
              dest={
                  "index": "kibana_sample_data_ecommerce_transform1",
                  "pipeline": "add_timestamp_pipeline"
              },
              frequency="5m",
              sync={
                  "time": {
                      "field": "order_date",
                      "delay": "60s"
                  }
              },
              retention_policy={
                  "time": {
                      "field": "order_date",
                      "max_age": "30d"
                  }
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.transform.putTransform({
            transform_id: "ecommerce_transform1",
            source: {
              index: "kibana_sample_data_ecommerce",
              query: {
                term: {
                  "geoip.continent_name": {
                    value: "Asia",
                  },
                },
              },
            },
            pivot: {
              group_by: {
                customer_id: {
                  terms: {
                    field: "customer_id",
                    missing_bucket: true,
                  },
                },
              },
              aggregations: {
                max_price: {
                  max: {
                    field: "taxful_total_price",
                  },
                },
              },
            },
            description: "Maximum priced ecommerce data by customer_id in Asia",
            dest: {
              index: "kibana_sample_data_ecommerce_transform1",
              pipeline: "add_timestamp_pipeline",
            },
            frequency: "5m",
            sync: {
              time: {
                field: "order_date",
                delay: "60s",
              },
            },
            retention_policy: {
              time: {
                field: "order_date",
                max_age: "30d",
              },
            },
          });
      - lang: Ruby
        source: |-
          response = client.transform.put_transform(
            transform_id: "ecommerce_transform1",
            body: {
              "source": {
                "index": "kibana_sample_data_ecommerce",
                "query": {
                  "term": {
                    "geoip.continent_name": {
                      "value": "Asia"
                    }
                  }
                }
              },
              "pivot": {
                "group_by": {
                  "customer_id": {
                    "terms": {
                      "field": "customer_id",
                      "missing_bucket": true
                    }
                  }
                },
                "aggregations": {
                  "max_price": {
                    "max": {
                      "field": "taxful_total_price"
                    }
                  }
                }
              },
              "description": "Maximum priced ecommerce data by customer_id in Asia",
              "dest": {
                "index": "kibana_sample_data_ecommerce_transform1",
                "pipeline": "add_timestamp_pipeline"
              },
              "frequency": "5m",
              "sync": {
                "time": {
                  "field": "order_date",
                  "delay": "60s"
                }
              },
              "retention_policy": {
                "time": {
                  "field": "order_date",
                  "max_age": "30d"
                }
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->transform()->putTransform([
              "transform_id" => "ecommerce_transform1",
              "body" => [
                  "source" => [
                      "index" => "kibana_sample_data_ecommerce",
                      "query" => [
                          "term" => [
                              "geoip.continent_name" => [
                                  "value" => "Asia",
                              ],
                          ],
                      ],
                  ],
                  "pivot" => [
                      "group_by" => [
                          "customer_id" => [
                              "terms" => [
                                  "field" => "customer_id",
                                  "missing_bucket" => true,
                              ],
                          ],
                      ],
                      "aggregations" => [
                          "max_price" => [
                              "max" => [
                                  "field" => "taxful_total_price",
                              ],
                          ],
                      ],
                  ],
                  "description" => "Maximum priced ecommerce data by customer_id in Asia",
                  "dest" => [
                      "index" => "kibana_sample_data_ecommerce_transform1",
                      "pipeline" => "add_timestamp_pipeline",
                  ],
                  "frequency" => "5m",
                  "sync" => [
                      "time" => [
                          "field" => "order_date",
                          "delay" => "60s",
                      ],
                  ],
                  "retention_policy" => [
                      "time" => [
                          "field" => "order_date",
                          "max_age" => "30d",
                      ],
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"source":{"index":"kibana_sample_data_ecommerce","query":{"term":{"geoip.continent_name":{"value":"Asia"}}}},"pivot":{"group_by":{"customer_id":{"terms":{"field":"customer_id","missing_bucket":true}}},"aggregations":{"max_price":{"max":{"field":"taxful_total_price"}}}},"description":"Maximum
          priced ecommerce data by customer_id in Asia","dest":{"index":"kibana_sample_data_ecommerce_transform1","pipeline":"add_timestamp_pipeline"},"frequency":"5m","sync":{"time":{"field":"order_date","delay":"60s"}},"retention_policy":{"time":{"field":"order_date","max_age":"30d"}}}''
          "$ELASTICSEARCH_URL/_transform/ecommerce_transform1"'
      - lang: Java
        source: |
          client.transform().putTransform(p -> p
              .description("Maximum priced ecommerce data by customer_id in Asia")
              .dest(d -> d
                  .index("kibana_sample_data_ecommerce_transform1")
                  .pipeline("add_timestamp_pipeline")
              )
              .frequency(f -> f
                  .time("5m")
              )
              .pivot(pi -> pi
                  .aggregations("max_price", a -> a
                      .max(m -> m
                          .field("taxful_total_price")
                      )
                  )
                  .groupBy("customer_id", g -> g
                      .terms(t -> t
                          .field("customer_id")
                          .missingBucket(true)
                      )
                  )
              )
              .retentionPolicy(r -> r
                  .time(t -> t
                      .field("order_date")
                      .maxAge(m -> m
                          .time("30d")
                      )
                  )
              )
              .source(s -> s
                  .index("kibana_sample_data_ecommerce")
                  .query(q -> q
                      .term(te -> te
                          .field("geoip.continent_name")
                          .value(FieldValue.of("Asia"))
                      )
                  )
              )
              .sync(sy -> sy
                  .time(ti -> ti
                      .delay(d -> d
                          .time("60s")
                      )
                      .field("order_date")
                  )
              )
              .transformId("ecommerce_transform1")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    delete:
      tags:
      - transform
      summary: Delete a transform
      description: |2


        ## Required authorization

        * Cluster privileges: `manage_transform`
      operationId: transform-delete-transform
      parameters:
      - in: path
        name: transform_id
        description: Identifier for the transform.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: force
        description: |-
          If this value is false, the transform must be stopped before it can be deleted. If true, the transform is
          deleted regardless of its current state.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: delete_dest_index
        description: |-
          If this value is true, the destination index is deleted together with the transform. If false, the destination
          index will not be deleted
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: timeout
        description: Period to wait for a response. If no response is received before
          the timeout expires, the request fails and returns an error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
              examples:
                DeleteTransformResponseExample1:
                  description: A successful response when the transform is deleted.
                  value: |-
                    {
                      "acknowledged": true
                    }
      x-state: Generally available; Added in 7.5.0
      x-codeSamples:
      - lang: Console
        source: 'DELETE _transform/ecommerce_transform

          '
      - lang: Python
        source: |-
          resp = client.transform.delete_transform(
              transform_id="ecommerce_transform",
          )
      - lang: JavaScript
        source: |-
          const response = await client.transform.deleteTransform({
            transform_id: "ecommerce_transform",
          });
      - lang: Ruby
        source: |-
          response = client.transform.delete_transform(
            transform_id: "ecommerce_transform"
          )
      - lang: PHP
        source: |-
          $resp = $client->transform()->deleteTransform([
              "transform_id" => "ecommerce_transform",
          ]);
      - lang: curl
        source: 'curl -X DELETE -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_transform/ecommerce_transform"'
      - lang: Java
        source: |
          client.transform().deleteTransform(d -> d
              .transformId("ecommerce_transform")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_transform/_node_stats":
    get:
      tags:
      - transform
      summary: Get node stats
      description: Get per-node information about transform usage.
      operationId: transform-get-node-stats
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/transform.get_node_stats.TransformNodeFullStats"
      x-state: Generally available; Added in 8.15.0
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_transform/{transform_id}/_stats":
    get:
      tags:
      - transform
      summary: Get transform stats
      description: |
        Get usage information for transforms.

        ## Required authorization

        * Index privileges: `read`,`view_index_metadata`
        * Cluster privileges: `monitor_transform`
      operationId: transform-get-transform-stats
      parameters:
      - in: path
        name: transform_id
        description: |-
          Identifier for the transform. It can be a transform identifier or a
          wildcard expression. You can get information for all transforms by using
          `_all`, by specifying `*` as the `<transform_id>`, or by omitting the
          `<transform_id>`.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Names"
        style: simple
      - in: query
        name: allow_no_match
        description: |-
          Specifies what to do when the request:

          1. Contains wildcard expressions and there are no transforms that match.
          2. Contains the _all string or no identifiers and there are no matches.
          3. Contains wildcard expressions and there are only partial matches.

          If this parameter is false, the request returns a 404 status code when
          there are no matches or only partial matches.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: from
        description: Skips the specified number of transforms.
        deprecated: false
        schema:
          type: number
        style: form
      - in: query
        name: size
        description: Specifies the maximum number of transforms to obtain.
        deprecated: false
        schema:
          type: number
        style: form
      - in: query
        name: timeout
        description: Controls the time to wait for the stats
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: number
                  transforms:
                    type: array
                    items:
                      "$ref": "#/components/schemas/transform.get_transform_stats.TransformStats"
                required:
                - count
                - transforms
              examples:
                GetTransformStatsResponseExample1:
                  description: A successful response that contains usage information
                    for a transform.
                  value: |-
                    {
                      "count": 1,
                      "transforms": [
                        {
                          "id": "ecommerce-customer-transform",
                          "state": "started",
                          "node": {
                            "id": "cpTIGMsVQ8Gqwqlxxxxxxx",
                            "name": "my.home",
                            "ephemeral_id": "5-L21nFsQxxxxxxxxxx-xx",
                            "transport_address": "127.0.0.1:9300",
                            "attributes": {}
                          },
                          "stats": {
                            "pages_processed": 78,
                            "documents_processed": 6027,
                            "documents_indexed": 68,
                            "documents_deleted": 22,
                            "delete_time_in_ms": 214,
                            "trigger_count": 168,
                            "index_time_in_ms": 412,
                            "index_total": 20,
                            "index_failures": 0,
                            "search_time_in_ms": 353,
                            "search_total": 78,
                            "search_failures": 0,
                            "processing_time_in_ms": 8,
                            "processing_total": 78,
                            "exponential_avg_checkpoint_duration_ms": 97.30637923893185,
                            "exponential_avg_documents_indexed": 2.2064915040974062,
                            "exponential_avg_documents_processed": 179.89419945785045
                          },
                          "checkpointing": {
                            "last": {
                              "checkpoint": 20,
                              "timestamp_millis": 1585344558220,
                              "time_upper_bound_millis": 1585344498220
                            },
                            "changes_last_detected_at": 1585344558219
                          },
                          "health": {
                            "status": "green"
                          }
                        }
                      ]
                    }
      x-state: Generally available; Added in 7.5.0
      x-codeSamples:
      - lang: Console
        source: 'GET _transform/ecommerce-customer-transform/_stats

          '
      - lang: Python
        source: |-
          resp = client.transform.get_transform_stats(
              transform_id="ecommerce-customer-transform",
          )
      - lang: JavaScript
        source: |-
          const response = await client.transform.getTransformStats({
            transform_id: "ecommerce-customer-transform",
          });
      - lang: Ruby
        source: |-
          response = client.transform.get_transform_stats(
            transform_id: "ecommerce-customer-transform"
          )
      - lang: PHP
        source: |-
          $resp = $client->transform()->getTransformStats([
              "transform_id" => "ecommerce-customer-transform",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_transform/ecommerce-customer-transform/_stats"'
      - lang: Java
        source: |
          client.transform().getTransformStats(g -> g
              .transformId("ecommerce-customer-transform")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_transform/{transform_id}/_preview":
    post:
      tags:
      - transform
      summary: 'Preview a transform

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_transform/_preview</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_transform/_preview</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_transform/{transform_id}/_preview</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_transform/{transform_id}/_preview</span>\n
        \                     </div>\n                    \n\nGenerates a preview
        of the results that you will get when you create a transform with the same
        configuration.\n\nIt returns a maximum of 100 results. The calculations are
        based on all the current data in the source index. It also\ngenerates a list
        of mappings and settings for the destination index. These values are determined
        based on the field\ntypes of the source index and the transform aggregations.\n\n##
        Required authorization\n\n* Index privileges: `read`,`view_index_metadata`\n*
        Cluster privileges: `manage_transform`\n"
      operationId: transform-preview-transform
      parameters:
      - "$ref": "#/components/parameters/transform.preview_transform-transform_id"
      - "$ref": "#/components/parameters/transform.preview_transform-timeout"
      requestBody:
        "$ref": "#/components/requestBodies/transform.preview_transform"
      responses:
        '200':
          "$ref": "#/components/responses/transform.preview_transform-200"
      x-state: Generally available; Added in 7.2.0
      x-codeSamples:
      - lang: Console
        source: |-
          POST _transform/_preview
          {
            "source": {
              "index": "kibana_sample_data_ecommerce"
            },
            "pivot": {
              "group_by": {
                "customer_id": {
                  "terms": {
                    "field": "customer_id",
                    "missing_bucket": true
                  }
                }
              },
              "aggregations": {
                "max_price": {
                  "max": {
                    "field": "taxful_total_price"
                  }
                }
              }
            }
          }
      - lang: Python
        source: |-
          resp = client.transform.preview_transform(
              source={
                  "index": "kibana_sample_data_ecommerce"
              },
              pivot={
                  "group_by": {
                      "customer_id": {
                          "terms": {
                              "field": "customer_id",
                              "missing_bucket": True
                          }
                      }
                  },
                  "aggregations": {
                      "max_price": {
                          "max": {
                              "field": "taxful_total_price"
                          }
                      }
                  }
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.transform.previewTransform({
            source: {
              index: "kibana_sample_data_ecommerce",
            },
            pivot: {
              group_by: {
                customer_id: {
                  terms: {
                    field: "customer_id",
                    missing_bucket: true,
                  },
                },
              },
              aggregations: {
                max_price: {
                  max: {
                    field: "taxful_total_price",
                  },
                },
              },
            },
          });
      - lang: Ruby
        source: |-
          response = client.transform.preview_transform(
            body: {
              "source": {
                "index": "kibana_sample_data_ecommerce"
              },
              "pivot": {
                "group_by": {
                  "customer_id": {
                    "terms": {
                      "field": "customer_id",
                      "missing_bucket": true
                    }
                  }
                },
                "aggregations": {
                  "max_price": {
                    "max": {
                      "field": "taxful_total_price"
                    }
                  }
                }
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->transform()->previewTransform([
              "body" => [
                  "source" => [
                      "index" => "kibana_sample_data_ecommerce",
                  ],
                  "pivot" => [
                      "group_by" => [
                          "customer_id" => [
                              "terms" => [
                                  "field" => "customer_id",
                                  "missing_bucket" => true,
                              ],
                          ],
                      ],
                      "aggregations" => [
                          "max_price" => [
                              "max" => [
                                  "field" => "taxful_total_price",
                              ],
                          ],
                      ],
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"source":{"index":"kibana_sample_data_ecommerce"},"pivot":{"group_by":{"customer_id":{"terms":{"field":"customer_id","missing_bucket":true}}},"aggregations":{"max_price":{"max":{"field":"taxful_total_price"}}}}}''
          "$ELASTICSEARCH_URL/_transform/_preview"'
      - lang: Java
        source: |
          client.transform().previewTransform(p -> p
              .pivot(pi -> pi
                  .aggregations("max_price", a -> a
                      .max(m -> m
                          .field("taxful_total_price")
                      )
                  )
                  .groupBy("customer_id", g -> g
                      .terms(t -> t
                          .field("customer_id")
                          .missingBucket(true)
                      )
                  )
              )
              .source(s -> s
                  .index("kibana_sample_data_ecommerce")
              )
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_transform/{transform_id}/_reset":
    post:
      tags:
      - transform
      summary: Reset a transform
      description: |
        Before you can reset it, you must stop it; alternatively, use the `force` query parameter.
        If the destination index was created by the transform, it is deleted.

        ## Required authorization

        * Cluster privileges: `manage_transform`
      operationId: transform-reset-transform
      parameters:
      - in: path
        name: transform_id
        description: |-
          Identifier for the transform. This identifier can contain lowercase alphanumeric characters (a-z and 0-9),
          hyphens, and underscores. It has a 64 character limit and must start and end with alphanumeric characters.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: force
        description: |-
          If this value is `true`, the transform is reset regardless of its current state. If it's `false`, the transform
          must be stopped before it can be reset.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: timeout
        description: Period to wait for a response. If no response is received before
          the timeout expires, the request fails and returns an error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
              examples:
                ResetTransformResponseExample1:
                  description: A successful response when the transform is reset.
                  value: |-
                    {
                      "acknowledged": true
                    }
      x-state: Generally available; Added in 8.1.0
      x-codeSamples:
      - lang: Console
        source: 'POST _transform/ecommerce_transform/_reset

          '
      - lang: Python
        source: |-
          resp = client.transform.reset_transform(
              transform_id="ecommerce_transform",
          )
      - lang: JavaScript
        source: |-
          const response = await client.transform.resetTransform({
            transform_id: "ecommerce_transform",
          });
      - lang: Ruby
        source: |-
          response = client.transform.reset_transform(
            transform_id: "ecommerce_transform"
          )
      - lang: PHP
        source: |-
          $resp = $client->transform()->resetTransform([
              "transform_id" => "ecommerce_transform",
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_transform/ecommerce_transform/_reset"'
      - lang: Java
        source: |
          client.transform().resetTransform(r -> r
              .transformId("ecommerce_transform")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_transform/{transform_id}/_schedule_now":
    post:
      tags:
      - transform
      summary: Schedule a transform to start now
      description: |
        Instantly run a transform to process data.
        If you run this API, the transform will process the new data instantly,
        without waiting for the configured frequency interval. After the API is called,
        the transform will be processed again at `now + frequency` unless the API
        is called again in the meantime.

        ## Required authorization

        * Cluster privileges: `manage_transform`
      operationId: transform-schedule-now-transform
      parameters:
      - in: path
        name: transform_id
        description: Identifier for the transform.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: timeout
        description: Controls the time to wait for the scheduling to take place
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
              examples:
                ScheduleNowTransformResponseExample1:
                  description: A successful response when the transform is scheduled
                    to run now.
                  value: |-
                    {
                      "acknowledged": true
                    }
      x-state: Generally available; Added in 8.7.0
      x-codeSamples:
      - lang: Console
        source: 'POST _transform/ecommerce_transform/_schedule_now

          '
      - lang: Python
        source: |-
          resp = client.transform.schedule_now_transform(
              transform_id="ecommerce_transform",
          )
      - lang: JavaScript
        source: |-
          const response = await client.transform.scheduleNowTransform({
            transform_id: "ecommerce_transform",
          });
      - lang: Ruby
        source: |-
          response = client.transform.schedule_now_transform(
            transform_id: "ecommerce_transform"
          )
      - lang: PHP
        source: |-
          $resp = $client->transform()->scheduleNowTransform([
              "transform_id" => "ecommerce_transform",
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_transform/ecommerce_transform/_schedule_now"'
      - lang: Java
        source: |
          client.transform().scheduleNowTransform(s -> s
              .transformId("ecommerce_transform")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_transform/set_upgrade_mode":
    post:
      tags:
      - transform
      summary: Set upgrade_mode for transform indices
      description: |
        Sets a cluster wide upgrade_mode setting that prepares transform
        indices for an upgrade.
        When upgrading your cluster, in some circumstances you must restart your
        nodes and reindex your transform indices. In those circumstances,
        there must be no transforms running. You can close the transforms,
        do the upgrade, then open all the transforms again. Alternatively,
        you can use this API to temporarily halt tasks associated with the transforms
        and prevent new transforms from opening. You can also use this API
        during upgrades that do not require you to reindex your transform
        indices, though stopping transforms is not a requirement in that case.
        You can see the current value for the upgrade_mode setting by using the get
        transform info API.

        ## Required authorization

        * Cluster privileges: `manage_transform`
      operationId: transform-set-upgrade-mode
      parameters:
      - in: query
        name: enabled
        description: |-
          When `true`, it enables `upgrade_mode` which temporarily halts all
          transform tasks and prohibits new transform tasks from
          starting.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: timeout
        description: The time to wait for the request to be completed.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
      x-state: Generally available; Added in 8.18.0
      x-codeSamples:
      - lang: Console
        source: 'POST _transform/set_upgrade_mode?enabled=true

          '
      - lang: Python
        source: |-
          resp = client.transform.set_upgrade_mode(
              enabled=True,
          )
      - lang: JavaScript
        source: |-
          const response = await client.transform.setUpgradeMode({
            enabled: "true",
          });
      - lang: Ruby
        source: |-
          response = client.transform.set_upgrade_mode(
            enabled: "true"
          )
      - lang: PHP
        source: |-
          $resp = $client->transform()->setUpgradeMode([
              "enabled" => "true",
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_transform/set_upgrade_mode?enabled=true"'
      - lang: Java
        source: |
          client.transform().setUpgradeMode(s -> s
              .enabled(true)
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_transform/{transform_id}/_start":
    post:
      tags:
      - transform
      summary: Start a transform
      description: |
        When you start a transform, it creates the destination index if it does not already exist. The `number_of_shards` is
        set to `1` and the `auto_expand_replicas` is set to `0-1`. If it is a pivot transform, it deduces the mapping
        definitions for the destination index from the source indices and the transform aggregations. If fields in the
        destination index are derived from scripts (as in the case of `scripted_metric` or `bucket_script` aggregations),
        the transform uses dynamic mappings unless an index template exists. If it is a latest transform, it does not deduce
        mapping definitions; it uses dynamic mappings. To use explicit mappings, create the destination index before you
        start the transform. Alternatively, you can create an index template, though it does not affect the deduced mappings
        in a pivot transform.

        When the transform starts, a series of validations occur to ensure its success. If you deferred validation when you
        created the transform, they occur when you start the transform—​with the exception of privilege checks. When
        Elasticsearch security features are enabled, the transform remembers which roles the user that created it had at the
        time of creation and uses those same roles. If those roles do not have the required privileges on the source and
        destination indices, the transform fails when it attempts unauthorized operations.

        ## Required authorization

        * Index privileges: `read`,`view_index_metadata`
        * Cluster privileges: `manage_transform`
      operationId: transform-start-transform
      parameters:
      - in: path
        name: transform_id
        description: Identifier for the transform.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: timeout
        description: Period to wait for a response. If no response is received before
          the timeout expires, the request fails and returns an error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: from
        description: Restricts the set of transformed entities to those changed after
          this time. Relative times like now-30d are supported. Only applicable for
          continuous transforms.
        deprecated: false
        schema:
          type: string
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
              examples:
                StartTransformResponseExample1:
                  description: A successful response when a transform starts.
                  value: |-
                    {
                      "acknowledged": true
                    }
      x-state: Generally available; Added in 7.5.0
      x-codeSamples:
      - lang: Console
        source: 'POST _transform/ecommerce-customer-transform/_start

          '
      - lang: Python
        source: |-
          resp = client.transform.start_transform(
              transform_id="ecommerce-customer-transform",
          )
      - lang: JavaScript
        source: |-
          const response = await client.transform.startTransform({
            transform_id: "ecommerce-customer-transform",
          });
      - lang: Ruby
        source: |-
          response = client.transform.start_transform(
            transform_id: "ecommerce-customer-transform"
          )
      - lang: PHP
        source: |-
          $resp = $client->transform()->startTransform([
              "transform_id" => "ecommerce-customer-transform",
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_transform/ecommerce-customer-transform/_start"'
      - lang: Java
        source: |
          client.transform().startTransform(s -> s
              .transformId("ecommerce-customer-transform")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_transform/{transform_id}/_stop":
    post:
      tags:
      - transform
      summary: Stop transforms
      description: |
        Stops one or more transforms.

        ## Required authorization

        * Cluster privileges: `manage_transform`
      operationId: transform-stop-transform
      parameters:
      - in: path
        name: transform_id
        description: |-
          Identifier for the transform. To stop multiple transforms, use a comma-separated list or a wildcard expression.
          To stop all transforms, use `_all` or `*` as the identifier.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Name"
        style: simple
      - in: query
        name: allow_no_match
        description: |-
          Specifies what to do when the request: contains wildcard expressions and there are no transforms that match;
          contains the `_all` string or no identifiers and there are no matches; contains wildcard expressions and there
          are only partial matches.

          If it is true, the API returns a successful acknowledgement message when there are no matches. When there are
          only partial matches, the API stops the appropriate transforms.

          If it is false, the request returns a 404 status code when there are no matches or only partial matches.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: force
        description: If it is true, the API forcefully stops the transforms.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: timeout
        description: |-
          Period to wait for a response when `wait_for_completion` is `true`. If no response is received before the
          timeout expires, the request returns a timeout exception. However, the request continues processing and
          eventually moves the transform to a STOPPED state.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: wait_for_checkpoint
        description: |-
          If it is true, the transform does not completely stop until the current checkpoint is completed. If it is false,
          the transform stops as soon as possible.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: wait_for_completion
        description: |-
          If it is true, the API blocks until the indexer state completely stops. If it is false, the API returns
          immediately and the indexer is stopped asynchronously in the background.
        deprecated: false
        schema:
          type: boolean
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
              examples:
                StopTransformResponseExample1:
                  description: A successful response when a transform stops.
                  value: |-
                    {
                      "acknowledged": true
                    }
      x-state: Generally available; Added in 7.5.0
      x-codeSamples:
      - lang: Console
        source: 'POST _transform/ecommerce_transform/_stop

          '
      - lang: Python
        source: |-
          resp = client.transform.stop_transform(
              transform_id="ecommerce_transform",
          )
      - lang: JavaScript
        source: |-
          const response = await client.transform.stopTransform({
            transform_id: "ecommerce_transform",
          });
      - lang: Ruby
        source: |-
          response = client.transform.stop_transform(
            transform_id: "ecommerce_transform"
          )
      - lang: PHP
        source: |-
          $resp = $client->transform()->stopTransform([
              "transform_id" => "ecommerce_transform",
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_transform/ecommerce_transform/_stop"'
      - lang: Java
        source: |
          client.transform().stopTransform(s -> s
              .transformId("ecommerce_transform")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_transform/{transform_id}/_update":
    post:
      tags:
      - transform
      summary: Update a transform
      description: |
        Updates certain properties of a transform.

        All updated properties except `description` do not take effect until after the transform starts the next checkpoint,
        thus there is data consistency in each checkpoint. To use this API, you must have `read` and `view_index_metadata`
        privileges for the source indices. You must also have `index` and `read` privileges for the destination index. When
        Elasticsearch security features are enabled, the transform remembers which roles the user who updated it had at the
        time of update and runs with those privileges.

        ## Required authorization

        * Index privileges: `read`,`index`,`view_index_metadata`
        * Cluster privileges: `manage_transform`
      operationId: transform-update-transform
      parameters:
      - in: path
        name: transform_id
        description: Identifier for the transform.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: defer_validation
        description: |-
          When true, deferrable validations are not run. This behavior may be
          desired if the source index does not exist until after the transform is
          created.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: timeout
        description: |-
          Period to wait for a response. If no response is received before the
          timeout expires, the request fails and returns an error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                dest:
                  description: The destination for the transform.
                  allOf:
                  - "$ref": "#/components/schemas/transform._types.Destination"
                description:
                  description: Free text description of the transform.
                  type: string
                frequency:
                  description: |-
                    The interval between checks for changes in the source indices when the
                    transform is running continuously. Also determines the retry interval in
                    the event of transient failures while the transform is searching or
                    indexing. The minimum value is 1s and the maximum is 1h.
                  default: 1m
                  allOf:
                  - "$ref": "#/components/schemas/_types.Duration"
                _meta:
                  description: Defines optional transform metadata.
                  allOf:
                  - "$ref": "#/components/schemas/_types.Metadata"
                source:
                  description: The source of the data for the transform.
                  allOf:
                  - "$ref": "#/components/schemas/transform._types.Source"
                settings:
                  description: Defines optional transform settings.
                  allOf:
                  - "$ref": "#/components/schemas/transform._types.Settings"
                sync:
                  description: Defines the properties transforms require to run continuously.
                  allOf:
                  - "$ref": "#/components/schemas/transform._types.SyncContainer"
                retention_policy:
                  description: |-
                    Defines a retention policy for the transform. Data that meets the defined
                    criteria is deleted from the destination index.
                  oneOf:
                  - "$ref": "#/components/schemas/transform._types.RetentionPolicyContainer"
                  - nullable: true
                    type: string
            examples:
              UpdateTransformRequestExample1:
                description: Run `POST _transform/simple-kibana-ecomm-pivot/_update`
                  to update a transform that uses the pivot method.
                value: |-
                  {
                    "source": {
                      "index": "kibana_sample_data_ecommerce",
                      "query": {
                        "term": {
                          "geoip.continent_name": {
                            "value": "Asia"
                          }
                        }
                      }
                    },
                    "description": "Maximum priced ecommerce data by customer_id in Asia",
                    "dest": {
                      "index": "kibana_sample_data_ecommerce_transform_v2",
                      "pipeline": "add_timestamp_pipeline"
                    },
                    "frequency": "15m",
                    "sync": {
                      "time": {
                        "field": "order_date",
                        "delay": "120s"
                      }
                    }
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  authorization:
                    allOf:
                    - "$ref": "#/components/schemas/ml._types.TransformAuthorization"
                  create_time:
                    type: number
                  description:
                    type: string
                  dest:
                    allOf:
                    - "$ref": "#/components/schemas/_global.reindex.Destination"
                  frequency:
                    allOf:
                    - "$ref": "#/components/schemas/_types.Duration"
                  id:
                    allOf:
                    - "$ref": "#/components/schemas/_types.Id"
                  latest:
                    allOf:
                    - "$ref": "#/components/schemas/transform._types.Latest"
                  pivot:
                    allOf:
                    - "$ref": "#/components/schemas/transform._types.Pivot"
                  retention_policy:
                    allOf:
                    - "$ref": "#/components/schemas/transform._types.RetentionPolicyContainer"
                  settings:
                    allOf:
                    - "$ref": "#/components/schemas/transform._types.Settings"
                  source:
                    allOf:
                    - "$ref": "#/components/schemas/_global.reindex.Source"
                  sync:
                    allOf:
                    - "$ref": "#/components/schemas/transform._types.SyncContainer"
                  version:
                    allOf:
                    - "$ref": "#/components/schemas/_types.VersionString"
                  _meta:
                    allOf:
                    - "$ref": "#/components/schemas/_types.Metadata"
                required:
                - create_time
                - description
                - dest
                - id
                - settings
                - source
                - version
              examples:
                UpdateTransformResponseExample1:
                  description: A successful response when creating a transform.
                  value: |-
                    {
                      "id": "simple-kibana-ecomm-pivot",
                      "authorization": {
                        "roles": [
                          "superuser"
                        ]
                      },
                      "version": "10.0.0",
                      "create_time": 1712951576767,
                      "source": {
                        "index": [
                          "kibana_sample_data_ecommerce"
                        ],
                        "query": {
                          "term": {
                            "geoip.continent_name": {
                              "value": "Asia"
                            }
                          }
                        }
                      },
                      "dest": {
                        "index": "kibana_sample_data_ecommerce_transform_v2",
                        "pipeline": "add_timestamp_pipeline"
                      },
                      "frequency": "15m",
                      "sync": {
                        "time": {
                          "field": "order_date",
                          "delay": "120s"
                        }
                      },
                      "pivot": {
                        "group_by": {
                          "customer_id": {
                            "terms": {
                              "field": "customer_id",
                              "missing_bucket": true
                            }
                          }
                        },
                        "aggregations": {
                          "max_price": {
                            "max": {
                              "field": "taxful_total_price"
                            }
                          }
                        }
                      },
                      "description": "Maximum priced ecommerce data by customer_id in Asia",
                      "settings": {},
                      "retention_policy": {
                        "time": {
                          "field": "order_date",
                          "max_age": "30d"
                        }
                      }
                    }
      x-state: Generally available; Added in 7.2.0
      x-codeSamples:
      - lang: Console
        source: |-
          POST _transform/simple-kibana-ecomm-pivot/_update
          {
            "source": {
              "index": "kibana_sample_data_ecommerce",
              "query": {
                "term": {
                  "geoip.continent_name": {
                    "value": "Asia"
                  }
                }
              }
            },
            "description": "Maximum priced ecommerce data by customer_id in Asia",
            "dest": {
              "index": "kibana_sample_data_ecommerce_transform_v2",
              "pipeline": "add_timestamp_pipeline"
            },
            "frequency": "15m",
            "sync": {
              "time": {
                "field": "order_date",
                "delay": "120s"
              }
            }
          }
      - lang: Python
        source: |-
          resp = client.transform.update_transform(
              transform_id="simple-kibana-ecomm-pivot",
              source={
                  "index": "kibana_sample_data_ecommerce",
                  "query": {
                      "term": {
                          "geoip.continent_name": {
                              "value": "Asia"
                          }
                      }
                  }
              },
              description="Maximum priced ecommerce data by customer_id in Asia",
              dest={
                  "index": "kibana_sample_data_ecommerce_transform_v2",
                  "pipeline": "add_timestamp_pipeline"
              },
              frequency="15m",
              sync={
                  "time": {
                      "field": "order_date",
                      "delay": "120s"
                  }
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.transform.updateTransform({
            transform_id: "simple-kibana-ecomm-pivot",
            source: {
              index: "kibana_sample_data_ecommerce",
              query: {
                term: {
                  "geoip.continent_name": {
                    value: "Asia",
                  },
                },
              },
            },
            description: "Maximum priced ecommerce data by customer_id in Asia",
            dest: {
              index: "kibana_sample_data_ecommerce_transform_v2",
              pipeline: "add_timestamp_pipeline",
            },
            frequency: "15m",
            sync: {
              time: {
                field: "order_date",
                delay: "120s",
              },
            },
          });
      - lang: Ruby
        source: |-
          response = client.transform.update_transform(
            transform_id: "simple-kibana-ecomm-pivot",
            body: {
              "source": {
                "index": "kibana_sample_data_ecommerce",
                "query": {
                  "term": {
                    "geoip.continent_name": {
                      "value": "Asia"
                    }
                  }
                }
              },
              "description": "Maximum priced ecommerce data by customer_id in Asia",
              "dest": {
                "index": "kibana_sample_data_ecommerce_transform_v2",
                "pipeline": "add_timestamp_pipeline"
              },
              "frequency": "15m",
              "sync": {
                "time": {
                  "field": "order_date",
                  "delay": "120s"
                }
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->transform()->updateTransform([
              "transform_id" => "simple-kibana-ecomm-pivot",
              "body" => [
                  "source" => [
                      "index" => "kibana_sample_data_ecommerce",
                      "query" => [
                          "term" => [
                              "geoip.continent_name" => [
                                  "value" => "Asia",
                              ],
                          ],
                      ],
                  ],
                  "description" => "Maximum priced ecommerce data by customer_id in Asia",
                  "dest" => [
                      "index" => "kibana_sample_data_ecommerce_transform_v2",
                      "pipeline" => "add_timestamp_pipeline",
                  ],
                  "frequency" => "15m",
                  "sync" => [
                      "time" => [
                          "field" => "order_date",
                          "delay" => "120s",
                      ],
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"source":{"index":"kibana_sample_data_ecommerce","query":{"term":{"geoip.continent_name":{"value":"Asia"}}}},"description":"Maximum
          priced ecommerce data by customer_id in Asia","dest":{"index":"kibana_sample_data_ecommerce_transform_v2","pipeline":"add_timestamp_pipeline"},"frequency":"15m","sync":{"time":{"field":"order_date","delay":"120s"}}}''
          "$ELASTICSEARCH_URL/_transform/simple-kibana-ecomm-pivot/_update"'
      - lang: Java
        source: |
          client.transform().updateTransform(u -> u
              .description("Maximum priced ecommerce data by customer_id in Asia")
              .dest(d -> d
                  .index("kibana_sample_data_ecommerce_transform_v2")
                  .pipeline("add_timestamp_pipeline")
              )
              .frequency(f -> f
                  .time("15m")
              )
              .source(s -> s
                  .index("kibana_sample_data_ecommerce")
                  .query(q -> q
                      .term(t -> t
                          .field("geoip.continent_name")
                          .value(FieldValue.of("Asia"))
                      )
                  )
              )
              .sync(sy -> sy
                  .time(t -> t
                      .delay(d -> d
                          .time("120s")
                      )
                      .field("order_date")
                  )
              )
              .transformId("simple-kibana-ecomm-pivot")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_transform/_upgrade":
    post:
      tags:
      - transform
      summary: Upgrade all transforms
      description: |
        Transforms are compatible across minor versions and between supported major versions.
        However, over time, the format of transform configuration information may change.
        This API identifies transforms that have a legacy configuration format and upgrades them to the latest version.
        It also cleans up the internal data structures that store the transform state and checkpoints.
        The upgrade does not affect the source and destination indices.
        The upgrade also does not affect the roles that transforms use when Elasticsearch security features are enabled; the role used to read source data and write to the destination index remains unchanged.

        If a transform upgrade step fails, the upgrade stops and an error is returned about the underlying issue.
        Resolve the issue then re-run the process again.
        A summary is returned when the upgrade is finished.

        To ensure continuous transforms remain running during a major version upgrade of the cluster – for example, from 7.16 to 8.0 – it is recommended to upgrade transforms before upgrading the cluster.
        You may want to perform a recent cluster backup prior to the upgrade.

        ## Required authorization

        * Cluster privileges: `manage_transform`
      operationId: transform-upgrade-transforms
      parameters:
      - in: query
        name: dry_run
        description: When true, the request checks for updates but does not run them.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: timeout
        description: |-
          Period to wait for a response. If no response is received before the timeout expires, the request fails and
          returns an error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  needs_update:
                    description: The number of transforms that need to be upgraded.
                    type: number
                  no_action:
                    description: The number of transforms that don’t require upgrading.
                    type: number
                  updated:
                    description: The number of transforms that have been upgraded.
                    type: number
                required:
                - needs_update
                - no_action
                - updated
              examples:
                UpgradeTransformResponseExample1:
                  description: A successful response contains a summary when all transforms
                    are upgraded.
                  value: |-
                    {
                      "needs_update": 0,
                      "updated": 2,
                      "no_action": 1
                    }
      x-state: Generally available; Added in 7.16.0
      x-codeSamples:
      - lang: Console
        source: 'POST _transform/_upgrade

          '
      - lang: Python
        source: resp = client.transform.upgrade_transforms()
      - lang: JavaScript
        source: const response = await client.transform.upgradeTransforms();
      - lang: Ruby
        source: response = client.transform.upgrade_transforms
      - lang: PHP
        source: "$resp = $client->transform()->upgradeTransforms();"
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_transform/_upgrade"'
      - lang: Java
        source: 'client.transform().upgradeTransforms(u -> u);

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/{index}/_update/{id}":
    post:
      tags:
      - document
      summary: Update a document
      description: |
        Update a document by running a script or passing a partial document.

        If the Elasticsearch security features are enabled, you must have the `index` or `write` index privilege for the target index or index alias.

        The script can update, delete, or skip modifying the document.
        The API also supports passing a partial document, which is merged into the existing document.
        To fully replace an existing document, use the index API.
        This operation:

        * Gets the document (collocated with the shard) from the index.
        * Runs the specified script.
        * Indexes the result.

        The document must still be reindexed, but using this API removes some network roundtrips and reduces chances of version conflicts between the GET and the index operation.

        The `_source` field must be enabled to use this API.
        In addition to `_source`, you can access the following variables through the `ctx` map: `_index`, `_type`, `_id`, `_version`, `_routing`, and `_now` (the current timestamp).
        For usage examples such as partial updates, upserts, and scripted updates, see the External documentation.

        ## Required authorization

        * Index privileges: `write`
      externalDocs:
        url: https://www.elastic.co/docs/reference/elasticsearch/rest-apis/update-document
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/docs-update.html
      operationId: update
      parameters:
      - in: path
        name: index
        description: |-
          The name of the target index.
          By default, the index is created automatically if it doesn't exist.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.IndexName"
        style: simple
      - in: path
        name: id
        description: A unique identifier for the document to be updated.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: if_primary_term
        description: Only perform the operation if the document has this primary term.
        deprecated: false
        schema:
          type: number
        style: form
      - in: query
        name: if_seq_no
        description: Only perform the operation if the document has this sequence
          number.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.SequenceNumber"
        style: form
      - in: query
        name: include_source_on_error
        description: True or false if to include the document source in the error
          message in case of parsing errors.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: lang
        description: The script language.
        deprecated: false
        schema:
          type: string
        style: form
      - in: query
        name: refresh
        description: |-
          If 'true', Elasticsearch refreshes the affected shards to make this operation visible to search.
          If 'wait_for', it waits for a refresh to make this operation visible to search.
          If 'false', it does nothing with refreshes.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Refresh"
        style: form
      - in: query
        name: require_alias
        description: If `true`, the destination must be an index alias.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: retry_on_conflict
        description: The number of times the operation should be retried when a conflict
          occurs.
        deprecated: false
        schema:
          type: number
        style: form
      - in: query
        name: routing
        description: A custom value used to route operations to a specific shard.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Routing"
        style: form
      - in: query
        name: timeout
        description: |-
          The period to wait for the following operations: dynamic mapping updates and waiting for active shards.
          Elasticsearch waits for at least the timeout period before failing.
          The actual wait time could be longer, particularly when multiple waits occur.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: wait_for_active_shards
        description: |-
          The number of copies of each shard that must be active before proceeding with the operation.
          Set to 'all' or any positive integer up to the total number of shards in the index (`number_of_replicas`+1).
          The default value of `1` means it waits for each primary shard to be active.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.WaitForActiveShards"
        style: form
      - in: query
        name: _source
        description: |-
          If `false`, source retrieval is turned off.
          You can also specify a comma-separated list of the fields you want to retrieve.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_global.search._types.SourceConfigParam"
        style: form
      - in: query
        name: _source_excludes
        description: The source fields you want to exclude.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Fields"
        style: form
      - in: query
        name: _source_includes
        description: The source fields you want to retrieve.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Fields"
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                detect_noop:
                  description: If `true`, the `result` in the response is set to `noop`
                    (no operation) when there are no changes to the document.
                  default: true
                  type: boolean
                doc:
                  description: |-
                    A partial update to an existing document.
                    If both `doc` and `script` are specified, `doc` is ignored.
                  type: object
                doc_as_upsert:
                  description: |-
                    If `true`, use the contents of 'doc' as the value of 'upsert'.
                    NOTE: Using ingest pipelines with `doc_as_upsert` is not supported.
                  default: false
                  type: boolean
                script:
                  description: The script to run to update the document.
                  allOf:
                  - "$ref": "#/components/schemas/_types.Script"
                scripted_upsert:
                  description: If `true`, run the script whether or not the document
                    exists.
                  default: false
                  type: boolean
                _source:
                  description: |-
                    If `false`, turn off source retrieval.
                    You can also specify a comma-separated list of the fields you want to retrieve.
                  default: 'true'
                  allOf:
                  - "$ref": "#/components/schemas/_global.search._types.SourceConfig"
                upsert:
                  description: |-
                    If the document does not already exist, the contents of 'upsert' are inserted as a new document.
                    If the document exists, the 'script' is run.
                  type: object
            examples:
              UpdateRequestExample1:
                summary: Update a counter with a script
                description: Run `POST test/_update/1` to increment a counter by using
                  a script.
                value: |-
                  {
                    "script" : {
                      "source": "ctx._source.counter += params.count",
                      "lang": "painless",
                      "params" : {
                        "count" : 4
                      }
                    }
                  }
              UpdateRequestExample10:
                summary: Scripted upsert
                description: 'Run `POST test/_update/1` to perform a scripted upsert.
                  When `scripted_upsert` is `true`, the script runs whether or not
                  the document exists.

                  '
                value: |-
                  {
                    "scripted_upsert": true,
                    "script": {
                      "source": """
                        if ( ctx.op == 'create' ) {
                          ctx._source.counter = params.count
                        } else {
                          ctx._source.counter += params.count
                        }
                      """,
                      "params": {
                        "count": 4
                      }
                    },
                    "upsert": {}
                  }
              UpdateRequestExample11:
                summary: Doc as upsert
                description: 'Run `POST test/_update/1` to perform a doc as upsert.
                  Instead of sending a partial `doc` plus an `upsert` doc, you can
                  set `doc_as_upsert` to `true` to use the contents of `doc` as the
                  `upsert` value.

                  '
                value: |-
                  {
                    "doc": {
                      "name": "new_name"
                    },
                    "doc_as_upsert": true
                  }
              UpdateRequestExample2:
                summary: Add a tag with a script
                description: 'Run `POST test/_update/1` to use a script to add a tag
                  to a list of tags. In this example, it is just a list, so the tag
                  is added even it exists.

                  '
                value: |-
                  {
                    "script": {
                      "source": "ctx._source.tags.add(params.tag)",
                      "lang": "painless",
                      "params": {
                        "tag": "blue"
                      }
                    }
                  }
              UpdateRequestExample3:
                summary: Remove a tag with a script
                description: 'Run `POST test/_update/1` to use a script to remove
                  a tag from a list of tags. The Painless function to remove a tag
                  takes the array index of the element you want to remove. To avoid
                  a possible runtime error, you first need to make sure the tag exists.
                  If the list contains duplicates of the tag, this script just removes
                  one occurrence.

                  '
                value: |-
                  {
                    "script": {
                      "source": "if (ctx._source.tags.contains(params.tag)) { ctx._source.tags.remove(ctx._source.tags.indexOf(params.tag)) }",
                      "lang": "painless",
                      "params": {
                        "tag": "blue"
                      }
                    }
                  }
              UpdateRequestExample4:
                summary: Add fields with a script
                description: 'Run `POST test/_update/1` to use a script to add a field
                  `new_field` to the document.

                  '
                value: |-
                  {
                    "script" : "ctx._source.new_field = 'value_of_new_field'"
                  }
              UpdateRequestExample5:
                summary: Remove fields with a script
                description: 'Run `POST test/_update/1` to use a script to remove
                  a field `new_field` from the document.

                  '
                value: |-
                  {
                    "script" : "ctx._source.remove('new_field')"
                  }
              UpdateRequestExample6:
                summary: Remove subfields with a script
                description: 'Run `POST test/_update/1` to use a script to remove
                  a subfield from an object field.

                  '
                value: |-
                  {
                    "script": "ctx._source['my-object'].remove('my-subfield')"
                  }
              UpdateRequestExample7:
                summary: Change the operation with a script
                description: 'Run `POST test/_update/1` to change the operation that
                  runs from within the script. For example, this request deletes the
                  document if the `tags` field contains `green`, otherwise it does
                  nothing (`noop`).

                  '
                value: |-
                  {
                    "script": {
                      "source": "if (ctx._source.tags.contains(params.tag)) { ctx.op = 'delete' } else { ctx.op = 'noop' }",
                      "lang": "painless",
                      "params": {
                        "tag": "green"
                      }
                    }
                  }
              UpdateRequestExample8:
                summary: Update part of a document
                description: 'Run `POST test/_update/1` to do a partial update that
                  adds a new field to the existing document.

                  '
                value: |-
                  {
                    "doc": {
                      "name": "new_name"
                    }
                  }
              UpdateRequestExample9:
                summary: Upsert
                description: 'Run `POST test/_update/1` to perfom an upsert. If the
                  document does not already exist, the contents of the upsert element
                  are inserted as a new document. If the document exists, the script
                  is run.

                  '
                value: |-
                  {
                    "script": {
                      "source": "ctx._source.counter += params.count",
                      "lang": "painless",
                      "params": {
                        "count": 4
                      }
                    },
                    "upsert": {
                      "counter": 1
                    }
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_global.update.UpdateWriteResponseBase"
              examples:
                UpdateResponseExample1:
                  summary: Detect noop updates
                  description: 'By default updates that don''t change anything detect
                    that they don''t change anything and return `"result": "noop"`.

                    '
                  value: |-
                    {
                       "_shards": {
                            "total": 0,
                            "successful": 0,
                            "failed": 0
                       },
                       "_index": "test",
                       "_id": "1",
                       "_version": 2,
                       "_primary_term": 1,
                       "_seq_no": 1,
                       "result": "noop"
                    }
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: |-
          POST test/_update/1
          {
            "script" : {
              "source": "ctx._source.counter += params.count",
              "lang": "painless",
              "params" : {
                "count" : 4
              }
            }
          }
      - lang: Python
        source: |-
          resp = client.update(
              index="test",
              id="1",
              script={
                  "source": "ctx._source.counter += params.count",
                  "lang": "painless",
                  "params": {
                      "count": 4
                  }
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.update({
            index: "test",
            id: 1,
            script: {
              source: "ctx._source.counter += params.count",
              lang: "painless",
              params: {
                count: 4,
              },
            },
          });
      - lang: Ruby
        source: |-
          response = client.update(
            index: "test",
            id: "1",
            body: {
              "script": {
                "source": "ctx._source.counter += params.count",
                "lang": "painless",
                "params": {
                  "count": 4
                }
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->update([
              "index" => "test",
              "id" => "1",
              "body" => [
                  "script" => [
                      "source" => "ctx._source.counter += params.count",
                      "lang" => "painless",
                      "params" => [
                          "count" => 4,
                      ],
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"script":{"source":"ctx._source.counter += params.count","lang":"painless","params":{"count":4}}}''
          "$ELASTICSEARCH_URL/test/_update/1"'
      - lang: Java
        source: |
          client.update(u -> u
              .id("1")
              .index("test")
              .script(s -> s
                  .source(so -> so
                      .scriptString("ctx._source.counter += params.count")
                  )
                  .params("count", JsonData.fromJson("4"))
                  .lang("painless")
              )
          ,Void.class);
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/{index}/_update_by_query":
    post:
      tags:
      - document
      summary: Update documents
      description: |
        Updates documents that match the specified query.
        If no query is specified, performs an update on every document in the data stream or index without modifying the source, which is useful for picking up mapping changes.

        If the Elasticsearch security features are enabled, you must have the following index privileges for the target data stream, index, or alias:

        * `read`
        * `index` or `write`

        You can specify the query criteria in the request URI or the request body using the same syntax as the search API.

        When you submit an update by query request, Elasticsearch gets a snapshot of the data stream or index when it begins processing the request and updates matching documents using internal versioning.
        When the versions match, the document is updated and the version number is incremented.
        If a document changes between the time that the snapshot is taken and the update operation is processed, it results in a version conflict and the operation fails.
        You can opt to count version conflicts instead of halting and returning by setting `conflicts` to `proceed`.
        Note that if you opt to count version conflicts, the operation could attempt to update more documents from the source than `max_docs` until it has successfully updated `max_docs` documents or it has gone through every document in the source query.

        NOTE: Documents with a version equal to 0 cannot be updated using update by query because internal versioning does not support 0 as a valid version number.

        While processing an update by query request, Elasticsearch performs multiple search requests sequentially to find all of the matching documents.
        A bulk update request is performed for each batch of matching documents.
        Any query or update failures cause the update by query request to fail and the failures are shown in the response.
        Any update requests that completed successfully still stick, they are not rolled back.

        **Refreshing shards**

        Specifying the `refresh` parameter refreshes all shards once the request completes.
        This is different to the update API's `refresh` parameter, which causes only the shard
        that received the request to be refreshed. Unlike the update API, it does not support
        `wait_for`.

        **Running update by query asynchronously**

        If the request contains `wait_for_completion=false`, Elasticsearch
        performs some preflight checks, launches the request, and returns a
        [task](https://www.elastic.co/docs/api/doc/elasticsearch/group/endpoint-tasks) you can use to cancel or get the status of the task.
        Elasticsearch creates a record of this task as a document at `.tasks/task/${taskId}`.

        **Waiting for active shards**

        `wait_for_active_shards` controls how many copies of a shard must be active
        before proceeding with the request. See [`wait_for_active_shards`](https://www.elastic.co/docs/api/doc/elasticsearch/operation/operation-create#operation-create-wait_for_active_shards)
        for details. `timeout` controls how long each write request waits for unavailable
        shards to become available. Both work exactly the way they work in the
        [Bulk API](https://www.elastic.co/docs/api/doc/elasticsearch/operation/operation-bulk). Update by query uses scrolled searches, so you can also
        specify the `scroll` parameter to control how long it keeps the search context
        alive, for example `?scroll=10m`. The default is 5 minutes.

        **Throttling update requests**

        To control the rate at which update by query issues batches of update operations, you can set `requests_per_second` to any positive decimal number.
        This pads each batch with a wait time to throttle the rate.
        Set `requests_per_second` to `-1` to turn off throttling.

        Throttling uses a wait time between batches so that the internal scroll requests can be given a timeout that takes the request padding into account.
        The padding time is the difference between the batch size divided by the `requests_per_second` and the time spent writing.
        By default the batch size is 1000, so if `requests_per_second` is set to `500`:

        ```
        target_time = 1000 / 500 per second = 2 seconds
        wait_time = target_time - write_time = 2 seconds - .5 seconds = 1.5 seconds
        ```

        Since the batch is issued as a single _bulk request, large batch sizes cause Elasticsearch to create many requests and wait before starting the next set.
        This is "bursty" instead of "smooth".

        **Slicing**

        Update by query supports sliced scroll to parallelize the update process.
        This can improve efficiency and provide a convenient way to break the request down into smaller parts.

        Setting `slices` to `auto` chooses a reasonable number for most data streams and indices.
        This setting will use one slice per shard, up to a certain limit.
        If there are multiple source data streams or indices, it will choose the number of slices based on the index or backing index with the smallest number of shards.

        Adding `slices` to `_update_by_query` just automates the manual process of creating sub-requests, which means it has some quirks:

        * You can see these requests in the tasks APIs. These sub-requests are "child" tasks of the task for the request with slices.
        * Fetching the status of the task for the request with `slices` only contains the status of completed slices.
        * These sub-requests are individually addressable for things like cancellation and rethrottling.
        * Rethrottling the request with `slices` will rethrottle the unfinished sub-request proportionally.
        * Canceling the request with slices will cancel each sub-request.
        * Due to the nature of slices each sub-request won't get a perfectly even portion of the documents. All documents will be addressed, but some slices may be larger than others. Expect larger slices to have a more even distribution.
        * Parameters like `requests_per_second` and `max_docs` on a request with slices are distributed proportionally to each sub-request. Combine that with the point above about distribution being uneven and you should conclude that using `max_docs` with `slices` might not result in exactly `max_docs` documents being updated.
        * Each sub-request gets a slightly different snapshot of the source data stream or index though these are all taken at approximately the same time.

        If you're slicing manually or otherwise tuning automatic slicing, keep in mind that:

        * Query performance is most efficient when the number of slices is equal to the number of shards in the index or backing index. If that number is large (for example, 500), choose a lower number as too many slices hurts performance. Setting slices higher than the number of shards generally does not improve efficiency and adds overhead.
        * Update performance scales linearly across available resources with the number of slices.

        Whether query or update performance dominates the runtime depends on the documents being reindexed and cluster resources.
        Refer to the linked documentation for examples of how to update documents using the `_update_by_query` API:

        ## Required authorization

        * Index privileges: `read`,`write`
      externalDocs:
        url: https://www.elastic.co/docs/reference/elasticsearch/rest-apis/update-by-query-api
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/docs-update-by-query.html
      operationId: update-by-query
      parameters:
      - in: path
        name: index
        description: |-
          A comma-separated list of data streams, indices, and aliases to search.
          It supports wildcards (`*`).
          To search all data streams or indices, omit this parameter or use `*` or `_all`.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Indices"
        style: simple
      - in: query
        name: allow_no_indices
        description: |-
          If `false`, the request returns an error if any wildcard expression, index alias, or `_all` value targets only missing or closed indices.
          This behavior applies even if the request targets other open indices.
          For example, a request targeting `foo*,bar*` returns an error if an index starts with `foo` but no index starts with `bar`.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: analyzer
        description: |-
          The analyzer to use for the query string.
          This parameter can be used only when the `q` query string parameter is specified.
        deprecated: false
        schema:
          type: string
        style: form
      - in: query
        name: analyze_wildcard
        description: |-
          If `true`, wildcard and prefix queries are analyzed.
          This parameter can be used only when the `q` query string parameter is specified.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: conflicts
        description: |+
          The preferred behavior when update by query hits version conflicts: `abort` or `proceed`.

          Supported values include:
            - `abort`: Stop reindexing if there are conflicts.
            - `proceed`: Continue reindexing even if there are conflicts.

        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Conflicts"
        style: form
      - in: query
        name: default_operator
        description: |-
          The default operator for query string query: `and` or `or`.
          This parameter can be used only when the `q` query string parameter is specified.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.query_dsl.Operator"
        style: form
      - in: query
        name: df
        description: |-
          The field to use as default where no field prefix is given in the query string.
          This parameter can be used only when the `q` query string parameter is specified.
        deprecated: false
        schema:
          type: string
        style: form
      - in: query
        name: expand_wildcards
        description: |+
          The type of index that wildcard patterns can match.
          If the request can target data streams, this argument determines whether wildcard expressions match hidden data streams.
          It supports comma-separated values, such as `open,hidden`.

          Supported values include:
            - `all`: Match any data stream or index, including hidden ones.
            - `open`: Match open, non-hidden indices. Also matches any non-hidden data stream.
            - `closed`: Match closed, non-hidden indices. Also matches any non-hidden data stream. Data streams cannot be closed.
            - `hidden`: Match hidden data streams and hidden indices. Must be combined with `open`, `closed`, or `both`.
            - `none`: Wildcard expressions are not accepted.

        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.ExpandWildcards"
        style: form
      - in: query
        name: from
        description: Skips the specified number of documents.
        deprecated: false
        schema:
          type: number
        style: form
      - in: query
        name: ignore_unavailable
        description: If `false`, the request returns an error if it targets a missing
          or closed index.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: lenient
        description: |-
          If `true`, format-based query failures (such as providing text to a numeric field) in the query string will be ignored.
          This parameter can be used only when the `q` query string parameter is specified.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: max_docs
        description: |-
          The maximum number of documents to process.
          It defaults to all documents.
          When set to a value less than or equal to `scroll_size` and `conflicts` is set to `abort`, a scroll will not be used to retrieve the results for the operation.
        deprecated: false
        schema:
          type: number
        style: form
      - in: query
        name: pipeline
        description: |-
          The ID of the pipeline to use to preprocess incoming documents.
          If the index has a default ingest pipeline specified, then setting the value to `_none` disables the default ingest pipeline for this request.
          If a final pipeline is configured it will always run, regardless of the value of this parameter.
        deprecated: false
        schema:
          type: string
        style: form
      - in: query
        name: preference
        description: |-
          The node or shard the operation should be performed on.
          It is random by default.
        deprecated: false
        schema:
          type: string
        style: form
      - in: query
        name: q
        description: A query in the Lucene query string syntax.
        deprecated: false
        schema:
          type: string
        style: form
      - in: query
        name: refresh
        description: |-
          If `true`, Elasticsearch refreshes affected shards to make the operation visible to search after the request completes.
          This is different than the update API's `refresh` parameter, which causes just the shard that received the request to be refreshed.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: request_cache
        description: |-
          If `true`, the request cache is used for this request.
          It defaults to the index-level setting.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: requests_per_second
        description: The throttle for this request in sub-requests per second.
        deprecated: false
        schema:
          type: number
        style: form
      - in: query
        name: routing
        description: A custom value used to route operations to a specific shard.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Routing"
        style: form
      - in: query
        name: scroll
        description: The period to retain the search context for scrolling.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: scroll_size
        description: The size of the scroll request that powers the operation.
        deprecated: false
        schema:
          type: number
        style: form
      - in: query
        name: search_timeout
        description: |-
          An explicit timeout for each search request.
          By default, there is no timeout.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: search_type
        description: |+
          The type of the search operation. Available options include `query_then_fetch` and `dfs_query_then_fetch`.

          Supported values include:
            - `query_then_fetch`: Documents are scored using local term and document frequencies for the shard. This is usually faster but less accurate.
            - `dfs_query_then_fetch`: Documents are scored using global term and document frequencies across all shards. This is usually slower but more accurate.

        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.SearchType"
        style: form
      - in: query
        name: slices
        description: The number of slices this task should be divided into.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Slices"
        style: form
      - in: query
        name: sort
        description: A comma-separated list of <field>:<direction> pairs.
        deprecated: false
        schema:
          type: array
          items:
            type: string
        style: form
      - in: query
        name: stats
        description: The specific `tag` of the request for logging and statistical
          purposes.
        deprecated: false
        schema:
          type: array
          items:
            type: string
        style: form
      - in: query
        name: terminate_after
        description: |-
          The maximum number of documents to collect for each shard.
          If a query reaches this limit, Elasticsearch terminates the query early.
          Elasticsearch collects documents before sorting.

          IMPORTANT: Use with caution.
          Elasticsearch applies this parameter to each shard handling the request.
          When possible, let Elasticsearch perform early termination automatically.
          Avoid specifying this parameter for requests that target data streams with backing indices across multiple data tiers.
        deprecated: false
        schema:
          type: number
        style: form
      - in: query
        name: timeout
        description: |-
          The period each update request waits for the following operations: dynamic mapping updates, waiting for active shards.
          By default, it is one minute.
          This guarantees Elasticsearch waits for at least the timeout before failing.
          The actual wait time could be longer, particularly when multiple waits occur.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: version
        description: If `true`, returns the document version as part of a hit.
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: version_type
        description: Should the document increment the version number (internal) on
          hit or not (reindex)
        deprecated: false
        schema:
          type: boolean
        style: form
      - in: query
        name: wait_for_active_shards
        description: |-
          The number of shard copies that must be active before proceeding with the operation.
          Set to `all` or any positive integer up to the total number of shards in the index (`number_of_replicas+1`).
          The `timeout` parameter controls how long each write request waits for unavailable shards to become available.
          Both work exactly the way they work in the bulk API.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.WaitForActiveShards"
        style: form
      - in: query
        name: wait_for_completion
        description: |-
          If `true`, the request blocks until the operation is complete.
          If `false`, Elasticsearch performs some preflight checks, launches the request, and returns a task ID that you can use to cancel or get the status of the task.
          Elasticsearch creates a record of this task as a document at `.tasks/task/${taskId}`.
        deprecated: false
        schema:
          type: boolean
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                max_docs:
                  description: The maximum number of documents to update.
                  type: number
                query:
                  description: The documents to update using the Query DSL.
                  allOf:
                  - "$ref": "#/components/schemas/_types.query_dsl.QueryContainer"
                script:
                  description: The script to run to update the document source or
                    metadata when updating.
                  allOf:
                  - "$ref": "#/components/schemas/_types.Script"
                slice:
                  description: Slice the request manually using the provided slice
                    ID and total number of slices.
                  allOf:
                  - "$ref": "#/components/schemas/_types.SlicedScroll"
                conflicts:
                  description: |+
                    The preferred behavior when update by query hits version conflicts: `abort` or `proceed`.

                    Supported values include:
                      - `abort`: Stop reindexing if there are conflicts.
                      - `proceed`: Continue reindexing even if there are conflicts.

                  default: abort
                  allOf:
                  - "$ref": "#/components/schemas/_types.Conflicts"
            examples:
              UpdateByQueryRequestExample1:
                summary: Update selected documents
                description: 'Run `POST my-index-000001/_update_by_query?conflicts=proceed`
                  to update documents that match a query.

                  '
                value: "{\n  \"query\": { \n    \"term\": {\n      \"user.id\": \"kimchy\"\n
                  \   }\n  }\n}"
              UpdateByQueryRequestExample2:
                summary: Update the document source
                description: 'Run `POST my-index-000001/_update_by_query` with a script
                  to update the document source. It increments the `count` field for
                  all documents with a `user.id` of `kimchy` in `my-index-000001`.

                  '
                value: |-
                  {
                    "script": {
                      "source": "ctx._source.count++",
                      "lang": "painless"
                    },
                    "query": {
                      "term": {
                        "user.id": "kimchy"
                      }
                    }
                  }
              UpdateByQueryRequestExample3:
                summary: Slice manually
                description: 'Run `POST my-index-000001/_update_by_query` to slice
                  an update by query manually. Provide a slice ID and total number
                  of slices to each request.

                  '
                value: |-
                  {
                    "slice": {
                      "id": 0,
                      "max": 2
                    },
                    "script": {
                      "source": "ctx._source['extra'] = 'test'"
                    }
                  }
              UpdateByQueryRequestExample4:
                summary: Slice automatically
                description: 'Run `POST my-index-000001/_update_by_query?refresh&slices=5`
                  to use automatic slicing. It automatically parallelizes using sliced
                  scroll to slice on `_id`.

                  '
                value: |-
                  {
                    "script": {
                      "source": "ctx._source['extra'] = 'test'"
                    }
                  }
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  batches:
                    description: The number of scroll responses pulled back by the
                      update by query.
                    type: number
                  failures:
                    description: |-
                      Array of failures if there were any unrecoverable errors during the process.
                      If this is non-empty then the request ended because of those failures.
                      Update by query is implemented using batches.
                      Any failure causes the entire process to end, but all failures in the current batch are collected into the array.
                      You can use the `conflicts` option to prevent reindex from ending when version conflicts occur.
                    type: array
                    items:
                      "$ref": "#/components/schemas/_types.BulkIndexByScrollFailure"
                  noops:
                    description: The number of documents that were ignored because
                      the script used for the update by query returned a noop value
                      for `ctx.op`.
                    type: number
                  deleted:
                    description: The number of documents that were successfully deleted.
                    type: number
                  requests_per_second:
                    description: The number of requests per second effectively run
                      during the update by query.
                    type: number
                  retries:
                    description: |-
                      The number of retries attempted by update by query.
                      `bulk` is the number of bulk actions retried.
                      `search` is the number of search actions retried.
                    allOf:
                    - "$ref": "#/components/schemas/_types.Retries"
                  slices:
                    description: Status of each slice if the update by query was sliced
                    type: array
                    items:
                      "$ref": "#/components/schemas/_types.ReindexStatus"
                  task:
                    allOf:
                    - "$ref": "#/components/schemas/_types.TaskId"
                  timed_out:
                    description: If true, some requests timed out during the update
                      by query.
                    type: boolean
                  took:
                    description: The number of milliseconds from start to end of the
                      whole operation.
                    allOf:
                    - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
                  total:
                    description: The number of documents that were successfully processed.
                    type: number
                  updated:
                    description: The number of documents that were successfully updated.
                    type: number
                  version_conflicts:
                    description: The number of version conflicts that the update by
                      query hit.
                    type: number
                  throttled:
                    allOf:
                    - "$ref": "#/components/schemas/_types.Duration"
                  throttled_millis:
                    description: The number of milliseconds the request slept to conform
                      to `requests_per_second`.
                    allOf:
                    - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
                  throttled_until:
                    allOf:
                    - "$ref": "#/components/schemas/_types.Duration"
                  throttled_until_millis:
                    description: |-
                      This field should always be equal to zero in an _update_by_query response.
                      It only has meaning when using the task API, where it indicates the next time (in milliseconds since epoch) a throttled request will be run again in order to conform to `requests_per_second`.
                    allOf:
                    - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
      x-state: Generally available; Added in 2.4.0
      x-codeSamples:
      - lang: Console
        source: "POST my-index-000001/_update_by_query?conflicts=proceed\n{\n  \"query\":
          { \n    \"term\": {\n      \"user.id\": \"kimchy\"\n    }\n  }\n}"
      - lang: Python
        source: |-
          resp = client.update_by_query(
              index="my-index-000001",
              conflicts="proceed",
              query={
                  "term": {
                      "user.id": "kimchy"
                  }
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.updateByQuery({
            index: "my-index-000001",
            conflicts: "proceed",
            query: {
              term: {
                "user.id": "kimchy",
              },
            },
          });
      - lang: Ruby
        source: |-
          response = client.update_by_query(
            index: "my-index-000001",
            conflicts: "proceed",
            body: {
              "query": {
                "term": {
                  "user.id": "kimchy"
                }
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->updateByQuery([
              "index" => "my-index-000001",
              "conflicts" => "proceed",
              "body" => [
                  "query" => [
                      "term" => [
                          "user.id" => "kimchy",
                      ],
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"query":{"term":{"user.id":"kimchy"}}}'' "$ELASTICSEARCH_URL/my-index-000001/_update_by_query?conflicts=proceed"'
      - lang: Java
        source: |
          client.updateByQuery(u -> u
              .conflicts(Conflicts.Proceed)
              .index("my-index-000001")
              .query(q -> q
                  .term(t -> t
                      .field("user.id")
                      .value(FieldValue.of("kimchy"))
                  )
              )
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_update_by_query/{task_id}/_rethrottle":
    post:
      tags:
      - document
      summary: Throttle an update by query operation
      description: |-
        Change the number of requests per second for a particular update by query operation.
        Rethrottling that speeds up the query takes effect immediately but rethrotting that slows down the query takes effect after completing the current batch to prevent scroll timeouts.
      operationId: update-by-query-rethrottle
      parameters:
      - in: path
        name: task_id
        description: The ID for the task.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Id"
        style: simple
      - in: query
        name: requests_per_second
        description: |-
          The throttle for this request in sub-requests per second.
          To turn off throttling, set it to `-1`.
        required: true
        deprecated: false
        schema:
          type: number
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  nodes:
                    type: object
                    additionalProperties:
                      "$ref": "#/components/schemas/_global.update_by_query_rethrottle.UpdateByQueryRethrottleNode"
                required:
                - nodes
      x-state: Generally available; Added in 6.5.0
      x-codeSamples:
      - lang: Console
        source: 'POST _update_by_query/r1A2WoRbTwKZ516z6NEs5A:36619/_rethrottle?requests_per_second=-1

          '
      - lang: Python
        source: |-
          resp = client.update_by_query_rethrottle(
              task_id="r1A2WoRbTwKZ516z6NEs5A:36619",
              requests_per_second="-1",
          )
      - lang: JavaScript
        source: |-
          const response = await client.updateByQueryRethrottle({
            task_id: "r1A2WoRbTwKZ516z6NEs5A:36619",
            requests_per_second: "-1",
          });
      - lang: Ruby
        source: |-
          response = client.update_by_query_rethrottle(
            task_id: "r1A2WoRbTwKZ516z6NEs5A:36619",
            requests_per_second: "-1"
          )
      - lang: PHP
        source: |-
          $resp = $client->updateByQueryRethrottle([
              "task_id" => "r1A2WoRbTwKZ516z6NEs5A:36619",
              "requests_per_second" => "-1",
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_update_by_query/r1A2WoRbTwKZ516z6NEs5A:36619/_rethrottle?requests_per_second=-1"'
      - lang: Java
        source: |
          client.updateByQueryRethrottle(u -> u
              .requestsPerSecond(-1.0F)
              .taskId("r1A2WoRbTwKZ516z6NEs5A:36619")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_watcher/watch/{watch_id}/_ack/{action_id}":
    post:
      tags:
      - watcher
      summary: 'Acknowledge a watch

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb put\">PUT</span>\n                      <span class=\"operation-path\">/_watcher/watch/{watch_id}/_ack</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_watcher/watch/{watch_id}/_ack</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb put\">PUT</span>\n                      <span class=\"operation-path\">/_watcher/watch/{watch_id}/_ack/{action_id}</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_watcher/watch/{watch_id}/_ack/{action_id}</span>\n
        \                     </div>\n                    \n\nAcknowledging a watch
        enables you to manually throttle the execution of the watch's actions.\n\nThe
        acknowledgement state of an action is stored in the `status.actions.<id>.ack.state`
        structure.\n\nIMPORTANT: If the specified watch is currently being executed,
        this API will return an error\nThe reason for this behavior is to prevent
        overwriting the watch status from a watch execution.\n\nAcknowledging an action
        throttles further executions of that action until its `ack.state` is reset
        to `awaits_successful_execution`.\nThis happens when the condition of the
        watch is not met (the condition evaluates to false).\nTo demonstrate how throttling
        works in practice and how it can be configured for individual actions within
        a watch, refer to External documentation.\n\n## Required authorization\n\n*
        Cluster privileges: `manage_watcher`\n"
      externalDocs:
        url: https://www.elastic.co/docs/explore-analyze/alerts-cases/watcher/actions#example
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/watcher-api-ack-watch.html
      operationId: watcher-ack-watch
      parameters:
      - "$ref": "#/components/parameters/watcher.ack_watch-watch_id"
      - "$ref": "#/components/parameters/watcher.ack_watch-action_id"
      responses:
        '200':
          "$ref": "#/components/responses/watcher.ack_watch-200"
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'POST _watcher/watch/my_watch/_ack

          '
      - lang: Python
        source: |-
          resp = client.watcher.ack_watch(
              watch_id="my_watch",
          )
      - lang: JavaScript
        source: |-
          const response = await client.watcher.ackWatch({
            watch_id: "my_watch",
          });
      - lang: Ruby
        source: |-
          response = client.watcher.ack_watch(
            watch_id: "my_watch"
          )
      - lang: PHP
        source: |-
          $resp = $client->watcher()->ackWatch([
              "watch_id" => "my_watch",
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_watcher/watch/my_watch/_ack"'
      - lang: Java
        source: |
          client.watcher().ackWatch(a -> a
              .watchId("my_watch")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_watcher/watch/{watch_id}/_activate":
    post:
      tags:
      - watcher
      summary: 'Activate a watch

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb put\">PUT</span>\n                      <span class=\"operation-path\">/_watcher/watch/{watch_id}/_activate</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_watcher/watch/{watch_id}/_activate</span>\n
        \                     </div>\n                    \n\nA watch can be either
        active or inactive.\n\n## Required authorization\n\n* Cluster privileges:
        `manage_watcher`\n"
      externalDocs:
        url: https://www.elastic.co/docs/explore-analyze/alerts-cases/watcher/how-watcher-works
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/watcher-api-activate-watch.html
      operationId: watcher-activate-watch
      parameters:
      - "$ref": "#/components/parameters/watcher.activate_watch-watch_id"
      responses:
        '200':
          "$ref": "#/components/responses/watcher.activate_watch-200"
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'PUT _watcher/watch/my_watch/_activate

          '
      - lang: Python
        source: |-
          resp = client.watcher.activate_watch(
              watch_id="my_watch",
          )
      - lang: JavaScript
        source: |-
          const response = await client.watcher.activateWatch({
            watch_id: "my_watch",
          });
      - lang: Ruby
        source: |-
          response = client.watcher.activate_watch(
            watch_id: "my_watch"
          )
      - lang: PHP
        source: |-
          $resp = $client->watcher()->activateWatch([
              "watch_id" => "my_watch",
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_watcher/watch/my_watch/_activate"'
      - lang: Java
        source: |
          client.watcher().activateWatch(a -> a
              .watchId("my_watch")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_watcher/watch/{watch_id}/_deactivate":
    post:
      tags:
      - watcher
      summary: 'Deactivate a watch

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb put\">PUT</span>\n                      <span class=\"operation-path\">/_watcher/watch/{watch_id}/_deactivate</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_watcher/watch/{watch_id}/_deactivate</span>\n
        \                     </div>\n                    \n\nA watch can be either
        active or inactive.\n\n## Required authorization\n\n* Cluster privileges:
        `manage_watcher`\n"
      externalDocs:
        url: https://www.elastic.co/docs/explore-analyze/alerts-cases/watcher/how-watcher-works
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/watcher-api-deactivate-watch.html
      operationId: watcher-deactivate-watch
      parameters:
      - "$ref": "#/components/parameters/watcher.deactivate_watch-watch_id"
      responses:
        '200':
          "$ref": "#/components/responses/watcher.deactivate_watch-200"
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'PUT _watcher/watch/my_watch/_deactivate

          '
      - lang: Python
        source: |-
          resp = client.watcher.deactivate_watch(
              watch_id="my_watch",
          )
      - lang: JavaScript
        source: |-
          const response = await client.watcher.deactivateWatch({
            watch_id: "my_watch",
          });
      - lang: Ruby
        source: |-
          response = client.watcher.deactivate_watch(
            watch_id: "my_watch"
          )
      - lang: PHP
        source: |-
          $resp = $client->watcher()->deactivateWatch([
              "watch_id" => "my_watch",
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_watcher/watch/my_watch/_deactivate"'
      - lang: Java
        source: |
          client.watcher().deactivateWatch(d -> d
              .watchId("my_watch")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_watcher/watch/{id}":
    get:
      tags:
      - watcher
      summary: Get a watch
      description: |2


        ## Required authorization

        * Cluster privileges: `monitor_watcher`
      operationId: watcher-get-watch
      parameters:
      - in: path
        name: id
        description: The watch identifier.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Name"
        style: simple
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  found:
                    type: boolean
                  _id:
                    allOf:
                    - "$ref": "#/components/schemas/_types.Id"
                  status:
                    allOf:
                    - "$ref": "#/components/schemas/watcher._types.WatchStatus"
                  watch:
                    allOf:
                    - "$ref": "#/components/schemas/watcher._types.Watch"
                  _primary_term:
                    type: number
                  _seq_no:
                    allOf:
                    - "$ref": "#/components/schemas/_types.SequenceNumber"
                  _version:
                    allOf:
                    - "$ref": "#/components/schemas/_types.VersionNumber"
                required:
                - found
                - _id
              examples:
                GetWatchResponseExample1:
                  description: A successful response from `GET _watcher/watch/my_watch`.
                  value: "{\n  \"found\": true,\n  \"_id\": \"my_watch\",\n  \"_seq_no\":
                    0,\n  \"_primary_term\": 1,\n  \"_version\": 1,\n  \"status\":
                    { \n    \"version\": 1,\n    \"state\": {\n      \"active\": true,\n
                    \     \"timestamp\": \"2015-05-26T18:21:08.630Z\"\n    },\n    \"actions\":
                    {\n      \"test_index\": {\n        \"ack\": {\n          \"timestamp\":
                    \"2015-05-26T18:21:08.630Z\",\n          \"state\": \"awaits_successful_execution\"\n
                    \       }\n      }\n    }\n  },\n  \"watch\": {\n    \"input\":
                    {\n      \"simple\": {\n        \"payload\": {\n          \"send\":
                    \"yes\"\n        }\n      }\n    },\n    \"condition\": {\n      \"always\":
                    {}\n    },\n    \"trigger\": {\n      \"schedule\": {\n        \"hourly\":
                    {\n          \"minute\": [0, 5]\n        }\n      }\n    },\n
                    \   \"actions\": {\n      \"test_index\": {\n        \"index\":
                    {\n          \"index\": \"test\"\n        }\n      }\n    }\n
                    \ }\n}"
      x-state: Generally available; Added in 5.6.0
      x-codeSamples:
      - lang: Console
        source: 'GET _watcher/watch/my_watch

          '
      - lang: Python
        source: |-
          resp = client.watcher.get_watch(
              id="my_watch",
          )
      - lang: JavaScript
        source: |-
          const response = await client.watcher.getWatch({
            id: "my_watch",
          });
      - lang: Ruby
        source: |-
          response = client.watcher.get_watch(
            id: "my_watch"
          )
      - lang: PHP
        source: |-
          $resp = $client->watcher()->getWatch([
              "id" => "my_watch",
          ]);
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_watcher/watch/my_watch"'
      - lang: Java
        source: |
          client.watcher().getWatch(g -> g
              .id("my_watch")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    post:
      tags:
      - watcher
      summary: 'Create or update a watch

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb put\">PUT</span>\n                      <span class=\"operation-path\">/_watcher/watch/{id}</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_watcher/watch/{id}</span>\n
        \                     </div>\n                    \n\nWhen a watch is registered,
        a new document that represents the watch is added to the `.watches` index
        and its trigger is immediately registered with the relevant trigger engine.\nTypically
        for the `schedule` trigger, the scheduler is the trigger engine.\n\nIMPORTANT:
        You must use Kibana or this API to create a watch.\nDo not add a watch directly
        to the `.watches` index by using the Elasticsearch index API.\nIf Elasticsearch
        security features are enabled, do not give users write privileges on the `.watches`
        index.\n\nWhen you add a watch you can also define its initial active state
        by setting the *active* parameter.\n\nWhen Elasticsearch security features
        are enabled, your watch can index or search only on indices for which the
        user that stored the watch has privileges.\nIf the user is able to read index
        `a`, but not index `b`, the same will apply when the watch runs.\n\n## Required
        authorization\n\n* Cluster privileges: `manage_watcher`\n"
      operationId: watcher-put-watch
      parameters:
      - "$ref": "#/components/parameters/watcher.put_watch-id"
      - "$ref": "#/components/parameters/watcher.put_watch-active"
      - "$ref": "#/components/parameters/watcher.put_watch-if_primary_term"
      - "$ref": "#/components/parameters/watcher.put_watch-if_seq_no"
      - "$ref": "#/components/parameters/watcher.put_watch-version"
      requestBody:
        "$ref": "#/components/requestBodies/watcher.put_watch"
      responses:
        '200':
          "$ref": "#/components/responses/watcher.put_watch-200"
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: |-
          PUT _watcher/watch/my-watch
          {
            "trigger" : {
              "schedule" : { "cron" : "0 0/1 * * * ?" }
            },
            "input" : {
              "search" : {
                "request" : {
                  "indices" : [
                    "logstash*"
                  ],
                  "body" : {
                    "query" : {
                      "bool" : {
                        "must" : {
                          "match": {
                            "response": 404
                          }
                        },
                        "filter" : {
                          "range": {
                            "@timestamp": {
                              "from": "{{ctx.trigger.scheduled_time}}||-5m",
                              "to": "{{ctx.trigger.triggered_time}}"
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            },
            "condition" : {
              "compare" : { "ctx.payload.hits.total" : { "gt" : 0 }}
            },
            "actions" : {
              "email_admin" : {
                "email" : {
                  "to" : "admin@domain.host.com",
                  "subject" : "404 recently encountered"
                }
              }
            }
          }
      - lang: Python
        source: |-
          resp = client.watcher.put_watch(
              id="my-watch",
              trigger={
                  "schedule": {
                      "cron": "0 0/1 * * * ?"
                  }
              },
              input={
                  "search": {
                      "request": {
                          "indices": [
                              "logstash*"
                          ],
                          "body": {
                              "query": {
                                  "bool": {
                                      "must": {
                                          "match": {
                                              "response": 404
                                          }
                                      },
                                      "filter": {
                                          "range": {
                                              "@timestamp": {
                                                  "from": "{{ctx.trigger.scheduled_time}}||-5m",
                                                  "to": "{{ctx.trigger.triggered_time}}"
                                              }
                                          }
                                      }
                                  }
                              }
                          }
                      }
                  }
              },
              condition={
                  "compare": {
                      "ctx.payload.hits.total": {
                          "gt": 0
                      }
                  }
              },
              actions={
                  "email_admin": {
                      "email": {
                          "to": "admin@domain.host.com",
                          "subject": "404 recently encountered"
                      }
                  }
              },
          )
      - lang: JavaScript
        source: |-
          const response = await client.watcher.putWatch({
            id: "my-watch",
            trigger: {
              schedule: {
                cron: "0 0/1 * * * ?",
              },
            },
            input: {
              search: {
                request: {
                  indices: ["logstash*"],
                  body: {
                    query: {
                      bool: {
                        must: {
                          match: {
                            response: 404,
                          },
                        },
                        filter: {
                          range: {
                            "@timestamp": {
                              from: "{{ctx.trigger.scheduled_time}}||-5m",
                              to: "{{ctx.trigger.triggered_time}}",
                            },
                          },
                        },
                      },
                    },
                  },
                },
              },
            },
            condition: {
              compare: {
                "ctx.payload.hits.total": {
                  gt: 0,
                },
              },
            },
            actions: {
              email_admin: {
                email: {
                  to: "admin@domain.host.com",
                  subject: "404 recently encountered",
                },
              },
            },
          });
      - lang: Ruby
        source: |-
          response = client.watcher.put_watch(
            id: "my-watch",
            body: {
              "trigger": {
                "schedule": {
                  "cron": "0 0/1 * * * ?"
                }
              },
              "input": {
                "search": {
                  "request": {
                    "indices": [
                      "logstash*"
                    ],
                    "body": {
                      "query": {
                        "bool": {
                          "must": {
                            "match": {
                              "response": 404
                            }
                          },
                          "filter": {
                            "range": {
                              "@timestamp": {
                                "from": "{{ctx.trigger.scheduled_time}}||-5m",
                                "to": "{{ctx.trigger.triggered_time}}"
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              },
              "condition": {
                "compare": {
                  "ctx.payload.hits.total": {
                    "gt": 0
                  }
                }
              },
              "actions": {
                "email_admin": {
                  "email": {
                    "to": "admin@domain.host.com",
                    "subject": "404 recently encountered"
                  }
                }
              }
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->watcher()->putWatch([
              "id" => "my-watch",
              "body" => [
                  "trigger" => [
                      "schedule" => [
                          "cron" => "0 0/1 * * * ?",
                      ],
                  ],
                  "input" => [
                      "search" => [
                          "request" => [
                              "indices" => array(
                                  "logstash*",
                              ),
                              "body" => [
                                  "query" => [
                                      "bool" => [
                                          "must" => [
                                              "match" => [
                                                  "response" => 404,
                                              ],
                                          ],
                                          "filter" => [
                                              "range" => [
                                                  "@timestamp" => [
                                                      "from" => "{{ctx.trigger.scheduled_time}}||-5m",
                                                      "to" => "{{ctx.trigger.triggered_time}}",
                                                  ],
                                              ],
                                          ],
                                      ],
                                  ],
                              ],
                          ],
                      ],
                  ],
                  "condition" => [
                      "compare" => [
                          "ctx.payload.hits.total" => [
                              "gt" => 0,
                          ],
                      ],
                  ],
                  "actions" => [
                      "email_admin" => [
                          "email" => [
                              "to" => "admin@domain.host.com",
                              "subject" => "404 recently encountered",
                          ],
                      ],
                  ],
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"trigger":{"schedule":{"cron":"0 0/1 * * * ?"}},"input":{"search":{"request":{"indices":["logstash*"],"body":{"query":{"bool":{"must":{"match":{"response":404}},"filter":{"range":{"@timestamp":{"from":"{{ctx.trigger.scheduled_time}}||-5m","to":"{{ctx.trigger.triggered_time}}"}}}}}}}}},"condition":{"compare":{"ctx.payload.hits.total":{"gt":0}}},"actions":{"email_admin":{"email":{"to":"admin@domain.host.com","subject":"404
          recently encountered"}}}}'' "$ELASTICSEARCH_URL/_watcher/watch/my-watch"'
      - lang: Java
        source: |
          client.watcher().putWatch(p -> p
              .actions("email_admin", a -> a
                  .email(e -> e
                      .subject("404 recently encountered")
                      .to("admin@domain.host.com")
                  )
              )
              .condition(c -> c
                  .compare(NamedValue.of("ctx.payload.hits.total",Pair.of(ConditionOp.Gt,FieldValue.of(0))))
              )
              .id("my-watch")
              .input(i -> i
                  .search(s -> s
                      .request(r -> r
                          .body(b -> b
                              .query(q -> q
                                  .bool(bo -> bo
                                      .filter(f -> f
                                          .range(ra -> ra
                                              .untyped(u -> u
                                                  .field("@timestamp")
                                              )
                                          )
                                      )
                                      .must(m -> m
                                          .match(ma -> ma
                                              .field("response")
                                              .query(FieldValue.of(404))
                                          )
                                      )
                                  )
                              )
                          )
                          .indices("logstash*")
                      )
                  )
              )
              .trigger(t -> t
                  .schedule(sc -> sc
                      .cron("0 0/1 * * * ?")
                  )
              )
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    delete:
      tags:
      - watcher
      summary: Delete a watch
      description: |
        When the watch is removed, the document representing the watch in the `.watches` index is gone and it will never be run again.

        Deleting a watch does not delete any watch execution records related to this watch from the watch history.

        IMPORTANT: Deleting a watch must be done by using only this API.
        Do not delete the watch directly from the `.watches` index using the Elasticsearch delete document API
        When Elasticsearch security features are enabled, make sure no write privileges are granted to anyone for the `.watches` index.

        ## Required authorization

        * Cluster privileges: `manage_watcher`
      operationId: watcher-delete-watch
      parameters:
      - in: path
        name: id
        description: The watch identifier.
        required: true
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Name"
        style: simple
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  found:
                    type: boolean
                  _id:
                    allOf:
                    - "$ref": "#/components/schemas/_types.Id"
                  _version:
                    allOf:
                    - "$ref": "#/components/schemas/_types.VersionNumber"
                required:
                - found
                - _id
                - _version
              examples:
                DeleteWatchResponseExample1:
                  description: A successful response from `DELETE _watcher/watch/my_watch`.
                  value: |-
                    {
                      "found": true,
                      "_id": "my_watch",
                      "_version": 2
                    }
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'DELETE _watcher/watch/my_watch

          '
      - lang: Python
        source: |-
          resp = client.watcher.delete_watch(
              id="my_watch",
          )
      - lang: JavaScript
        source: |-
          const response = await client.watcher.deleteWatch({
            id: "my_watch",
          });
      - lang: Ruby
        source: |-
          response = client.watcher.delete_watch(
            id: "my_watch"
          )
      - lang: PHP
        source: |-
          $resp = $client->watcher()->deleteWatch([
              "id" => "my_watch",
          ]);
      - lang: curl
        source: 'curl -X DELETE -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_watcher/watch/my_watch"'
      - lang: Java
        source: |
          client.watcher().deleteWatch(d -> d
              .id("my_watch")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_watcher/watch/{id}/_execute":
    post:
      tags:
      - watcher
      summary: 'Run a watch

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb put\">PUT</span>\n                      <span class=\"operation-path\">/_watcher/watch/_execute</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_watcher/watch/_execute</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb put\">PUT</span>\n                      <span class=\"operation-path\">/_watcher/watch/{id}/_execute</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_watcher/watch/{id}/_execute</span>\n
        \                     </div>\n                    \n\nThis API can be used
        to force execution of the watch outside of its triggering logic or to simulate
        the watch execution for debugging purposes.\n\nFor testing and debugging purposes,
        you also have fine-grained control on how the watch runs.\nYou can run the
        watch without running all of its actions or alternatively by simulating them.\nYou
        can also force execution by ignoring the watch condition and control whether
        a watch record would be written to the watch history after it runs.\n\nYou
        can use the run watch API to run watches that are not yet registered by specifying
        the watch definition inline.\nThis serves as great tool for testing and debugging
        your watches prior to adding them to Watcher.\n\nWhen Elasticsearch security
        features are enabled on your cluster, watches are run with the privileges
        of the user that stored the watches.\nIf your user is allowed to read index
        `a`, but not index `b`, then the exact same set of rules will apply during
        execution of a watch.\n\nWhen using the run watch API, the authorization data
        of the user that called the API will be used as a base, instead of the information
        who stored the watch.\nRefer to the external documentation for examples of
        watch execution requests, including existing, customized, and inline watches.\n\n##
        Required authorization\n\n* Cluster privileges: `manage_watcher`\n"
      externalDocs:
        url: https://www.elastic.co/docs/explore-analyze/alerts-cases/watcher/execute-watch
        x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/watcher-api-execute-watch.html
      operationId: watcher-execute-watch
      parameters:
      - "$ref": "#/components/parameters/watcher.execute_watch-id"
      - "$ref": "#/components/parameters/watcher.execute_watch-debug"
      requestBody:
        "$ref": "#/components/requestBodies/watcher.execute_watch"
      responses:
        '200':
          "$ref": "#/components/responses/watcher.execute_watch-200"
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: "POST _watcher/watch/my_watch/_execute\n{\n  \"trigger_data\" : {
          \n    \"triggered_time\" : \"now\",\n    \"scheduled_time\" : \"now\"\n
          \ },\n  \"alternative_input\" : { \n    \"foo\" : \"bar\"\n  },\n  \"ignore_condition\"
          : true, \n  \"action_modes\" : {\n    \"my-action\" : \"force_simulate\"
          \n  },\n  \"record_execution\" : true \n}"
      - lang: Python
        source: |-
          resp = client.watcher.execute_watch(
              id="my_watch",
              trigger_data={
                  "triggered_time": "now",
                  "scheduled_time": "now"
              },
              alternative_input={
                  "foo": "bar"
              },
              ignore_condition=True,
              action_modes={
                  "my-action": "force_simulate"
              },
              record_execution=True,
          )
      - lang: JavaScript
        source: |-
          const response = await client.watcher.executeWatch({
            id: "my_watch",
            trigger_data: {
              triggered_time: "now",
              scheduled_time: "now",
            },
            alternative_input: {
              foo: "bar",
            },
            ignore_condition: true,
            action_modes: {
              "my-action": "force_simulate",
            },
            record_execution: true,
          });
      - lang: Ruby
        source: |-
          response = client.watcher.execute_watch(
            id: "my_watch",
            body: {
              "trigger_data": {
                "triggered_time": "now",
                "scheduled_time": "now"
              },
              "alternative_input": {
                "foo": "bar"
              },
              "ignore_condition": true,
              "action_modes": {
                "my-action": "force_simulate"
              },
              "record_execution": true
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->watcher()->executeWatch([
              "id" => "my_watch",
              "body" => [
                  "trigger_data" => [
                      "triggered_time" => "now",
                      "scheduled_time" => "now",
                  ],
                  "alternative_input" => [
                      "foo" => "bar",
                  ],
                  "ignore_condition" => true,
                  "action_modes" => [
                      "my-action" => "force_simulate",
                  ],
                  "record_execution" => true,
              ],
          ]);
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"trigger_data":{"triggered_time":"now","scheduled_time":"now"},"alternative_input":{"foo":"bar"},"ignore_condition":true,"action_modes":{"my-action":"force_simulate"},"record_execution":true}''
          "$ELASTICSEARCH_URL/_watcher/watch/my_watch/_execute"'
      - lang: Java
        source: |
          client.watcher().executeWatch(e -> e
              .actionModes("my-action", ActionExecutionMode.ForceSimulate)
              .alternativeInput("foo", JsonData.fromJson("\"bar\""))
              .id("my_watch")
              .ignoreCondition(true)
              .recordExecution(true)
              .triggerData(t -> t
                  .scheduledTime(DateTime.of("now"))
                  .triggeredTime(DateTime.of("now"))
              )
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_watcher/settings":
    get:
      tags:
      - watcher
      summary: Get Watcher index settings
      description: |-
        Get settings for the Watcher internal index (`.watches`).
        Only a subset of settings are shown, for example `index.auto_expand_replicas` and `index.number_of_replicas`.
      operationId: watcher-get-settings
      parameters:
      - in: query
        name: master_timeout
        description: |-
          The period to wait for a connection to the master node.
          If no response is received before the timeout expires, the request fails and returns an error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  index:
                    allOf:
                    - "$ref": "#/components/schemas/indices._types.IndexSettings"
                required:
                - index
              examples:
                WatcherGetSettingsResponseExample1:
                  description: A successful response with two index settings.
                  value: |-
                    {
                      "index": {
                        "auto_expand_replicas": "0-4",
                        "number_of_replicas": 0
                      }
                    }
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'GET /_watcher/settings

          '
      - lang: Python
        source: resp = client.watcher.get_settings()
      - lang: JavaScript
        source: const response = await client.watcher.getSettings();
      - lang: Ruby
        source: response = client.watcher.get_settings
      - lang: PHP
        source: "$resp = $client->watcher()->getSettings();"
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_watcher/settings"'
      - lang: Java
        source: 'client.watcher().getSettings(g -> g);

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    put:
      tags:
      - watcher
      summary: Update Watcher index settings
      description: |
        Update settings for the Watcher internal index (`.watches`).
        Only a subset of settings can be modified.
        This includes `index.auto_expand_replicas`, `index.number_of_replicas`, `index.routing.allocation.exclude.*`,
        `index.routing.allocation.include.*` and `index.routing.allocation.require.*`.
        Modification of `index.routing.allocation.include._tier_preference` is an exception and is not allowed as the
        Watcher shards must always be in the `data_content` tier.

        ## Required authorization

        * Cluster privileges: `manage_watcher`
      operationId: watcher-update-settings
      parameters:
      - in: query
        name: master_timeout
        description: |-
          The period to wait for a connection to the master node.
          If no response is received before the timeout expires, the request fails and returns an error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      - in: query
        name: timeout
        description: |-
          The period to wait for a response.
          If no response is received before the timeout expires, the request fails and returns an error.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                index.auto_expand_replicas:
                  type: string
                index.number_of_replicas:
                  type: number
            examples:
              WatcherUpdateSettingsRequestExample1:
                value: |-
                  {
                    "index.auto_expand_replicas": "0-4"
                  }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  acknowledged:
                    type: boolean
                required:
                - acknowledged
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: |-
          PUT /_watcher/settings
          {
            "index.auto_expand_replicas": "0-4"
          }
      - lang: Python
        source: |-
          resp = client.watcher.update_settings(
              index.auto_expand_replicas="0-4",
          )
      - lang: JavaScript
        source: |-
          const response = await client.watcher.updateSettings({
            "index.auto_expand_replicas": "0-4",
          });
      - lang: Ruby
        source: |-
          response = client.watcher.update_settings(
            body: {
              "index.auto_expand_replicas": "0-4"
            }
          )
      - lang: PHP
        source: |-
          $resp = $client->watcher()->updateSettings([
              "body" => [
                  "index.auto_expand_replicas" => "0-4",
              ],
          ]);
      - lang: curl
        source: 'curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type:
          application/json" -d ''{"index.auto_expand_replicas":"0-4"}'' "$ELASTICSEARCH_URL/_watcher/settings"'
      - lang: Java
        source: |
          client.watcher().updateSettings(u -> u
              .indexAutoExpandReplicas("0-4")
          );
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_watcher/_query/watches":
    post:
      tags:
      - watcher
      summary: 'Query watches

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_watcher/_query/watches</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb post\">POST</span>\n                      <span class=\"operation-path\">/_watcher/_query/watches</span>\n
        \                     </div>\n                    \n\nGet all registered watches
        in a paginated manner and optionally filter watches by a query.\n\nNote that
        only the `_id` and `metadata.*` fields are queryable or sortable.\n\n## Required
        authorization\n\n* Cluster privileges: `monitor_watcher`\n"
      operationId: watcher-query-watches
      requestBody:
        "$ref": "#/components/requestBodies/watcher.query_watches"
      responses:
        '200':
          "$ref": "#/components/responses/watcher.query_watches-200"
      x-state: Generally available; Added in 7.11.0
      x-codeSamples:
      - lang: Console
        source: 'GET /_watcher/_query/watches

          '
      - lang: Python
        source: resp = client.watcher.query_watches()
      - lang: JavaScript
        source: const response = await client.watcher.queryWatches();
      - lang: Ruby
        source: response = client.watcher.query_watches
      - lang: PHP
        source: "$resp = $client->watcher()->queryWatches();"
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_watcher/_query/watches"'
      - lang: Java
        source: 'client.watcher().queryWatches(q -> q);

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_watcher/_start":
    post:
      tags:
      - watcher
      summary: Start the watch service
      description: |
        Start the Watcher service if it is not already running.

        ## Required authorization

        * Cluster privileges: `manage_watcher`
      operationId: watcher-start
      parameters:
      - in: query
        name: master_timeout
        description: Period to wait for a connection to the master node.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
              examples:
                WatcherStartResponseExample1:
                  description: A successful response from `POST _watcher/_start`.
                  value: |-
                    {
                      "acknowledged": true
                    }
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'POST _watcher/_start

          '
      - lang: Python
        source: resp = client.watcher.start()
      - lang: JavaScript
        source: const response = await client.watcher.start();
      - lang: Ruby
        source: response = client.watcher.start
      - lang: PHP
        source: "$resp = $client->watcher()->start();"
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_watcher/_start"'
      - lang: Java
        source: 'client.watcher().start(s -> s);

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_watcher/stats/{metric}":
    get:
      tags:
      - watcher
      summary: 'Get Watcher statistics

        '
      description: "**All methods and paths for this operation:**\n\n<div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_watcher/stats</span>\n
        \                     </div>\n                    <div>\n                      <span
        class=\"operation-verb get\">GET</span>\n                      <span class=\"operation-path\">/_watcher/stats/{metric}</span>\n
        \                     </div>\n                    \n\nThis API always returns
        basic metrics.\nYou retrieve more metrics by using the metric parameter.\n\n##
        Required authorization\n\n* Cluster privileges: `monitor_watcher`\n"
      operationId: watcher-stats
      parameters:
      - "$ref": "#/components/parameters/watcher.stats-metric"
      - "$ref": "#/components/parameters/watcher.stats-emit_stacktraces"
      - "$ref": "#/components/parameters/watcher.stats-metric_"
      responses:
        '200':
          "$ref": "#/components/responses/watcher.stats-200"
      x-state: Generally available; Added in 5.5.0
      x-codeSamples:
      - lang: Console
        source: 'GET _watcher/stats

          '
      - lang: Python
        source: resp = client.watcher.stats()
      - lang: JavaScript
        source: const response = await client.watcher.stats();
      - lang: Ruby
        source: response = client.watcher.stats
      - lang: PHP
        source: "$resp = $client->watcher()->stats();"
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_watcher/stats"'
      - lang: Java
        source: 'client.watcher().stats(s -> s);

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_watcher/_stop":
    post:
      tags:
      - watcher
      summary: Stop the watch service
      description: |
        Stop the Watcher service if it is running.

        ## Required authorization

        * Cluster privileges: `manage_watcher`
      operationId: watcher-stop
      parameters:
      - in: query
        name: master_timeout
        description: |-
          The period to wait for the master node.
          If the master node is not available before the timeout expires, the request fails and returns an error.
          To indicate that the request should never timeout, set it to `-1`.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
              examples:
                WatcherStopResponseExample1:
                  description: A successful response from `POST _watcher/_stop`.
                  value: |-
                    {
                      "acknowledged": true
                    }
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'POST _watcher/_stop

          '
      - lang: Python
        source: resp = client.watcher.stop()
      - lang: JavaScript
        source: const response = await client.watcher.stop();
      - lang: Ruby
        source: response = client.watcher.stop
      - lang: PHP
        source: "$resp = $client->watcher()->stop();"
      - lang: curl
        source: 'curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_watcher/_stop"'
      - lang: Java
        source: 'client.watcher().stop(s -> s);

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_xpack":
    get:
      tags:
      - xpack
      summary: Get information
      description: |
        The information provided by the API includes:

        * Build information including the build number and timestamp.
        * License information about the currently installed license.
        * Feature information for the features that are currently enabled and available under the current license.

        ## Required authorization

        * Cluster privileges: `monitor`
      operationId: xpack-info
      parameters:
      - in: query
        name: categories
        description: |-
          A comma-separated list of the information categories to include in the response.
          For example, `build,license,features`.
        deprecated: false
        schema:
          type: array
          items:
            "$ref": "#/components/schemas/xpack.info.XPackCategory"
        style: form
      - in: query
        name: accept_enterprise
        description: If used, this otherwise ignored parameter must be set to true
        deprecated: true
        schema:
          type: boolean
        style: form
      - in: query
        name: human
        description: |-
          Defines whether additional human-readable information is included in the response.
          In particular, it adds descriptions and a tag line.
        deprecated: false
        schema:
          type: boolean
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  build:
                    allOf:
                    - "$ref": "#/components/schemas/xpack.info.BuildInformation"
                  features:
                    allOf:
                    - "$ref": "#/components/schemas/xpack.info.Features"
                  license:
                    allOf:
                    - "$ref": "#/components/schemas/xpack.info.MinimalLicenseInformation"
                  tagline:
                    type: string
                required:
                - build
                - features
                - license
                - tagline
              examples:
                XPackInfoResponseExample1:
                  description: A successful response from `GET /_xpack`.
                  value: |-
                    {
                      "build" : {
                          "hash" : "2798b1a3ce779b3611bb53a0082d4d741e4d3168",
                          "date" : "2015-04-07T13:34:42Z"
                      },
                      "license" : {
                          "uid" : "893361dc-9749-4997-93cb-xxx",
                          "type" : "trial",
                          "mode" : "trial",
                          "status" : "active",
                          "expiry_date_in_millis" : 1542665112332
                      },
                      "features" : {
                          "ccr" : {
                            "available" : true,
                            "enabled" : true
                          },
                        "aggregate_metric" : {
                              "available" : true,
                              "enabled" : true
                          },
                          "analytics" : {
                              "available" : true,
                              "enabled" : true
                          },
                          "archive" : {
                              "available" : true,
                              "enabled" : true
                          },
                          "enrich" : {
                              "available" : true,
                              "enabled" : true
                          },
                          "graph" : {
                            "available" : true,
                            "enabled" : true
                          },
                          "ilm" : {
                            "available" : true,
                            "enabled" : true
                          },
                          "logstash" : {
                            "available" : true,
                            "enabled" : true
                          },
                          "ml" : {
                            "available" : true,
                            "enabled" : true
                          },
                          "esql" : {
                            "available" : true,
                            "enabled" : true
                          },
                          "monitoring" : {
                            "available" : true,
                            "enabled" : true
                          },
                          "rollup": {
                            "available": true,
                            "enabled": true
                          },
                          "searchable_snapshots" : {
                            "available" : true,
                            "enabled" : true
                          },
                          "security" : {
                            "available" : true,
                            "enabled" : true
                          },
                          "slm" : {
                            "available" : true,
                            "enabled" : true
                          },
                          "spatial" : {
                            "available" : true,
                            "enabled" : true
                          },
                          "eql" : {
                            "available" : true,
                            "enabled" : true
                          },
                          "sql" : {
                            "available" : true,
                            "enabled" : true
                          },
                          "transform" : {
                            "available" : true,
                            "enabled" : true
                          },
                          "voting_only" : {
                            "available" : true,
                            "enabled" : true
                          },
                          "watcher" : {
                            "available" : true,
                            "enabled" : true
                          },
                          "data_streams" : {
                            "available" : true,
                            "enabled" : true
                          },
                          "data_tiers" : {
                            "available" : true,
                            "enabled" : true
                          },
                          "enterprise_search": {
                            "available": true,
                            "enabled": true
                          },
                          "universal_profiling": {
                            "available": true,
                            "enabled": true
                          },
                          "logsdb": {
                            "available": true,
                            "enabled": false
                          }
                      },
                      "tagline" : "You know, for X"
                    }
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'GET /_xpack

          '
      - lang: Python
        source: resp = client.xpack.info()
      - lang: JavaScript
        source: const response = await client.xpack.info();
      - lang: Ruby
        source: response = client.xpack.info
      - lang: PHP
        source: "$resp = $client->xpack()->info();"
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_xpack"'
      - lang: Java
        source: 'client.xpack().info(i -> i);

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  "/_xpack/usage":
    get:
      tags:
      - xpack
      summary: Get usage information
      description: |
        Get information about the features that are currently enabled and available under the current license.
        The API also provides some usage statistics.

        ## Required authorization

        * Cluster privileges: `monitor`
      operationId: xpack-usage
      parameters:
      - in: query
        name: master_timeout
        description: |-
          The period to wait for a connection to the master node.
          If no response is received before the timeout expires, the request fails and returns an error.
          To indicate that the request should never timeout, set it to `-1`.
        deprecated: false
        schema:
          "$ref": "#/components/schemas/_types.Duration"
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  aggregate_metric:
                    allOf:
                    - "$ref": "#/components/schemas/xpack.usage.Base"
                  analytics:
                    allOf:
                    - "$ref": "#/components/schemas/xpack.usage.Analytics"
                  archive:
                    x-state: Generally available; Added in 8.2.0
                    allOf:
                    - "$ref": "#/components/schemas/xpack.usage.Archive"
                  watcher:
                    allOf:
                    - "$ref": "#/components/schemas/xpack.usage.Watcher"
                  ccr:
                    allOf:
                    - "$ref": "#/components/schemas/xpack.usage.Ccr"
                  data_frame:
                    allOf:
                    - "$ref": "#/components/schemas/xpack.usage.Base"
                  data_science:
                    allOf:
                    - "$ref": "#/components/schemas/xpack.usage.Base"
                  data_streams:
                    allOf:
                    - "$ref": "#/components/schemas/xpack.usage.DataStreams"
                  data_tiers:
                    allOf:
                    - "$ref": "#/components/schemas/xpack.usage.DataTiers"
                  enrich:
                    allOf:
                    - "$ref": "#/components/schemas/xpack.usage.Base"
                  eql:
                    allOf:
                    - "$ref": "#/components/schemas/xpack.usage.Eql"
                  flattened:
                    allOf:
                    - "$ref": "#/components/schemas/xpack.usage.Flattened"
                  graph:
                    allOf:
                    - "$ref": "#/components/schemas/xpack.usage.Base"
                  gpu_vector_indexing:
                    x-state: Generally available; Added in 9.3.2
                    allOf:
                    - "$ref": "#/components/schemas/xpack.usage.GpuVectorIndexing"
                  health_api:
                    allOf:
                    - "$ref": "#/components/schemas/xpack.usage.HealthStatistics"
                  ilm:
                    allOf:
                    - "$ref": "#/components/schemas/xpack.usage.Ilm"
                  logstash:
                    allOf:
                    - "$ref": "#/components/schemas/xpack.usage.Base"
                  ml:
                    allOf:
                    - "$ref": "#/components/schemas/xpack.usage.MachineLearning"
                  monitoring:
                    allOf:
                    - "$ref": "#/components/schemas/xpack.usage.Monitoring"
                  rollup:
                    allOf:
                    - "$ref": "#/components/schemas/xpack.usage.Base"
                  runtime_fields:
                    allOf:
                    - "$ref": "#/components/schemas/xpack.usage.RuntimeFieldTypes"
                  spatial:
                    allOf:
                    - "$ref": "#/components/schemas/xpack.usage.Base"
                  searchable_snapshots:
                    allOf:
                    - "$ref": "#/components/schemas/xpack.usage.SearchableSnapshots"
                  security:
                    allOf:
                    - "$ref": "#/components/schemas/xpack.usage.Security"
                  slm:
                    allOf:
                    - "$ref": "#/components/schemas/xpack.usage.Slm"
                  sql:
                    allOf:
                    - "$ref": "#/components/schemas/xpack.usage.Sql"
                  transform:
                    allOf:
                    - "$ref": "#/components/schemas/xpack.usage.Base"
                  vectors:
                    allOf:
                    - "$ref": "#/components/schemas/xpack.usage.Vector"
                  voting_only:
                    allOf:
                    - "$ref": "#/components/schemas/xpack.usage.Base"
                required:
                - aggregate_metric
                - analytics
                - archive
                - watcher
                - ccr
                - data_tiers
                - eql
                - graph
                - ilm
                - logstash
                - ml
                - monitoring
                - rollup
                - spatial
                - searchable_snapshots
                - security
                - slm
                - sql
                - transform
                - voting_only
              examples:
                XPackUsageResponseExample1:
                  description: An abbreviated response from `GET /_xpack/usage`.
                  value: |-
                    {
                      "security" : {
                        "available" : true,
                        "enabled" : true
                      },
                      "monitoring" : {
                        "available" : true,
                        "enabled" : true,
                        "collection_enabled" : false,
                        "enabled_exporters" : {
                          "local" : 1
                        }
                      },
                      "watcher" : {
                          "available" : true,
                          "enabled" : true,
                          "execution" : {
                            "actions" : {
                              "_all" : {
                                "total" : 0,
                                "total_time_in_ms" : 0
                              }
                            }
                          },
                        "watch" : {
                          "input" : {
                            "_all" : {
                              "total" : 0,
                              "active" : 0
                            }
                          },
                          "trigger" : {
                            "_all" : {
                              "total" : 0,
                              "active" : 0
                            }
                          }
                        },
                        "count" : {
                          "total" : 0,
                          "active" : 0
                        }
                      },
                      "graph" : {
                        "available" : true,
                        "enabled" : true
                      },
                      "ml" : {
                        "available" : true,
                        "enabled" : true,
                        "jobs" : {
                          "_all" : {
                            "count" : 0,
                            "detectors" : { },
                            "created_by" : { },
                            "model_size" : { },
                            "forecasts" : {
                              "total" : 0,
                              "forecasted_jobs" : 0
                            }
                          }
                        },
                        "datafeeds" : {
                          "_all" : {
                            "count" : 0
                          }
                        },
                        "data_frame_analytics_jobs" : {
                          "_all" : {
                            "count" : 0
                          },
                          "analysis_counts": { },
                          "memory_usage": {
                            "peak_usage_bytes": {
                              "min": 0.0,
                              "max": 0.0,
                              "avg": 0.0,
                              "total": 0.0
                            }
                          }
                        },
                        "inference" : {
                          "ingest_processors" : {
                            "_all" : {
                              "num_docs_processed" : {
                                "max" : 0,
                                "sum" : 0,
                                "min" : 0
                              },
                              "pipelines" : {
                                "count" : 0
                              },
                              "num_failures" : {
                                "max" : 0,
                                "sum" : 0,
                                "min" : 0
                              },
                              "time_ms" : {
                                "max" : 0,
                                "sum" : 0,
                                "min" : 0
                              }
                            }
                          },
                          "trained_models" : {
                            "_all" : {
                              "count": 1
                            },
                            "count": {
                              "total": 1,
                              "prepackaged": 1,
                              "other": 0
                            },
                            "model_size_bytes": {
                              "min": 0.0,
                              "max": 0.0,
                              "avg": 0.0,
                              "total": 0.0
                            },
                            "estimated_operations": {
                              "min": 0.0,
                              "max": 0.0,
                              "avg": 0.0,
                              "total": 0.0
                            }
                          },
                          "deployments": {
                            "count": 0,
                            "inference_counts": {
                              "total": 0.0,
                              "min": 0.0,
                              "avg": 0.0,
                              "max": 0.0
                            },
                            "stats_by_model": [],
                            "model_sizes_bytes": {
                              "total": 0.0,
                              "min": 0.0,
                              "avg": 0.0,
                              "max": 0.0
                            },
                            "time_ms": {
                              "avg": 0.0
                            }
                          }
                        },
                        "node_count" : 1,
                        "memory": {
                          anomaly_detectors_memory_bytes: 0,
                          data_frame_analytics_memory_bytes: 0,
                          pytorch_inference_memory_bytes: 0,
                          total_used_memory_bytes: 0
                        }
                      },
                      "inference": {
                        "available" : true,
                        "enabled" : true,
                        "models" : [ ]
                      },
                      "logstash" : {
                        "available" : true,
                        "enabled" : true
                      },
                      "eql" : {
                        "available" : true,
                        "enabled" : true
                      },
                      "esql" : {
                        "available" : true,
                        "enabled" : true,
                        "features" : {
                          "eval" : 0,
                          "stats" : 0,
                          "dissect": 0,
                          "grok" : 0,
                          "limit" : 0,
                          "where" : 0,
                          "sort" : 0,
                          "drop" : 0,
                          "show" : 0,
                          "rename" : 0,
                          "mv_expand" : 0,
                          "keep" : 0,
                          "enrich" : 0,
                          "from" : 0,
                          "row" : 0
                        },
                        "queries" : {
                          "rest" : {
                            "total" : 0,
                            "failed" : 0
                          },
                          "kibana" : {
                            "total" : 0,
                            "failed" : 0
                          },
                          "_all" : {
                            "total" : 0,
                            "failed" : 0
                        }
                      }
                      },
                      "sql" : {
                        "available" : true,
                        "enabled" : true,
                        "features" : {
                          "having" : 0,
                          "subselect" : 0,
                          "limit" : 0,
                          "orderby" : 0,
                          "where" : 0,
                          "join" : 0,
                          "groupby" : 0,
                          "command" : 0,
                          "local" : 0
                        },
                        "queries" : {
                          "rest" : {
                            "total" : 0,
                            "paging" : 0,
                            "failed" : 0
                          },
                          "cli" : {
                            "total" : 0,
                            "paging" : 0,
                            "failed" : 0
                          },
                          "canvas" : {
                            "total" : 0,
                            "paging" : 0,
                            "failed" : 0
                          },
                          "odbc" : {
                            "total" : 0,
                            "paging" : 0,
                            "failed" : 0
                          },
                          "jdbc" : {
                            "total" : 0,
                            "paging" : 0,
                            "failed" : 0
                          },
                          "odbc32" : {
                            "total" : 0,
                            "paging" : 0,
                            "failed" : 0
                          },
                          "odbc64" : {
                            "total" : 0,
                            "paging" : 0,
                            "failed" : 0
                          },
                          "_all" : {
                            "total" : 0,
                            "paging" : 0,
                            "failed" : 0
                          },
                          "translate" : {
                            "count" : 0
                          }
                        }
                      },
                      "rollup" : {
                        "available" : true,
                        "enabled" : true
                      },
                      "ilm" : {
                        "policy_count" : 3,
                        "policy_stats" : [ ]
                      },
                      "slm" : {
                        "available" : true,
                        "enabled" : true
                      },
                      "ccr" : {
                        "available" : true,
                        "enabled" : true,
                        "follower_indices_count" : 0,
                        "auto_follow_patterns_count" : 0
                      },
                      "transform" : {
                        "available" : true,
                        "enabled" : true
                      },
                      "voting_only" : {
                        "available" : true,
                        "enabled" : true
                      },
                      "searchable_snapshots" : {
                        "available" : true,
                        "enabled" : true,
                        "indices_count" : 0,
                        "full_copy_indices_count" : 0,
                        "shared_cache_indices_count" : 0
                      },
                      "spatial" : {
                        "available" : true,
                        "enabled" : true
                      },
                      "analytics" : {
                        "available" : true,
                        "enabled" : true,
                        "stats": {
                          "boxplot_usage" : 0,
                          "top_metrics_usage" : 0,
                          "normalize_usage" : 0,
                          "cumulative_cardinality_usage" : 0,
                          "t_test_usage" : 0,
                          "rate_usage" : 0,
                          "string_stats_usage" : 0,
                          "moving_percentiles_usage" : 0,
                          "multi_terms_usage" : 0
                        }
                      },
                      "data_streams" : {
                        "available" : true,
                        "enabled" : true,
                        "data_streams" : 0,
                        "indices_count" : 0
                      },
                      "data_lifecycle" : {
                        "available": true,
                        "enabled": true,
                        "count": 0,
                        "default_rollover_used": true,
                        "data_retention": {
                          "configured_data_streams": 0
                        },
                        "effective_retention": {
                          "retained_data_streams": 0
                        },
                        "global_retention": {
                          "default": {
                            "defined": false
                          },
                          "max": {
                            "defined": false
                          }
                        }
                      },
                      "data_tiers" : {
                        "available" : true,
                        "enabled" : true,
                        "data_warm" : {
                          "node_count" : 0,
                          "index_count" : 0,
                          "total_shard_count" : 0,
                          "primary_shard_count" : 0,
                          "doc_count" : 0,
                          "total_size_bytes" : 0,
                          "primary_size_bytes" : 0,
                          "primary_shard_size_avg_bytes" : 0,
                          "primary_shard_size_median_bytes" : 0,
                          "primary_shard_size_mad_bytes" : 0
                        },
                        "data_frozen" : {
                          "node_count" : 1,
                          "index_count" : 0,
                          "total_shard_count" : 0,
                          "primary_shard_count" : 0,
                          "doc_count" : 0,
                          "total_size_bytes" : 0,
                          "primary_size_bytes" : 0,
                          "primary_shard_size_avg_bytes" : 0,
                          "primary_shard_size_median_bytes" : 0,
                          "primary_shard_size_mad_bytes" : 0
                        },
                        "data_cold" : {
                          "node_count" : 0,
                          "index_count" : 0,
                          "total_shard_count" : 0,
                          "primary_shard_count" : 0,
                          "doc_count" : 0,
                          "total_size_bytes" : 0,
                          "primary_size_bytes" : 0,
                          "primary_shard_size_avg_bytes" : 0,
                          "primary_shard_size_median_bytes" : 0,
                          "primary_shard_size_mad_bytes" : 0
                        },
                        "data_content" : {
                          "node_count" : 0,
                          "index_count" : 0,
                          "total_shard_count" : 0,
                          "primary_shard_count" : 0,
                          "doc_count" : 0,
                          "total_size_bytes" : 0,
                          "primary_size_bytes" : 0,
                          "primary_shard_size_avg_bytes" : 0,
                          "primary_shard_size_median_bytes" : 0,
                          "primary_shard_size_mad_bytes" : 0
                        },
                        "data_hot" : {
                          "node_count" : 0,
                          "index_count" : 0,
                          "total_shard_count" : 0,
                          "primary_shard_count" : 0,
                          "doc_count" : 0,
                          "total_size_bytes" : 0,
                          "primary_size_bytes" : 0,
                          "primary_shard_size_avg_bytes" : 0,
                          "primary_shard_size_median_bytes" : 0,
                          "primary_shard_size_mad_bytes" : 0
                        }
                      },
                      "aggregate_metric" : {
                        "available" : true,
                        "enabled" : true
                      },
                      "archive" : {
                        "available" : true,
                        "enabled" : true,
                        "indices_count" : 0
                      },
                      "health_api" : {
                        "available" : true,
                        "enabled" : true,
                        "invocations": {
                          "total": 0
                        }
                      },
                      "remote_clusters": {
                        "size": 0,
                        "mode": {
                          "proxy": 0,
                          "sniff": 0
                        },
                        "security": {
                          "cert": 0,
                          "api_key": 0
                        }
                      },
                      "enterprise_search" : {
                        "available": true,
                        "enabled": true,
                        "search_applications" : {
                          "count": 0
                        },
                        "analytics_collections": {
                          "count": 0
                        },
                        "query_rulesets": {
                          "total_rule_count": 0,
                          "total_count": 0,
                          "min_rule_count": 0,
                          "max_rule_count": 0
                        }
                      },
                      "universal_profiling" : {
                        "available" : true,
                        "enabled" : true
                      },
                      "logsdb": {
                        "available": true,
                        "enabled": false,
                        "indices_count": 0,
                        "indices_with_synthetic_source": 0,
                        "num_docs": 0,
                        "size_in_bytes": 0,
                        "has_custom_cutoff_date": false
                      }
                    }
      x-state: Generally available
      x-codeSamples:
      - lang: Console
        source: 'GET /_xpack/usage

          '
      - lang: Python
        source: resp = client.xpack.usage()
      - lang: JavaScript
        source: const response = await client.xpack.usage();
      - lang: Ruby
        source: response = client.xpack.usage
      - lang: PHP
        source: "$resp = $client->xpack()->usage();"
      - lang: curl
        source: 'curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/_xpack/usage"'
      - lang: Java
        source: 'client.xpack().usage(u -> u);

          '
      x-metaTags:
      - content: Elasticsearch
        name: product_name
components:
  schemas:
    _types.Id:
      type: string
    _types.AcknowledgedResponseBase:
      type: object
      properties:
        acknowledged:
          description: For a successful response, this value is always true. On failure,
            an exception is returned instead.
          type: boolean
      required:
      - acknowledged
    _types.Duration:
      externalDocs:
        url: https://www.elastic.co/docs/reference/elasticsearch/rest-apis/api-conventions#time-units
      description: |-
        A duration. Units can be `nanos`, `micros`, `ms` (milliseconds), `s` (seconds), `m` (minutes), `h` (hours) and
        `d` (days). Also accepts "0" without a unit and "-1" to indicate an unspecified value.
      type: string
    async_search._types.AsyncSearchDocumentResponseBase:
      allOf:
      - "$ref": "#/components/schemas/async_search._types.AsyncSearchResponseBase"
      - type: object
        properties:
          response:
            allOf:
            - "$ref": "#/components/schemas/async_search._types.AsyncSearch"
        required:
        - response
    async_search._types.AsyncSearch:
      type: object
      properties:
        aggregations:
          description: Partial aggregations results, coming from the shards that have
            already completed running the query.
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/_types.aggregations.Aggregate"
        _clusters:
          allOf:
          - "$ref": "#/components/schemas/_types.ClusterStatistics"
        fields:
          type: object
          additionalProperties:
            type: object
        hits:
          allOf:
          - "$ref": "#/components/schemas/_global.search._types.HitsMetadata"
        max_score:
          type: number
        num_reduce_phases:
          description: |-
            Indicates how many reductions of the results have been performed.
            If this number increases compared to the last retrieved results for a get asynch search request, you can expect additional results included in the search response.
          type: number
        profile:
          allOf:
          - "$ref": "#/components/schemas/_global.search._types.Profile"
        pit_id:
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        _scroll_id:
          allOf:
          - "$ref": "#/components/schemas/_types.ScrollId"
        _shards:
          description: |-
            Indicates how many shards have run the query.
            Note that in order for shard results to be included in the search response, they need to be reduced first.
          allOf:
          - "$ref": "#/components/schemas/_types.ShardStatistics"
        suggest:
          type: object
          additionalProperties:
            type: array
            items:
              "$ref": "#/components/schemas/_global.search._types.Suggest"
        terminated_early:
          type: boolean
        timed_out:
          type: boolean
        took:
          type: number
      required:
      - hits
      - _shards
      - timed_out
      - took
    _types.aggregations.Aggregate:
      externalDocs:
        url: https://www.elastic.co/docs/explore-analyze/query-filter/aggregations
      oneOf:
      - "$ref": "#/components/schemas/_types.aggregations.CardinalityAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.HdrPercentilesAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.HdrPercentileRanksAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.TDigestPercentilesAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.TDigestPercentileRanksAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.PercentilesBucketAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.MedianAbsoluteDeviationAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.MinAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.MaxAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.SumAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.AvgAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.WeightedAvgAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.ValueCountAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.SimpleValueAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.DerivativeAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.BucketMetricValueAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.ChangePointAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.StatsAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.StatsBucketAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.ExtendedStatsAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.ExtendedStatsBucketAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.CartesianBoundsAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.CartesianCentroidAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.GeoBoundsAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.GeoCentroidAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.HistogramAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.DateHistogramAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.AutoDateHistogramAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.VariableWidthHistogramAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.StringTermsAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.LongTermsAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.DoubleTermsAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.UnmappedTermsAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.LongRareTermsAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.StringRareTermsAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.UnmappedRareTermsAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.MultiTermsAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.MissingAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.NestedAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.ReverseNestedAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.GlobalAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.FilterAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.ChildrenAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.ParentAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.SamplerAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.UnmappedSamplerAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.GeoHashGridAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.GeoTileGridAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.GeoHexGridAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.RangeAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.DateRangeAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.GeoDistanceAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.IpRangeAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.IpPrefixAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.FiltersAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.AdjacencyMatrixAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.SignificantLongTermsAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.SignificantStringTermsAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.UnmappedSignificantTermsAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.CompositeAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.FrequentItemSetsAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.TimeSeriesAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.ScriptedMetricAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.TopHitsAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.InferenceAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.StringStatsAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.BoxPlotAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.TopMetricsAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.TTestAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.RateAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.CumulativeCardinalityAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.MatrixStatsAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.GeoLineAggregate"
      x-model: true
    _types.aggregations.CardinalityAggregate:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.AggregateBase"
      - type: object
        properties:
          value:
            type: number
        required:
        - value
      x-model: true
    _types.aggregations.AggregateBase:
      type: object
      properties:
        meta:
          allOf:
          - "$ref": "#/components/schemas/_types.Metadata"
    _types.Metadata:
      type: object
      additionalProperties:
        type: object
    _types.aggregations.HdrPercentilesAggregate:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.PercentilesAggregateBase"
      - type: object
      x-model: true
    _types.aggregations.PercentilesAggregateBase:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.AggregateBase"
      - type: object
        properties:
          values:
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.Percentiles"
        required:
        - values
    _types.aggregations.Percentiles:
      oneOf:
      - "$ref": "#/components/schemas/_types.aggregations.KeyedPercentiles"
      - type: array
        items:
          "$ref": "#/components/schemas/_types.aggregations.ArrayPercentilesItem"
    _types.aggregations.KeyedPercentiles:
      type: object
      additionalProperties:
        oneOf:
        - type: string
        - type: number
        - nullable: true
          type: string
    _types.aggregations.ArrayPercentilesItem:
      type: object
      properties:
        key:
          type: number
        value:
          oneOf:
          - type: number
          - nullable: true
            type: string
        value_as_string:
          type: string
      required:
      - key
      - value
    _types.aggregations.HdrPercentileRanksAggregate:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.PercentilesAggregateBase"
      - type: object
      x-model: true
    _types.aggregations.TDigestPercentilesAggregate:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.PercentilesAggregateBase"
      - type: object
      x-model: true
    _types.aggregations.TDigestPercentileRanksAggregate:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.PercentilesAggregateBase"
      - type: object
      x-model: true
    _types.aggregations.PercentilesBucketAggregate:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.PercentilesAggregateBase"
      - type: object
      x-model: true
    _types.aggregations.MedianAbsoluteDeviationAggregate:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.SingleMetricAggregateBase"
      - type: object
      x-model: true
    _types.aggregations.SingleMetricAggregateBase:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.AggregateBase"
      - type: object
        properties:
          value:
            description: |-
              The metric value. A missing value generally means that there was no data to aggregate,
              unless specified otherwise.
            oneOf:
            - type: number
            - nullable: true
              type: string
          value_as_string:
            type: string
        required:
        - value
    _types.aggregations.MinAggregate:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.SingleMetricAggregateBase"
      - type: object
      x-model: true
    _types.aggregations.MaxAggregate:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.SingleMetricAggregateBase"
      - type: object
      x-model: true
    _types.aggregations.SumAggregate:
      description: Sum aggregation result. `value` is always present and is zero if
        there were no values to process.
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.SingleMetricAggregateBase"
      - type: object
      x-model: true
    _types.aggregations.AvgAggregate:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.SingleMetricAggregateBase"
      - type: object
      x-model: true
    _types.aggregations.WeightedAvgAggregate:
      description: Weighted average aggregation result. `value` is missing if the
        weight was set to zero.
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.SingleMetricAggregateBase"
      - type: object
      x-model: true
    _types.aggregations.ValueCountAggregate:
      description: Value count aggregation result. `value` is always present.
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.SingleMetricAggregateBase"
      - type: object
      x-model: true
    _types.aggregations.SimpleValueAggregate:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.SingleMetricAggregateBase"
      - type: object
      x-model: true
    _types.aggregations.DerivativeAggregate:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.SingleMetricAggregateBase"
      - type: object
        properties:
          normalized_value:
            type: number
          normalized_value_as_string:
            type: string
      x-model: true
    _types.aggregations.BucketMetricValueAggregate:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.SingleMetricAggregateBase"
      - type: object
        properties:
          keys:
            type: array
            items:
              type: string
        required:
        - keys
      x-model: true
    _types.aggregations.ChangePointAggregate:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.AggregateBase"
      - type: object
        properties:
          type:
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.ChangeType"
          bucket:
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.ChangePointBucket"
        required:
        - type
    _types.aggregations.ChangeType:
      type: object
      properties:
        dip:
          allOf:
          - "$ref": "#/components/schemas/_types.aggregations.Dip"
        distribution_change:
          allOf:
          - "$ref": "#/components/schemas/_types.aggregations.DistributionChange"
        indeterminable:
          allOf:
          - "$ref": "#/components/schemas/_types.aggregations.Indeterminable"
        non_stationary:
          allOf:
          - "$ref": "#/components/schemas/_types.aggregations.NonStationary"
        spike:
          allOf:
          - "$ref": "#/components/schemas/_types.aggregations.Spike"
        stationary:
          allOf:
          - "$ref": "#/components/schemas/_types.aggregations.Stationary"
        step_change:
          allOf:
          - "$ref": "#/components/schemas/_types.aggregations.StepChange"
        trend_change:
          allOf:
          - "$ref": "#/components/schemas/_types.aggregations.TrendChange"
      minProperties: 1
      maxProperties: 1
    _types.aggregations.Dip:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.AbstractChangePoint"
      - type: object
    _types.aggregations.AbstractChangePoint:
      type: object
      properties:
        p_value:
          type: number
        change_point:
          type: number
      required:
      - p_value
      - change_point
    _types.aggregations.DistributionChange:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.AbstractChangePoint"
      - type: object
    _types.aggregations.Indeterminable:
      type: object
      properties:
        reason:
          type: string
      required:
      - reason
    _types.aggregations.NonStationary:
      type: object
      properties:
        p_value:
          type: number
        r_value:
          type: number
        trend:
          type: string
      required:
      - p_value
      - r_value
      - trend
    _types.aggregations.Spike:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.AbstractChangePoint"
      - type: object
    _types.aggregations.Stationary:
      type: object
    _types.aggregations.StepChange:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.AbstractChangePoint"
      - type: object
    _types.aggregations.TrendChange:
      type: object
      properties:
        p_value:
          type: number
        r_value:
          type: number
        change_point:
          type: number
      required:
      - p_value
      - r_value
      - change_point
    _types.aggregations.ChangePointBucket:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.MultiBucketBase"
      - type: object
        properties:
          key:
            allOf:
            - "$ref": "#/components/schemas/_types.FieldValue"
        required:
        - key
    _types.FieldValue:
      description: A field value.
      oneOf:
      - type: number
      - type: number
      - type: string
      - type: boolean
      - nullable: true
        type: string
    _types.aggregations.MultiBucketBase:
      description: Base type for multi-bucket aggregation results that can hold sub-aggregations
        results.
      type: object
      properties:
        doc_count:
          type: number
      required:
      - doc_count
    _types.aggregations.StatsAggregate:
      description: |-
        Statistics aggregation result. `min`, `max` and `avg` are missing if there were no values to process
        (`count` is zero).
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.AggregateBase"
      - type: object
        properties:
          count:
            type: number
          min:
            oneOf:
            - type: number
            - nullable: true
              type: string
          max:
            oneOf:
            - type: number
            - nullable: true
              type: string
          avg:
            oneOf:
            - type: number
            - nullable: true
              type: string
          sum:
            type: number
          min_as_string:
            type: string
          max_as_string:
            type: string
          avg_as_string:
            type: string
          sum_as_string:
            type: string
        required:
        - count
        - min
        - max
        - avg
        - sum
      x-model: true
    _types.aggregations.StatsBucketAggregate:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.StatsAggregate"
      - type: object
      x-model: true
    _types.aggregations.ExtendedStatsAggregate:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.StatsAggregate"
      - type: object
        properties:
          sum_of_squares:
            oneOf:
            - type: number
            - nullable: true
              type: string
          variance:
            oneOf:
            - type: number
            - nullable: true
              type: string
          variance_population:
            oneOf:
            - type: number
            - nullable: true
              type: string
          variance_sampling:
            oneOf:
            - type: number
            - nullable: true
              type: string
          std_deviation:
            oneOf:
            - type: number
            - nullable: true
              type: string
          std_deviation_population:
            oneOf:
            - type: number
            - nullable: true
              type: string
          std_deviation_sampling:
            oneOf:
            - type: number
            - nullable: true
              type: string
          std_deviation_bounds:
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.StandardDeviationBounds"
          sum_of_squares_as_string:
            type: string
          variance_as_string:
            type: string
          variance_population_as_string:
            type: string
          variance_sampling_as_string:
            type: string
          std_deviation_as_string:
            type: string
          std_deviation_bounds_as_string:
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.StandardDeviationBoundsAsString"
        required:
        - sum_of_squares
        - variance
        - variance_population
        - variance_sampling
        - std_deviation
        - std_deviation_population
        - std_deviation_sampling
      x-model: true
    _types.aggregations.StandardDeviationBounds:
      type: object
      properties:
        upper:
          oneOf:
          - type: number
          - nullable: true
            type: string
        lower:
          oneOf:
          - type: number
          - nullable: true
            type: string
        upper_population:
          oneOf:
          - type: number
          - nullable: true
            type: string
        lower_population:
          oneOf:
          - type: number
          - nullable: true
            type: string
        upper_sampling:
          oneOf:
          - type: number
          - nullable: true
            type: string
        lower_sampling:
          oneOf:
          - type: number
          - nullable: true
            type: string
      required:
      - upper
      - lower
      - upper_population
      - lower_population
      - upper_sampling
      - lower_sampling
    _types.aggregations.StandardDeviationBoundsAsString:
      type: object
      properties:
        upper:
          type: string
        lower:
          type: string
        upper_population:
          type: string
        lower_population:
          type: string
        upper_sampling:
          type: string
        lower_sampling:
          type: string
      required:
      - upper
      - lower
      - upper_population
      - lower_population
      - upper_sampling
      - lower_sampling
    _types.aggregations.ExtendedStatsBucketAggregate:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.ExtendedStatsAggregate"
      - type: object
      x-model: true
    _types.aggregations.CartesianBoundsAggregate:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.AggregateBase"
      - type: object
        properties:
          bounds:
            allOf:
            - "$ref": "#/components/schemas/_types.TopLeftBottomRightGeoBounds"
    _types.TopLeftBottomRightGeoBounds:
      type: object
      properties:
        top_left:
          allOf:
          - "$ref": "#/components/schemas/_types.GeoLocation"
        bottom_right:
          allOf:
          - "$ref": "#/components/schemas/_types.GeoLocation"
      required:
      - top_left
      - bottom_right
    _types.GeoLocation:
      description: |-
        A latitude/longitude as a 2 dimensional point. It can be represented in various ways:
        - as a `{lat, long}` object
        - as a geo hash value
        - as a `[lon, lat]` array
        - as a string in `"<lat>, <lon>"` or WKT point formats
      oneOf:
      - "$ref": "#/components/schemas/_types.LatLonGeoLocation"
      - "$ref": "#/components/schemas/_types.GeoHashLocation"
      - type: array
        items:
          type: number
      - type: string
    _types.LatLonGeoLocation:
      type: object
      properties:
        lat:
          description: Latitude
          type: number
        lon:
          description: Longitude
          type: number
      required:
      - lat
      - lon
    _types.GeoHashLocation:
      type: object
      properties:
        geohash:
          allOf:
          - "$ref": "#/components/schemas/_types.GeoHash"
      required:
      - geohash
    _types.GeoHash:
      type: string
    _types.aggregations.CartesianCentroidAggregate:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.AggregateBase"
      - type: object
        properties:
          count:
            type: number
          location:
            allOf:
            - "$ref": "#/components/schemas/_types.CartesianPoint"
        required:
        - count
    _types.CartesianPoint:
      type: object
      properties:
        x:
          type: number
        "y":
          type: number
      required:
      - x
      - "y"
    _types.aggregations.GeoBoundsAggregate:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.AggregateBase"
      - type: object
        properties:
          bounds:
            allOf:
            - "$ref": "#/components/schemas/_types.GeoBounds"
      x-model: true
    _types.GeoBounds:
      description: |-
        A geo bounding box. It can be represented in various ways:
        - as 4 top/bottom/left/right coordinates
        - as 2 top_left / bottom_right points
        - as 2 top_right / bottom_left points
        - as a WKT bounding box
      oneOf:
      - "$ref": "#/components/schemas/_types.CoordsGeoBounds"
      - "$ref": "#/components/schemas/_types.TopLeftBottomRightGeoBounds"
      - "$ref": "#/components/schemas/_types.TopRightBottomLeftGeoBounds"
      - "$ref": "#/components/schemas/_types.WktGeoBounds"
    _types.CoordsGeoBounds:
      type: object
      properties:
        top:
          type: number
        bottom:
          type: number
        left:
          type: number
        right:
          type: number
      required:
      - top
      - bottom
      - left
      - right
    _types.TopRightBottomLeftGeoBounds:
      type: object
      properties:
        top_right:
          allOf:
          - "$ref": "#/components/schemas/_types.GeoLocation"
        bottom_left:
          allOf:
          - "$ref": "#/components/schemas/_types.GeoLocation"
      required:
      - top_right
      - bottom_left
    _types.WktGeoBounds:
      type: object
      properties:
        wkt:
          type: string
      required:
      - wkt
    _types.aggregations.GeoCentroidAggregate:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.AggregateBase"
      - type: object
        properties:
          count:
            type: number
          location:
            allOf:
            - "$ref": "#/components/schemas/_types.GeoLocation"
        required:
        - count
      x-model: true
    _types.aggregations.HistogramAggregate:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.MultiBucketAggregateBaseHistogramBucket"
      - type: object
      x-model: true
    _types.aggregations.MultiBucketAggregateBaseHistogramBucket:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.AggregateBase"
      - type: object
        properties:
          buckets:
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.BucketsHistogramBucket"
        required:
        - buckets
    _types.aggregations.BucketsHistogramBucket:
      description: |-
        Aggregation buckets. By default they are returned as an array, but if the aggregation has keys configured for
        the different buckets, the result is a dictionary.
      oneOf:
      - type: object
        additionalProperties:
          "$ref": "#/components/schemas/_types.aggregations.HistogramBucket"
      - type: array
        items:
          "$ref": "#/components/schemas/_types.aggregations.HistogramBucket"
    _types.aggregations.HistogramBucket:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.MultiBucketBase"
      - type: object
        properties:
          key_as_string:
            type: string
          key:
            type: number
        required:
        - key
    _types.aggregations.DateHistogramAggregate:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.MultiBucketAggregateBaseDateHistogramBucket"
      - type: object
      x-model: true
    _types.aggregations.MultiBucketAggregateBaseDateHistogramBucket:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.AggregateBase"
      - type: object
        properties:
          buckets:
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.BucketsDateHistogramBucket"
        required:
        - buckets
    _types.aggregations.BucketsDateHistogramBucket:
      description: |-
        Aggregation buckets. By default they are returned as an array, but if the aggregation has keys configured for
        the different buckets, the result is a dictionary.
      oneOf:
      - type: object
        additionalProperties:
          "$ref": "#/components/schemas/_types.aggregations.DateHistogramBucket"
      - type: array
        items:
          "$ref": "#/components/schemas/_types.aggregations.DateHistogramBucket"
    _types.aggregations.DateHistogramBucket:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.MultiBucketBase"
      - type: object
        properties:
          key_as_string:
            type: string
          key:
            allOf:
            - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
        required:
        - key
    _types.EpochTimeUnitMillis:
      allOf:
      - "$ref": "#/components/schemas/_types.UnitMillis"
    _types.UnitMillis:
      description: Time unit for milliseconds
      type: number
    _types.aggregations.AutoDateHistogramAggregate:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.MultiBucketAggregateBaseDateHistogramBucket"
      - type: object
        properties:
          interval:
            allOf:
            - "$ref": "#/components/schemas/_types.DurationLarge"
        required:
        - interval
      x-model: true
    _types.DurationLarge:
      description: |-
        A date histogram interval. Similar to `Duration` with additional units: `w` (week), `M` (month), `q` (quarter) and
        `y` (year)
      type: string
    _types.aggregations.VariableWidthHistogramAggregate:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.MultiBucketAggregateBaseVariableWidthHistogramBucket"
      - type: object
      x-model: true
    _types.aggregations.MultiBucketAggregateBaseVariableWidthHistogramBucket:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.AggregateBase"
      - type: object
        properties:
          buckets:
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.BucketsVariableWidthHistogramBucket"
        required:
        - buckets
    _types.aggregations.BucketsVariableWidthHistogramBucket:
      description: |-
        Aggregation buckets. By default they are returned as an array, but if the aggregation has keys configured for
        the different buckets, the result is a dictionary.
      oneOf:
      - type: object
        additionalProperties:
          "$ref": "#/components/schemas/_types.aggregations.VariableWidthHistogramBucket"
      - type: array
        items:
          "$ref": "#/components/schemas/_types.aggregations.VariableWidthHistogramBucket"
    _types.aggregations.VariableWidthHistogramBucket:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.MultiBucketBase"
      - type: object
        properties:
          min:
            type: number
          key:
            type: number
          max:
            type: number
          min_as_string:
            type: string
          key_as_string:
            type: string
          max_as_string:
            type: string
        required:
        - min
        - key
        - max
    _types.aggregations.StringTermsAggregate:
      description: Result of a `terms` aggregation when the field is a string.
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.TermsAggregateBaseStringTermsBucket"
      - type: object
      x-model: true
    _types.aggregations.TermsAggregateBaseStringTermsBucket:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.MultiBucketAggregateBaseStringTermsBucket"
      - type: object
        properties:
          doc_count_error_upper_bound:
            type: number
          sum_other_doc_count:
            type: number
    _types.aggregations.MultiBucketAggregateBaseStringTermsBucket:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.AggregateBase"
      - type: object
        properties:
          buckets:
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.BucketsStringTermsBucket"
        required:
        - buckets
    _types.aggregations.BucketsStringTermsBucket:
      description: |-
        Aggregation buckets. By default they are returned as an array, but if the aggregation has keys configured for
        the different buckets, the result is a dictionary.
      oneOf:
      - type: object
        additionalProperties:
          "$ref": "#/components/schemas/_types.aggregations.StringTermsBucket"
      - type: array
        items:
          "$ref": "#/components/schemas/_types.aggregations.StringTermsBucket"
    _types.aggregations.StringTermsBucket:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.TermsBucketBase"
      - type: object
        properties:
          key:
            allOf:
            - "$ref": "#/components/schemas/_types.FieldValue"
        required:
        - key
    _types.aggregations.TermsBucketBase:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.MultiBucketBase"
      - type: object
        properties:
          doc_count_error_upper_bound:
            type: number
    _types.aggregations.LongTermsAggregate:
      description: Result of a `terms` aggregation when the field is some kind of
        whole number like a integer, long, or a date.
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.TermsAggregateBaseLongTermsBucket"
      - type: object
      x-model: true
    _types.aggregations.TermsAggregateBaseLongTermsBucket:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.MultiBucketAggregateBaseLongTermsBucket"
      - type: object
        properties:
          doc_count_error_upper_bound:
            type: number
          sum_other_doc_count:
            type: number
    _types.aggregations.MultiBucketAggregateBaseLongTermsBucket:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.AggregateBase"
      - type: object
        properties:
          buckets:
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.BucketsLongTermsBucket"
        required:
        - buckets
    _types.aggregations.BucketsLongTermsBucket:
      description: |-
        Aggregation buckets. By default they are returned as an array, but if the aggregation has keys configured for
        the different buckets, the result is a dictionary.
      oneOf:
      - type: object
        additionalProperties:
          "$ref": "#/components/schemas/_types.aggregations.LongTermsBucket"
      - type: array
        items:
          "$ref": "#/components/schemas/_types.aggregations.LongTermsBucket"
    _types.aggregations.LongTermsBucket:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.TermsBucketBase"
      - type: object
        properties:
          key:
            type: number
          key_as_string:
            type: string
        required:
        - key
    _types.aggregations.DoubleTermsAggregate:
      description: Result of a `terms` aggregation when the field is some kind of
        decimal number like a float, double, or distance.
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.TermsAggregateBaseDoubleTermsBucket"
      - type: object
      x-model: true
    _types.aggregations.TermsAggregateBaseDoubleTermsBucket:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.MultiBucketAggregateBaseDoubleTermsBucket"
      - type: object
        properties:
          doc_count_error_upper_bound:
            type: number
          sum_other_doc_count:
            type: number
    _types.aggregations.MultiBucketAggregateBaseDoubleTermsBucket:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.AggregateBase"
      - type: object
        properties:
          buckets:
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.BucketsDoubleTermsBucket"
        required:
        - buckets
    _types.aggregations.BucketsDoubleTermsBucket:
      description: |-
        Aggregation buckets. By default they are returned as an array, but if the aggregation has keys configured for
        the different buckets, the result is a dictionary.
      oneOf:
      - type: object
        additionalProperties:
          "$ref": "#/components/schemas/_types.aggregations.DoubleTermsBucket"
      - type: array
        items:
          "$ref": "#/components/schemas/_types.aggregations.DoubleTermsBucket"
    _types.aggregations.DoubleTermsBucket:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.TermsBucketBase"
      - type: object
        properties:
          key:
            type: number
          key_as_string:
            type: string
        required:
        - key
    _types.aggregations.UnmappedTermsAggregate:
      description: Result of a `terms` aggregation when the field is unmapped. `buckets`
        is always empty.
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.TermsAggregateBaseVoid"
      - type: object
      x-model: true
    _types.aggregations.TermsAggregateBaseVoid:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.MultiBucketAggregateBaseVoid"
      - type: object
        properties:
          doc_count_error_upper_bound:
            type: number
          sum_other_doc_count:
            type: number
    _types.aggregations.MultiBucketAggregateBaseVoid:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.AggregateBase"
      - type: object
        properties:
          buckets:
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.BucketsVoid"
        required:
        - buckets
    _types.aggregations.BucketsVoid:
      description: |-
        Aggregation buckets. By default they are returned as an array, but if the aggregation has keys configured for
        the different buckets, the result is a dictionary.
      oneOf:
      - type: object
        additionalProperties:
          "$ref": "#/components/schemas/_spec_utils.Void"
      - type: array
        items:
          "$ref": "#/components/schemas/_spec_utils.Void"
    _spec_utils.Void:
      description: |-
        The absence of any type. This is commonly used in APIs that don't return a body.

        Although "void" is generally used for the unit type that has only one value, this is to be interpreted as
        the bottom type that has no value at all. Most languages have a unit type, but few have a bottom type.

        See https://en.m.wikipedia.org/wiki/Unit_type and https://en.m.wikipedia.org/wiki/Bottom_type
      type: object
    _types.aggregations.LongRareTermsAggregate:
      description: Result of the `rare_terms` aggregation when the field is some kind
        of whole number like a integer, long, or a date.
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.MultiBucketAggregateBaseLongRareTermsBucket"
      - type: object
      x-model: true
    _types.aggregations.MultiBucketAggregateBaseLongRareTermsBucket:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.AggregateBase"
      - type: object
        properties:
          buckets:
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.BucketsLongRareTermsBucket"
        required:
        - buckets
    _types.aggregations.BucketsLongRareTermsBucket:
      description: |-
        Aggregation buckets. By default they are returned as an array, but if the aggregation has keys configured for
        the different buckets, the result is a dictionary.
      oneOf:
      - type: object
        additionalProperties:
          "$ref": "#/components/schemas/_types.aggregations.LongRareTermsBucket"
      - type: array
        items:
          "$ref": "#/components/schemas/_types.aggregations.LongRareTermsBucket"
    _types.aggregations.LongRareTermsBucket:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.MultiBucketBase"
      - type: object
        properties:
          key:
            type: number
          key_as_string:
            type: string
        required:
        - key
    _types.aggregations.StringRareTermsAggregate:
      description: Result of the `rare_terms` aggregation when the field is a string.
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.MultiBucketAggregateBaseStringRareTermsBucket"
      - type: object
      x-model: true
    _types.aggregations.MultiBucketAggregateBaseStringRareTermsBucket:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.AggregateBase"
      - type: object
        properties:
          buckets:
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.BucketsStringRareTermsBucket"
        required:
        - buckets
    _types.aggregations.BucketsStringRareTermsBucket:
      description: |-
        Aggregation buckets. By default they are returned as an array, but if the aggregation has keys configured for
        the different buckets, the result is a dictionary.
      oneOf:
      - type: object
        additionalProperties:
          "$ref": "#/components/schemas/_types.aggregations.StringRareTermsBucket"
      - type: array
        items:
          "$ref": "#/components/schemas/_types.aggregations.StringRareTermsBucket"
    _types.aggregations.StringRareTermsBucket:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.MultiBucketBase"
      - type: object
        properties:
          key:
            type: string
        required:
        - key
    _types.aggregations.UnmappedRareTermsAggregate:
      description: Result of a `rare_terms` aggregation when the field is unmapped.
        `buckets` is always empty.
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.MultiBucketAggregateBaseVoid"
      - type: object
      x-model: true
    _types.aggregations.MultiTermsAggregate:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.TermsAggregateBaseMultiTermsBucket"
      - type: object
      x-model: true
    _types.aggregations.TermsAggregateBaseMultiTermsBucket:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.MultiBucketAggregateBaseMultiTermsBucket"
      - type: object
        properties:
          doc_count_error_upper_bound:
            type: number
          sum_other_doc_count:
            type: number
    _types.aggregations.MultiBucketAggregateBaseMultiTermsBucket:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.AggregateBase"
      - type: object
        properties:
          buckets:
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.BucketsMultiTermsBucket"
        required:
        - buckets
    _types.aggregations.BucketsMultiTermsBucket:
      description: |-
        Aggregation buckets. By default they are returned as an array, but if the aggregation has keys configured for
        the different buckets, the result is a dictionary.
      oneOf:
      - type: object
        additionalProperties:
          "$ref": "#/components/schemas/_types.aggregations.MultiTermsBucket"
      - type: array
        items:
          "$ref": "#/components/schemas/_types.aggregations.MultiTermsBucket"
    _types.aggregations.MultiTermsBucket:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.MultiBucketBase"
      - type: object
        properties:
          key:
            type: array
            items:
              "$ref": "#/components/schemas/_types.FieldValue"
          key_as_string:
            type: string
          doc_count_error_upper_bound:
            type: number
        required:
        - key
    _types.aggregations.MissingAggregate:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.SingleBucketAggregateBase"
      - type: object
      x-model: true
    _types.aggregations.SingleBucketAggregateBase:
      description: Base type for single-bucket aggregation results that can hold sub-aggregations
        results.
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.AggregateBase"
      - type: object
        properties:
          doc_count:
            type: number
        required:
        - doc_count
    _types.aggregations.NestedAggregate:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.SingleBucketAggregateBase"
      - type: object
      x-model: true
    _types.aggregations.ReverseNestedAggregate:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.SingleBucketAggregateBase"
      - type: object
      x-model: true
    _types.aggregations.GlobalAggregate:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.SingleBucketAggregateBase"
      - type: object
      x-model: true
    _types.aggregations.FilterAggregate:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.SingleBucketAggregateBase"
      - type: object
      x-model: true
    _types.aggregations.ChildrenAggregate:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.SingleBucketAggregateBase"
      - type: object
      x-model: true
    _types.aggregations.ParentAggregate:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.SingleBucketAggregateBase"
      - type: object
      x-model: true
    _types.aggregations.SamplerAggregate:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.SingleBucketAggregateBase"
      - type: object
      x-model: true
    _types.aggregations.UnmappedSamplerAggregate:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.SingleBucketAggregateBase"
      - type: object
      x-model: true
    _types.aggregations.GeoHashGridAggregate:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.MultiBucketAggregateBaseGeoHashGridBucket"
      - type: object
      x-model: true
    _types.aggregations.MultiBucketAggregateBaseGeoHashGridBucket:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.AggregateBase"
      - type: object
        properties:
          buckets:
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.BucketsGeoHashGridBucket"
        required:
        - buckets
    _types.aggregations.BucketsGeoHashGridBucket:
      description: |-
        Aggregation buckets. By default they are returned as an array, but if the aggregation has keys configured for
        the different buckets, the result is a dictionary.
      oneOf:
      - type: object
        additionalProperties:
          "$ref": "#/components/schemas/_types.aggregations.GeoHashGridBucket"
      - type: array
        items:
          "$ref": "#/components/schemas/_types.aggregations.GeoHashGridBucket"
    _types.aggregations.GeoHashGridBucket:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.MultiBucketBase"
      - type: object
        properties:
          key:
            allOf:
            - "$ref": "#/components/schemas/_types.GeoHash"
        required:
        - key
    _types.aggregations.GeoTileGridAggregate:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.MultiBucketAggregateBaseGeoTileGridBucket"
      - type: object
      x-model: true
    _types.aggregations.MultiBucketAggregateBaseGeoTileGridBucket:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.AggregateBase"
      - type: object
        properties:
          buckets:
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.BucketsGeoTileGridBucket"
        required:
        - buckets
    _types.aggregations.BucketsGeoTileGridBucket:
      description: |-
        Aggregation buckets. By default they are returned as an array, but if the aggregation has keys configured for
        the different buckets, the result is a dictionary.
      oneOf:
      - type: object
        additionalProperties:
          "$ref": "#/components/schemas/_types.aggregations.GeoTileGridBucket"
      - type: array
        items:
          "$ref": "#/components/schemas/_types.aggregations.GeoTileGridBucket"
    _types.aggregations.GeoTileGridBucket:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.MultiBucketBase"
      - type: object
        properties:
          key:
            allOf:
            - "$ref": "#/components/schemas/_types.GeoTile"
        required:
        - key
    _types.GeoTile:
      description: A map tile reference, represented as `{zoom}/{x}/{y}`
      type: string
    _types.aggregations.GeoHexGridAggregate:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.MultiBucketAggregateBaseGeoHexGridBucket"
      - type: object
      x-model: true
    _types.aggregations.MultiBucketAggregateBaseGeoHexGridBucket:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.AggregateBase"
      - type: object
        properties:
          buckets:
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.BucketsGeoHexGridBucket"
        required:
        - buckets
    _types.aggregations.BucketsGeoHexGridBucket:
      description: |-
        Aggregation buckets. By default they are returned as an array, but if the aggregation has keys configured for
        the different buckets, the result is a dictionary.
      oneOf:
      - type: object
        additionalProperties:
          "$ref": "#/components/schemas/_types.aggregations.GeoHexGridBucket"
      - type: array
        items:
          "$ref": "#/components/schemas/_types.aggregations.GeoHexGridBucket"
    _types.aggregations.GeoHexGridBucket:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.MultiBucketBase"
      - type: object
        properties:
          key:
            allOf:
            - "$ref": "#/components/schemas/_types.GeoHexCell"
        required:
        - key
    _types.GeoHexCell:
      description: A map hex cell (H3) reference
      type: string
    _types.aggregations.RangeAggregate:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.MultiBucketAggregateBaseRangeBucket"
      - type: object
      x-model: true
    _types.aggregations.MultiBucketAggregateBaseRangeBucket:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.AggregateBase"
      - type: object
        properties:
          buckets:
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.BucketsRangeBucket"
        required:
        - buckets
    _types.aggregations.BucketsRangeBucket:
      description: |-
        Aggregation buckets. By default they are returned as an array, but if the aggregation has keys configured for
        the different buckets, the result is a dictionary.
      oneOf:
      - type: object
        additionalProperties:
          "$ref": "#/components/schemas/_types.aggregations.RangeBucket"
      - type: array
        items:
          "$ref": "#/components/schemas/_types.aggregations.RangeBucket"
    _types.aggregations.RangeBucket:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.MultiBucketBase"
      - type: object
        properties:
          from:
            type: number
          to:
            type: number
          from_as_string:
            type: string
          to_as_string:
            type: string
          key:
            description: The bucket key. Present if the aggregation is _not_ keyed
            type: string
    _types.aggregations.DateRangeAggregate:
      description: |-
        Result of a `date_range` aggregation. Same format as a for a `range` aggregation: `from` and `to`
        in `buckets` are milliseconds since the Epoch, represented as a floating point number.
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.RangeAggregate"
      - type: object
      x-model: true
    _types.aggregations.GeoDistanceAggregate:
      description: Result of a `geo_distance` aggregation. The unit for `from` and
        `to` is meters by default.
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.RangeAggregate"
      - type: object
      x-model: true
    _types.aggregations.IpRangeAggregate:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.MultiBucketAggregateBaseIpRangeBucket"
      - type: object
      x-model: true
    _types.aggregations.MultiBucketAggregateBaseIpRangeBucket:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.AggregateBase"
      - type: object
        properties:
          buckets:
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.BucketsIpRangeBucket"
        required:
        - buckets
    _types.aggregations.BucketsIpRangeBucket:
      description: |-
        Aggregation buckets. By default they are returned as an array, but if the aggregation has keys configured for
        the different buckets, the result is a dictionary.
      oneOf:
      - type: object
        additionalProperties:
          "$ref": "#/components/schemas/_types.aggregations.IpRangeBucket"
      - type: array
        items:
          "$ref": "#/components/schemas/_types.aggregations.IpRangeBucket"
    _types.aggregations.IpRangeBucket:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.MultiBucketBase"
      - type: object
        properties:
          key:
            type: string
          from:
            type: string
          to:
            type: string
    _types.aggregations.IpPrefixAggregate:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.MultiBucketAggregateBaseIpPrefixBucket"
      - type: object
      x-model: true
    _types.aggregations.MultiBucketAggregateBaseIpPrefixBucket:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.AggregateBase"
      - type: object
        properties:
          buckets:
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.BucketsIpPrefixBucket"
        required:
        - buckets
    _types.aggregations.BucketsIpPrefixBucket:
      description: |-
        Aggregation buckets. By default they are returned as an array, but if the aggregation has keys configured for
        the different buckets, the result is a dictionary.
      oneOf:
      - type: object
        additionalProperties:
          "$ref": "#/components/schemas/_types.aggregations.IpPrefixBucket"
      - type: array
        items:
          "$ref": "#/components/schemas/_types.aggregations.IpPrefixBucket"
    _types.aggregations.IpPrefixBucket:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.MultiBucketBase"
      - type: object
        properties:
          is_ipv6:
            type: boolean
          key:
            type: string
          prefix_length:
            type: number
          netmask:
            type: string
        required:
        - is_ipv6
        - key
        - prefix_length
    _types.aggregations.FiltersAggregate:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.MultiBucketAggregateBaseFiltersBucket"
      - type: object
      x-model: true
    _types.aggregations.MultiBucketAggregateBaseFiltersBucket:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.AggregateBase"
      - type: object
        properties:
          buckets:
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.BucketsFiltersBucket"
        required:
        - buckets
    _types.aggregations.BucketsFiltersBucket:
      description: |-
        Aggregation buckets. By default they are returned as an array, but if the aggregation has keys configured for
        the different buckets, the result is a dictionary.
      oneOf:
      - type: object
        additionalProperties:
          "$ref": "#/components/schemas/_types.aggregations.FiltersBucket"
      - type: array
        items:
          "$ref": "#/components/schemas/_types.aggregations.FiltersBucket"
    _types.aggregations.FiltersBucket:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.MultiBucketBase"
      - type: object
        properties:
          key:
            type: string
    _types.aggregations.AdjacencyMatrixAggregate:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.MultiBucketAggregateBaseAdjacencyMatrixBucket"
      - type: object
      x-model: true
    _types.aggregations.MultiBucketAggregateBaseAdjacencyMatrixBucket:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.AggregateBase"
      - type: object
        properties:
          buckets:
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.BucketsAdjacencyMatrixBucket"
        required:
        - buckets
    _types.aggregations.BucketsAdjacencyMatrixBucket:
      description: |-
        Aggregation buckets. By default they are returned as an array, but if the aggregation has keys configured for
        the different buckets, the result is a dictionary.
      oneOf:
      - type: object
        additionalProperties:
          "$ref": "#/components/schemas/_types.aggregations.AdjacencyMatrixBucket"
      - type: array
        items:
          "$ref": "#/components/schemas/_types.aggregations.AdjacencyMatrixBucket"
    _types.aggregations.AdjacencyMatrixBucket:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.MultiBucketBase"
      - type: object
        properties:
          key:
            type: string
        required:
        - key
    _types.aggregations.SignificantLongTermsAggregate:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.SignificantTermsAggregateBaseSignificantLongTermsBucket"
      - type: object
      x-model: true
    _types.aggregations.SignificantTermsAggregateBaseSignificantLongTermsBucket:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.MultiBucketAggregateBaseSignificantLongTermsBucket"
      - type: object
        properties:
          bg_count:
            type: number
          doc_count:
            type: number
    _types.aggregations.MultiBucketAggregateBaseSignificantLongTermsBucket:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.AggregateBase"
      - type: object
        properties:
          buckets:
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.BucketsSignificantLongTermsBucket"
        required:
        - buckets
    _types.aggregations.BucketsSignificantLongTermsBucket:
      description: |-
        Aggregation buckets. By default they are returned as an array, but if the aggregation has keys configured for
        the different buckets, the result is a dictionary.
      oneOf:
      - type: object
        additionalProperties:
          "$ref": "#/components/schemas/_types.aggregations.SignificantLongTermsBucket"
      - type: array
        items:
          "$ref": "#/components/schemas/_types.aggregations.SignificantLongTermsBucket"
    _types.aggregations.SignificantLongTermsBucket:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.SignificantTermsBucketBase"
      - type: object
        properties:
          key:
            type: number
          key_as_string:
            type: string
        required:
        - key
    _types.aggregations.SignificantTermsBucketBase:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.MultiBucketBase"
      - type: object
        properties:
          score:
            type: number
          bg_count:
            type: number
        required:
        - score
        - bg_count
    _types.aggregations.SignificantStringTermsAggregate:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.SignificantTermsAggregateBaseSignificantStringTermsBucket"
      - type: object
      x-model: true
    _types.aggregations.SignificantTermsAggregateBaseSignificantStringTermsBucket:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.MultiBucketAggregateBaseSignificantStringTermsBucket"
      - type: object
        properties:
          bg_count:
            type: number
          doc_count:
            type: number
    _types.aggregations.MultiBucketAggregateBaseSignificantStringTermsBucket:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.AggregateBase"
      - type: object
        properties:
          buckets:
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.BucketsSignificantStringTermsBucket"
        required:
        - buckets
    _types.aggregations.BucketsSignificantStringTermsBucket:
      description: |-
        Aggregation buckets. By default they are returned as an array, but if the aggregation has keys configured for
        the different buckets, the result is a dictionary.
      oneOf:
      - type: object
        additionalProperties:
          "$ref": "#/components/schemas/_types.aggregations.SignificantStringTermsBucket"
      - type: array
        items:
          "$ref": "#/components/schemas/_types.aggregations.SignificantStringTermsBucket"
    _types.aggregations.SignificantStringTermsBucket:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.SignificantTermsBucketBase"
      - type: object
        properties:
          key:
            type: string
        required:
        - key
    _types.aggregations.UnmappedSignificantTermsAggregate:
      description: Result of the `significant_terms` aggregation on an unmapped field.
        `buckets` is always empty.
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.SignificantTermsAggregateBaseVoid"
      - type: object
      x-model: true
    _types.aggregations.SignificantTermsAggregateBaseVoid:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.MultiBucketAggregateBaseVoid"
      - type: object
        properties:
          bg_count:
            type: number
          doc_count:
            type: number
    _types.aggregations.CompositeAggregate:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.MultiBucketAggregateBaseCompositeBucket"
      - type: object
        properties:
          after_key:
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.CompositeAggregateKey"
      x-model: true
    _types.aggregations.CompositeAggregateKey:
      type: object
      additionalProperties:
        "$ref": "#/components/schemas/_types.FieldValue"
    _types.aggregations.MultiBucketAggregateBaseCompositeBucket:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.AggregateBase"
      - type: object
        properties:
          buckets:
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.BucketsCompositeBucket"
        required:
        - buckets
    _types.aggregations.BucketsCompositeBucket:
      description: |-
        Aggregation buckets. By default they are returned as an array, but if the aggregation has keys configured for
        the different buckets, the result is a dictionary.
      oneOf:
      - type: object
        additionalProperties:
          "$ref": "#/components/schemas/_types.aggregations.CompositeBucket"
      - type: array
        items:
          "$ref": "#/components/schemas/_types.aggregations.CompositeBucket"
    _types.aggregations.CompositeBucket:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.MultiBucketBase"
      - type: object
        properties:
          key:
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.CompositeAggregateKey"
        required:
        - key
    _types.aggregations.FrequentItemSetsAggregate:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.MultiBucketAggregateBaseFrequentItemSetsBucket"
      - type: object
      x-model: true
    _types.aggregations.MultiBucketAggregateBaseFrequentItemSetsBucket:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.AggregateBase"
      - type: object
        properties:
          buckets:
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.BucketsFrequentItemSetsBucket"
        required:
        - buckets
    _types.aggregations.BucketsFrequentItemSetsBucket:
      description: |-
        Aggregation buckets. By default they are returned as an array, but if the aggregation has keys configured for
        the different buckets, the result is a dictionary.
      oneOf:
      - type: object
        additionalProperties:
          "$ref": "#/components/schemas/_types.aggregations.FrequentItemSetsBucket"
      - type: array
        items:
          "$ref": "#/components/schemas/_types.aggregations.FrequentItemSetsBucket"
    _types.aggregations.FrequentItemSetsBucket:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.MultiBucketBase"
      - type: object
        properties:
          key:
            type: object
            additionalProperties:
              type: array
              items:
                type: string
          support:
            type: number
        required:
        - key
        - support
    _types.aggregations.TimeSeriesAggregate:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.MultiBucketAggregateBaseTimeSeriesBucket"
      - type: object
      x-model: true
    _types.aggregations.MultiBucketAggregateBaseTimeSeriesBucket:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.AggregateBase"
      - type: object
        properties:
          buckets:
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.BucketsTimeSeriesBucket"
        required:
        - buckets
    _types.aggregations.BucketsTimeSeriesBucket:
      description: |-
        Aggregation buckets. By default they are returned as an array, but if the aggregation has keys configured for
        the different buckets, the result is a dictionary.
      oneOf:
      - type: object
        additionalProperties:
          "$ref": "#/components/schemas/_types.aggregations.TimeSeriesBucket"
      - type: array
        items:
          "$ref": "#/components/schemas/_types.aggregations.TimeSeriesBucket"
    _types.aggregations.TimeSeriesBucket:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.MultiBucketBase"
      - type: object
        properties:
          key:
            type: object
            additionalProperties:
              "$ref": "#/components/schemas/_types.FieldValue"
        required:
        - key
    _types.aggregations.ScriptedMetricAggregate:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.AggregateBase"
      - type: object
        properties:
          value:
            type: object
        required:
        - value
      x-model: true
    _types.aggregations.TopHitsAggregate:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.AggregateBase"
      - type: object
        properties:
          hits:
            allOf:
            - "$ref": "#/components/schemas/_global.search._types.HitsMetadata"
        required:
        - hits
      x-model: true
    _global.search._types.HitsMetadata:
      type: object
      properties:
        total:
          description: Total hit count information, present only if `track_total_hits`
            wasn't `false` in the search request.
          oneOf:
          - "$ref": "#/components/schemas/_global.search._types.TotalHits"
          - type: number
        hits:
          type: array
          items:
            "$ref": "#/components/schemas/_global.search._types.Hit"
        max_score:
          oneOf:
          - type: number
          - nullable: true
            type: string
      required:
      - hits
    _global.search._types.TotalHits:
      type: object
      properties:
        relation:
          description: |2+


            Supported values include:
              - `eq`: Accurate
              - `gte`: Lower bound, including returned events or sequences

          allOf:
          - "$ref": "#/components/schemas/_global.search._types.TotalHitsRelation"
        value:
          type: number
      required:
      - relation
      - value
    _global.search._types.TotalHitsRelation:
      type: string
      enum:
      - eq
      - gte
    _global.search._types.Hit:
      type: object
      properties:
        _index:
          allOf:
          - "$ref": "#/components/schemas/_types.IndexName"
        _id:
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        _score:
          oneOf:
          - type: number
          - nullable: true
            type: string
        _explanation:
          allOf:
          - "$ref": "#/components/schemas/_global.explain.Explanation"
        fields:
          type: object
          additionalProperties:
            type: object
        highlight:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
        inner_hits:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/_global.search._types.InnerHitsResult"
        matched_queries:
          oneOf:
          - type: array
            items:
              type: string
          - type: object
            additionalProperties:
              type: number
        _nested:
          allOf:
          - "$ref": "#/components/schemas/_global.search._types.NestedIdentity"
        _ignored:
          type: array
          items:
            type: string
        ignored_field_values:
          type: object
          additionalProperties:
            type: array
            items:
              type: object
        _shard:
          type: string
        _node:
          type: string
        _routing:
          type: string
        _source:
          type: object
        _rank:
          type: number
        _seq_no:
          allOf:
          - "$ref": "#/components/schemas/_types.SequenceNumber"
        _primary_term:
          type: number
        _version:
          allOf:
          - "$ref": "#/components/schemas/_types.VersionNumber"
        sort:
          allOf:
          - "$ref": "#/components/schemas/_types.SortResults"
      required:
      - _index
    _types.IndexName:
      type: string
    _global.explain.Explanation:
      type: object
      properties:
        description:
          type: string
        details:
          type: array
          items:
            "$ref": "#/components/schemas/_global.explain.ExplanationDetail"
        value:
          type: number
      required:
      - description
      - details
      - value
    _global.explain.ExplanationDetail:
      type: object
      properties:
        description:
          type: string
        details:
          type: array
          items:
            "$ref": "#/components/schemas/_global.explain.ExplanationDetail"
        value:
          type: number
      required:
      - description
      - value
    _global.search._types.InnerHitsResult:
      type: object
      properties:
        hits:
          allOf:
          - "$ref": "#/components/schemas/_global.search._types.HitsMetadata"
      required:
      - hits
    _global.search._types.NestedIdentity:
      type: object
      properties:
        field:
          allOf:
          - "$ref": "#/components/schemas/_types.Field"
        offset:
          type: number
        _nested:
          allOf:
          - "$ref": "#/components/schemas/_global.search._types.NestedIdentity"
      required:
      - field
      - offset
    _types.Field:
      description: Path to field or array of paths. Some API's support wildcards in
        the path to select multiple fields.
      type: string
    _types.SequenceNumber:
      type: number
    _types.VersionNumber:
      type: number
    _types.SortResults:
      type: array
      items:
        "$ref": "#/components/schemas/_types.FieldValue"
    _types.aggregations.InferenceAggregate:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.AggregateBase"
      - type: object
        properties:
          value:
            allOf:
            - "$ref": "#/components/schemas/_types.FieldValue"
          feature_importance:
            type: array
            items:
              "$ref": "#/components/schemas/_types.aggregations.InferenceFeatureImportance"
          top_classes:
            type: array
            items:
              "$ref": "#/components/schemas/_types.aggregations.InferenceTopClassEntry"
          warning:
            type: string
      x-model: true
    _types.aggregations.InferenceFeatureImportance:
      type: object
      properties:
        feature_name:
          type: string
        importance:
          type: number
        classes:
          type: array
          items:
            "$ref": "#/components/schemas/_types.aggregations.InferenceClassImportance"
      required:
      - feature_name
    _types.aggregations.InferenceClassImportance:
      type: object
      properties:
        class_name:
          type: string
        importance:
          type: number
      required:
      - class_name
      - importance
    _types.aggregations.InferenceTopClassEntry:
      type: object
      properties:
        class_name:
          allOf:
          - "$ref": "#/components/schemas/_types.FieldValue"
        class_probability:
          type: number
        class_score:
          type: number
      required:
      - class_name
      - class_probability
      - class_score
    _types.aggregations.StringStatsAggregate:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.AggregateBase"
      - type: object
        properties:
          count:
            type: number
          min_length:
            oneOf:
            - type: number
            - nullable: true
              type: string
          max_length:
            oneOf:
            - type: number
            - nullable: true
              type: string
          avg_length:
            oneOf:
            - type: number
            - nullable: true
              type: string
          entropy:
            oneOf:
            - type: number
            - nullable: true
              type: string
          distribution:
            oneOf:
            - type: object
              additionalProperties:
                type: number
            - nullable: true
              type: string
          min_length_as_string:
            type: string
          max_length_as_string:
            type: string
          avg_length_as_string:
            type: string
        required:
        - count
        - min_length
        - max_length
        - avg_length
        - entropy
      x-model: true
    _types.aggregations.BoxPlotAggregate:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.AggregateBase"
      - type: object
        properties:
          min:
            type: number
          max:
            type: number
          q1:
            type: number
          q2:
            type: number
          q3:
            type: number
          lower:
            type: number
          upper:
            type: number
          min_as_string:
            type: string
          max_as_string:
            type: string
          q1_as_string:
            type: string
          q2_as_string:
            type: string
          q3_as_string:
            type: string
          lower_as_string:
            type: string
          upper_as_string:
            type: string
        required:
        - min
        - max
        - q1
        - q2
        - q3
        - lower
        - upper
      x-model: true
    _types.aggregations.TopMetricsAggregate:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.AggregateBase"
      - type: object
        properties:
          top:
            type: array
            items:
              "$ref": "#/components/schemas/_types.aggregations.TopMetrics"
        required:
        - top
      x-model: true
    _types.aggregations.TopMetrics:
      type: object
      properties:
        sort:
          type: array
          items:
            oneOf:
            - "$ref": "#/components/schemas/_types.FieldValue"
            - nullable: true
              type: string
        metrics:
          type: object
          additionalProperties:
            oneOf:
            - "$ref": "#/components/schemas/_types.FieldValue"
            - nullable: true
              type: string
      required:
      - sort
      - metrics
    _types.aggregations.TTestAggregate:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.AggregateBase"
      - type: object
        properties:
          value:
            oneOf:
            - type: number
            - nullable: true
              type: string
          value_as_string:
            type: string
        required:
        - value
      x-model: true
    _types.aggregations.RateAggregate:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.AggregateBase"
      - type: object
        properties:
          value:
            type: number
          value_as_string:
            type: string
        required:
        - value
      x-model: true
    _types.aggregations.CumulativeCardinalityAggregate:
      description: Result of the `cumulative_cardinality` aggregation
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.AggregateBase"
      - type: object
        properties:
          value:
            type: number
          value_as_string:
            type: string
        required:
        - value
      x-model: true
    _types.aggregations.MatrixStatsAggregate:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.AggregateBase"
      - type: object
        properties:
          doc_count:
            type: number
          fields:
            type: array
            items:
              "$ref": "#/components/schemas/_types.aggregations.MatrixStatsFields"
        required:
        - doc_count
      x-model: true
    _types.aggregations.MatrixStatsFields:
      type: object
      properties:
        name:
          allOf:
          - "$ref": "#/components/schemas/_types.Field"
        count:
          type: number
        mean:
          type: number
        variance:
          type: number
        skewness:
          type: number
        kurtosis:
          type: number
        covariance:
          type: object
          additionalProperties:
            type: number
        correlation:
          type: object
          additionalProperties:
            type: number
      required:
      - name
      - count
      - mean
      - variance
      - skewness
      - kurtosis
      - covariance
      - correlation
    _types.aggregations.GeoLineAggregate:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.AggregateBase"
      - type: object
        properties:
          type:
            type: string
          geometry:
            allOf:
            - "$ref": "#/components/schemas/_types.GeoLine"
          properties:
            type: object
        required:
        - type
        - geometry
        - properties
      x-model: true
    _types.GeoLine:
      description: A GeoJson GeoLine.
      type: object
      properties:
        type:
          description: Always `"LineString"`
          type: string
        coordinates:
          description: Array of `[lon, lat]` coordinates
          type: array
          items:
            type: array
            items:
              type: number
      required:
      - type
      - coordinates
    _types.ClusterStatistics:
      type: object
      properties:
        skipped:
          type: number
        successful:
          type: number
        total:
          type: number
        running:
          type: number
        partial:
          type: number
        failed:
          type: number
        details:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/_types.ClusterDetails"
      required:
      - skipped
      - successful
      - total
      - running
      - partial
      - failed
    _types.ClusterDetails:
      type: object
      properties:
        status:
          allOf:
          - "$ref": "#/components/schemas/_types.ClusterSearchStatus"
        indices:
          type: string
        took:
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
        timed_out:
          type: boolean
        _shards:
          allOf:
          - "$ref": "#/components/schemas/_types.ShardStatistics"
        failures:
          type: array
          items:
            "$ref": "#/components/schemas/_types.ShardFailure"
      required:
      - status
      - indices
      - timed_out
    _types.ClusterSearchStatus:
      type: string
      enum:
      - running
      - successful
      - partial
      - skipped
      - failed
    _types.DurationValueUnitMillis:
      allOf:
      - "$ref": "#/components/schemas/_types.UnitMillis"
    _types.ShardStatistics:
      type: object
      properties:
        failed:
          description: The number of shards the operation or search attempted to run
            on but failed.
          allOf:
          - "$ref": "#/components/schemas/_types.uint"
        successful:
          description: The number of shards the operation or search succeeded on.
          allOf:
          - "$ref": "#/components/schemas/_types.uint"
        total:
          description: The number of shards the operation or search will run on overall.
          allOf:
          - "$ref": "#/components/schemas/_types.uint"
        failures:
          type: array
          items:
            "$ref": "#/components/schemas/_types.ShardFailure"
        skipped:
          allOf:
          - "$ref": "#/components/schemas/_types.uint"
      required:
      - failed
      - successful
      - total
    _types.uint:
      type: number
    _types.ShardFailure:
      type: object
      properties:
        index:
          allOf:
          - "$ref": "#/components/schemas/_types.IndexName"
        node:
          type: string
        reason:
          allOf:
          - "$ref": "#/components/schemas/_types.ErrorCause"
        shard:
          type: number
        status:
          type: string
        primary:
          type: boolean
      required:
      - reason
    _types.ErrorCause:
      description: |-
        Cause and details about a request failure. This class defines the properties common to all error types.
        Additional details are also provided, that depend on the error type.
      type: object
      properties:
        type:
          description: The type of error
          type: string
        reason:
          description: A human-readable explanation of the error, in English.
          oneOf:
          - type: string
          - nullable: true
            type: string
        stack_trace:
          description: The server stack trace. Present only if the `error_trace=true`
            parameter was sent with the request.
          type: string
        caused_by:
          allOf:
          - "$ref": "#/components/schemas/_types.ErrorCause"
        root_cause:
          type: array
          items:
            "$ref": "#/components/schemas/_types.ErrorCause"
        suppressed:
          type: array
          items:
            "$ref": "#/components/schemas/_types.ErrorCause"
      required:
      - type
    _global.search._types.Profile:
      type: object
      properties:
        shards:
          type: array
          items:
            "$ref": "#/components/schemas/_global.search._types.ShardProfile"
      required:
      - shards
    _global.search._types.ShardProfile:
      type: object
      properties:
        aggregations:
          type: array
          items:
            "$ref": "#/components/schemas/_global.search._types.AggregationProfile"
        cluster:
          type: string
        dfs:
          allOf:
          - "$ref": "#/components/schemas/_global.search._types.DfsProfile"
        fetch:
          allOf:
          - "$ref": "#/components/schemas/_global.search._types.FetchProfile"
        id:
          type: string
        index:
          allOf:
          - "$ref": "#/components/schemas/_types.IndexName"
        node_id:
          allOf:
          - "$ref": "#/components/schemas/_types.NodeId"
        searches:
          type: array
          items:
            "$ref": "#/components/schemas/_global.search._types.SearchProfile"
        shard_id:
          type: number
      required:
      - aggregations
      - cluster
      - id
      - index
      - node_id
      - searches
      - shard_id
    _global.search._types.AggregationProfile:
      type: object
      properties:
        breakdown:
          allOf:
          - "$ref": "#/components/schemas/_global.search._types.AggregationBreakdown"
        description:
          type: string
        time_in_nanos:
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitNanos"
        type:
          type: string
        debug:
          allOf:
          - "$ref": "#/components/schemas/_global.search._types.AggregationProfileDebug"
        children:
          type: array
          items:
            "$ref": "#/components/schemas/_global.search._types.AggregationProfile"
      required:
      - breakdown
      - description
      - time_in_nanos
      - type
    _global.search._types.AggregationBreakdown:
      type: object
      properties:
        build_aggregation:
          type: number
        build_aggregation_count:
          type: number
        build_leaf_collector:
          type: number
        build_leaf_collector_count:
          type: number
        collect:
          type: number
        collect_count:
          type: number
        initialize:
          type: number
        initialize_count:
          type: number
        post_collection:
          type: number
        post_collection_count:
          type: number
        reduce:
          type: number
        reduce_count:
          type: number
      required:
      - build_aggregation
      - build_aggregation_count
      - build_leaf_collector
      - build_leaf_collector_count
      - collect
      - collect_count
      - initialize
      - initialize_count
      - reduce
      - reduce_count
    _types.DurationValueUnitNanos:
      allOf:
      - "$ref": "#/components/schemas/_types.UnitNanos"
    _types.UnitNanos:
      description: Time unit for nanoseconds
      type: number
    _global.search._types.AggregationProfileDebug:
      type: object
      properties:
        segments_with_multi_valued_ords:
          type: number
        collection_strategy:
          type: string
        segments_with_single_valued_ords:
          type: number
        total_buckets:
          type: number
        built_buckets:
          type: number
        result_strategy:
          type: string
        has_filter:
          type: boolean
        delegate:
          type: string
        delegate_debug:
          allOf:
          - "$ref": "#/components/schemas/_global.search._types.AggregationProfileDebug"
        chars_fetched:
          type: number
        extract_count:
          type: number
        extract_ns:
          type: number
        values_fetched:
          type: number
        collect_analyzed_ns:
          type: number
        collect_analyzed_count:
          type: number
        surviving_buckets:
          type: number
        ordinals_collectors_used:
          type: number
        ordinals_collectors_overhead_too_high:
          type: number
        string_hashing_collectors_used:
          type: number
        numeric_collectors_used:
          type: number
        empty_collectors_used:
          type: number
        deferred_aggregators:
          type: array
          items:
            type: string
        segments_with_doc_count_field:
          type: number
        segments_with_deleted_docs:
          type: number
        filters:
          type: array
          items:
            "$ref": "#/components/schemas/_global.search._types.AggregationProfileDelegateDebugFilter"
        segments_counted:
          type: number
        segments_collected:
          type: number
        map_reducer:
          type: string
        brute_force_used:
          type: number
        dynamic_pruning_attempted:
          type: number
        dynamic_pruning_used:
          type: number
        skipped_due_to_no_data:
          type: number
    _global.search._types.AggregationProfileDelegateDebugFilter:
      type: object
      properties:
        results_from_metadata:
          type: number
        query:
          type: string
        specialized_for:
          type: string
        segments_counted_in_constant_time:
          type: number
    _global.search._types.DfsProfile:
      type: object
      properties:
        statistics:
          allOf:
          - "$ref": "#/components/schemas/_global.search._types.DfsStatisticsProfile"
        knn:
          type: array
          items:
            "$ref": "#/components/schemas/_global.search._types.DfsKnnProfile"
    _global.search._types.DfsStatisticsProfile:
      type: object
      properties:
        type:
          type: string
        description:
          type: string
        time:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        time_in_nanos:
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitNanos"
        breakdown:
          allOf:
          - "$ref": "#/components/schemas/_global.search._types.DfsStatisticsBreakdown"
        debug:
          type: object
          additionalProperties:
            type: object
        children:
          type: array
          items:
            "$ref": "#/components/schemas/_global.search._types.DfsStatisticsProfile"
      required:
      - type
      - description
      - time_in_nanos
      - breakdown
    _global.search._types.DfsStatisticsBreakdown:
      type: object
      properties:
        collection_statistics:
          type: number
        collection_statistics_count:
          type: number
        create_weight:
          type: number
        create_weight_count:
          type: number
        rewrite:
          type: number
        rewrite_count:
          type: number
        term_statistics:
          type: number
        term_statistics_count:
          type: number
      required:
      - collection_statistics
      - collection_statistics_count
      - create_weight
      - create_weight_count
      - rewrite
      - rewrite_count
      - term_statistics
      - term_statistics_count
    _global.search._types.DfsKnnProfile:
      type: object
      properties:
        vector_operations_count:
          type: number
        query:
          type: array
          items:
            "$ref": "#/components/schemas/_global.search._types.KnnQueryProfileResult"
        rewrite_time:
          type: number
        collector:
          type: array
          items:
            "$ref": "#/components/schemas/_global.search._types.KnnCollectorResult"
      required:
      - query
      - rewrite_time
      - collector
    _global.search._types.KnnQueryProfileResult:
      type: object
      properties:
        type:
          type: string
        description:
          type: string
        time:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        time_in_nanos:
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitNanos"
        breakdown:
          allOf:
          - "$ref": "#/components/schemas/_global.search._types.KnnQueryProfileBreakdown"
        debug:
          type: object
          additionalProperties:
            type: object
        children:
          type: array
          items:
            "$ref": "#/components/schemas/_global.search._types.KnnQueryProfileResult"
      required:
      - type
      - description
      - time_in_nanos
      - breakdown
    _global.search._types.KnnQueryProfileBreakdown:
      type: object
      properties:
        advance:
          type: number
        advance_count:
          type: number
        build_scorer:
          type: number
        build_scorer_count:
          type: number
        compute_max_score:
          type: number
        compute_max_score_count:
          type: number
        count_weight:
          type: number
        count_weight_count:
          type: number
        create_weight:
          type: number
        create_weight_count:
          type: number
        match:
          type: number
        match_count:
          type: number
        next_doc:
          type: number
        next_doc_count:
          type: number
        score:
          type: number
        score_count:
          type: number
        set_min_competitive_score:
          type: number
        set_min_competitive_score_count:
          type: number
        shallow_advance:
          type: number
        shallow_advance_count:
          type: number
      required:
      - advance
      - advance_count
      - build_scorer
      - build_scorer_count
      - compute_max_score
      - compute_max_score_count
      - count_weight
      - count_weight_count
      - create_weight
      - create_weight_count
      - match
      - match_count
      - next_doc
      - next_doc_count
      - score
      - score_count
      - set_min_competitive_score
      - set_min_competitive_score_count
      - shallow_advance
      - shallow_advance_count
    _global.search._types.KnnCollectorResult:
      type: object
      properties:
        name:
          type: string
        reason:
          type: string
        time:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        time_in_nanos:
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitNanos"
        children:
          type: array
          items:
            "$ref": "#/components/schemas/_global.search._types.KnnCollectorResult"
      required:
      - name
      - reason
      - time_in_nanos
    _global.search._types.FetchProfile:
      type: object
      properties:
        type:
          type: string
        description:
          type: string
        time_in_nanos:
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitNanos"
        breakdown:
          allOf:
          - "$ref": "#/components/schemas/_global.search._types.FetchProfileBreakdown"
        debug:
          allOf:
          - "$ref": "#/components/schemas/_global.search._types.FetchProfileDebug"
        children:
          type: array
          items:
            "$ref": "#/components/schemas/_global.search._types.FetchProfile"
      required:
      - type
      - description
      - time_in_nanos
      - breakdown
    _global.search._types.FetchProfileBreakdown:
      type: object
      properties:
        load_source:
          type: number
        load_source_count:
          type: number
        load_stored_fields:
          type: number
        load_stored_fields_count:
          type: number
        next_reader:
          type: number
        next_reader_count:
          type: number
        process_count:
          type: number
        process:
          type: number
    _global.search._types.FetchProfileDebug:
      type: object
      properties:
        stored_fields:
          type: array
          items:
            type: string
        fast_path:
          type: number
    _types.NodeId:
      type: string
    _global.search._types.SearchProfile:
      type: object
      properties:
        collector:
          type: array
          items:
            "$ref": "#/components/schemas/_global.search._types.Collector"
        query:
          type: array
          items:
            "$ref": "#/components/schemas/_global.search._types.QueryProfile"
        rewrite_time:
          type: number
      required:
      - collector
      - query
      - rewrite_time
    _global.search._types.Collector:
      type: object
      properties:
        name:
          type: string
        reason:
          type: string
        time_in_nanos:
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitNanos"
        children:
          type: array
          items:
            "$ref": "#/components/schemas/_global.search._types.Collector"
      required:
      - name
      - reason
      - time_in_nanos
    _global.search._types.QueryProfile:
      type: object
      properties:
        breakdown:
          allOf:
          - "$ref": "#/components/schemas/_global.search._types.QueryBreakdown"
        description:
          type: string
        time_in_nanos:
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitNanos"
        type:
          type: string
        children:
          type: array
          items:
            "$ref": "#/components/schemas/_global.search._types.QueryProfile"
      required:
      - breakdown
      - description
      - time_in_nanos
      - type
    _global.search._types.QueryBreakdown:
      type: object
      properties:
        advance:
          type: number
        advance_count:
          type: number
        build_scorer:
          type: number
        build_scorer_count:
          type: number
        create_weight:
          type: number
        create_weight_count:
          type: number
        match:
          type: number
        match_count:
          type: number
        shallow_advance:
          type: number
        shallow_advance_count:
          type: number
        next_doc:
          type: number
        next_doc_count:
          type: number
        score:
          type: number
        score_count:
          type: number
        compute_max_score:
          type: number
        compute_max_score_count:
          type: number
        count_weight:
          type: number
        count_weight_count:
          type: number
        set_min_competitive_score:
          type: number
        set_min_competitive_score_count:
          type: number
      required:
      - advance
      - advance_count
      - build_scorer
      - build_scorer_count
      - create_weight
      - create_weight_count
      - match
      - match_count
      - shallow_advance
      - shallow_advance_count
      - next_doc
      - next_doc_count
      - score
      - score_count
      - compute_max_score
      - compute_max_score_count
      - count_weight
      - count_weight_count
      - set_min_competitive_score
      - set_min_competitive_score_count
    _types.ScrollId:
      type: string
    _global.search._types.Suggest:
      oneOf:
      - "$ref": "#/components/schemas/_global.search._types.CompletionSuggest"
      - "$ref": "#/components/schemas/_global.search._types.PhraseSuggest"
      - "$ref": "#/components/schemas/_global.search._types.TermSuggest"
    _global.search._types.CompletionSuggest:
      allOf:
      - "$ref": "#/components/schemas/_global.search._types.SuggestBase"
      - type: object
        properties:
          options:
            oneOf:
            - "$ref": "#/components/schemas/_global.search._types.CompletionSuggestOption"
            - type: array
              items:
                "$ref": "#/components/schemas/_global.search._types.CompletionSuggestOption"
        required:
        - options
    _global.search._types.CompletionSuggestOption:
      type: object
      properties:
        collate_match:
          type: boolean
        contexts:
          type: object
          additionalProperties:
            type: array
            items:
              "$ref": "#/components/schemas/_global.search._types.Context"
        fields:
          type: object
          additionalProperties:
            type: object
        _id:
          type: string
        _index:
          allOf:
          - "$ref": "#/components/schemas/_types.IndexName"
        _routing:
          type: string
        _score:
          type: number
        _source:
          type: object
        text:
          type: string
        score:
          type: number
      required:
      - text
    _global.search._types.Context:
      description: Text or location that we want similar documents for or a lookup
        to a document's field for the text.
      oneOf:
      - type: string
      - "$ref": "#/components/schemas/_types.GeoLocation"
    _global.search._types.SuggestBase:
      type: object
      properties:
        length:
          type: number
        offset:
          type: number
        text:
          type: string
      required:
      - length
      - offset
      - text
    _global.search._types.PhraseSuggest:
      allOf:
      - "$ref": "#/components/schemas/_global.search._types.SuggestBase"
      - type: object
        properties:
          options:
            oneOf:
            - "$ref": "#/components/schemas/_global.search._types.PhraseSuggestOption"
            - type: array
              items:
                "$ref": "#/components/schemas/_global.search._types.PhraseSuggestOption"
        required:
        - options
    _global.search._types.PhraseSuggestOption:
      type: object
      properties:
        text:
          type: string
        score:
          type: number
        highlighted:
          type: string
        collate_match:
          type: boolean
      required:
      - text
      - score
    _global.search._types.TermSuggest:
      allOf:
      - "$ref": "#/components/schemas/_global.search._types.SuggestBase"
      - type: object
        properties:
          options:
            oneOf:
            - "$ref": "#/components/schemas/_global.search._types.TermSuggestOption"
            - type: array
              items:
                "$ref": "#/components/schemas/_global.search._types.TermSuggestOption"
        required:
        - options
    _global.search._types.TermSuggestOption:
      type: object
      properties:
        text:
          type: string
        score:
          type: number
        freq:
          type: number
        highlighted:
          type: string
        collate_match:
          type: boolean
      required:
      - text
      - score
      - freq
    async_search._types.AsyncSearchResponseBase:
      type: object
      properties:
        id:
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        is_partial:
          description: |-
            When the query is no longer running, this property indicates whether the search failed or was successfully completed on all shards.
            While the query is running, `is_partial` is always set to `true`.
          type: boolean
        is_running:
          description: |-
            Indicates whether the search is still running or has completed.

            > info
            > If the search failed after some shards returned their results or the node that is coordinating the async search dies, results may be partial even though `is_running` is `false`.
          type: boolean
        expiration_time:
          description: Indicates when the async search will expire.
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
        expiration_time_in_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
        start_time:
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
        start_time_in_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
        completion_time:
          description: |-
            Indicates when the async search completed.
            It is present only when the search has completed.
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
        completion_time_in_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
        error:
          allOf:
          - "$ref": "#/components/schemas/_types.ErrorCause"
      required:
      - is_partial
      - is_running
      - expiration_time_in_millis
      - start_time_in_millis
    _types.DateTime:
      description: |-
        A date and time, either as a string whose format can depend on the context (defaulting to ISO 8601), or a
        number of milliseconds since the Epoch. Elasticsearch accepts both as input, but will generally output a string
        representation.
      oneOf:
      - type: string
      - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
    async_search.status.StatusResponseBase:
      allOf:
      - "$ref": "#/components/schemas/async_search._types.AsyncSearchResponseBase"
      - type: object
        properties:
          _shards:
            description: The number of shards that have run the query so far.
            allOf:
            - "$ref": "#/components/schemas/_types.ShardStatistics"
          _clusters:
            description: |-
              Metadata about clusters involved in the cross-cluster search.
              It is not shown for local-only searches.
            allOf:
            - "$ref": "#/components/schemas/_types.ClusterStatistics"
          completion_status:
            description: |-
              If the async search completed, this field shows the status code of the search.
              For example, `200` indicates that the async search was successfully completed.
              `503` indicates that the async search was completed with an error.
            type: number
        required:
        - _shards
    _types.Indices:
      oneOf:
      - "$ref": "#/components/schemas/_types.IndexName"
      - type: array
        items:
          "$ref": "#/components/schemas/_types.IndexName"
    _types.query_dsl.Operator:
      type: string
      enum:
      - and
      - AND
      - or
      - OR
    _types.Fields:
      oneOf:
      - "$ref": "#/components/schemas/_types.Field"
      - type: array
        items:
          "$ref": "#/components/schemas/_types.Field"
    _types.ExpandWildcards:
      oneOf:
      - "$ref": "#/components/schemas/_types.ExpandWildcard"
      - type: array
        items:
          "$ref": "#/components/schemas/_types.ExpandWildcard"
    _types.ExpandWildcard:
      type: string
      enum:
      - all
      - open
      - closed
      - hidden
      - none
    _types.Routing:
      description: Only to be used in query and path parameters, as the array form
        is actually a csv
      oneOf:
      - type: string
      - type: array
        items:
          type: string
    _types.SearchType:
      type: string
      enum:
      - query_then_fetch
      - dfs_query_then_fetch
    _types.SuggestMode:
      type: string
      enum:
      - missing
      - popular
      - always
    _global.search._types.TrackHits:
      description: |-
        Number of hits matching the query to count accurately. If true, the exact
        number of hits is returned at the cost of some performance. If false, the
        response does not include the total number of hits matching the query.
        Defaults to 10,000 hits.
      oneOf:
      - type: boolean
      - type: number
    _global.search._types.SourceConfigParam:
      description: |-
        Defines how to fetch a source. Fetching can be disabled entirely, or the source can be filtered.
        Used as a query parameter along with the `_source_includes` and `_source_excludes` parameters.
      oneOf:
      - type: boolean
      - "$ref": "#/components/schemas/_types.Fields"
    _types.aggregations.AggregationContainer:
      allOf:
      - type: object
        properties:
          aggregations:
            description: |-
              Sub-aggregations for this aggregation.
              Only applies to bucket aggregations.
            type: object
            additionalProperties:
              "$ref": "#/components/schemas/_types.aggregations.AggregationContainer"
          meta:
            allOf:
            - "$ref": "#/components/schemas/_types.Metadata"
      - type: object
        properties:
          adjacency_matrix:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-bucket-adjacency-matrix-aggregation
            description: |-
              A bucket aggregation returning a form of adjacency matrix.
              The request provides a collection of named filter expressions, similar to the `filters` aggregation.
              Each bucket in the response represents a non-empty cell in the matrix of intersecting filters.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.AdjacencyMatrixAggregation"
          auto_date_histogram:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-bucket-autodatehistogram-aggregation
            description: A multi-bucket aggregation similar to the date histogram,
              except instead of providing an interval to use as the width of each
              bucket, a target number of buckets is provided.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.AutoDateHistogramAggregation"
          avg:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-metrics-avg-aggregation
            description: A single-value metrics aggregation that computes the average
              of numeric values that are extracted from the aggregated documents.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.AverageAggregation"
          avg_bucket:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-pipeline-avg-bucket-aggregation
            description: |-
              A sibling pipeline aggregation which calculates the mean value of a specified metric in a sibling aggregation.
              The specified metric must be numeric and the sibling aggregation must be a multi-bucket aggregation.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.AverageBucketAggregation"
          boxplot:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-metrics-boxplot-aggregation
            description: A metrics aggregation that computes a box plot of numeric
              values extracted from the aggregated documents.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.BoxplotAggregation"
          bucket_script:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-pipeline-bucket-script-aggregation
            description: A parent pipeline aggregation which runs a script which can
              perform per bucket computations on metrics in the parent multi-bucket
              aggregation.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.BucketScriptAggregation"
          bucket_selector:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-pipeline-bucket-selector-aggregation
            description: A parent pipeline aggregation which runs a script to determine
              whether the current bucket will be retained in the parent multi-bucket
              aggregation.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.BucketSelectorAggregation"
          bucket_sort:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-pipeline-bucket-sort-aggregation
            description: A parent pipeline aggregation which sorts the buckets of
              its parent multi-bucket aggregation.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.BucketSortAggregation"
          bucket_count_ks_test:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-bucket-count-ks-test-aggregation
            description: A sibling pipeline aggregation which runs a two sample Kolmogorov–Smirnov
              test ("K-S test") against a provided distribution and the distribution
              implied by the documents counts in the configured sibling aggregation.
            x-state: Technical preview
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.BucketKsAggregation"
          bucket_correlation:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-bucket-correlation-aggregation
            description: A sibling pipeline aggregation which runs a correlation function
              on the configured sibling multi-bucket aggregation.
            x-state: Technical preview
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.BucketCorrelationAggregation"
          cardinality:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-metrics-cardinality-aggregation
            description: A single-value metrics aggregation that calculates an approximate
              count of distinct values.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.CardinalityAggregation"
          cartesian_bounds:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-metrics-cartesian-bounds-aggregation
            description: A metric aggregation that computes the spatial bounding box
              containing all values for a Point or Shape field.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.CartesianBoundsAggregation"
          cartesian_centroid:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-metrics-cartesian-centroid-aggregation
            description: A metric aggregation that computes the weighted centroid
              from all coordinate values for point and shape fields.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.CartesianCentroidAggregation"
          categorize_text:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-bucket-categorize-text-aggregation
            description: A multi-bucket aggregation that groups semi-structured text
              into buckets.
            x-state: Technical preview
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.CategorizeTextAggregation"
          change_point:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-change-point-aggregation
            description: |-
              A sibling pipeline that detects, spikes, dips, and change points in a metric.
              Given a distribution of values provided by the sibling multi-bucket aggregation,
              this aggregation indicates the bucket of any spike or dip and/or the bucket at which
              the largest change in the distribution of values, if they are statistically significant.
              There must be at least 22 bucketed values. Fewer than 1,000 is preferred.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.ChangePointAggregation"
          children:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-bucket-children-aggregation
            description: A single bucket aggregation that selects child documents
              that have the specified type, as defined in a `join` field.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.ChildrenAggregation"
          composite:
            description: |-
              A multi-bucket aggregation that creates composite buckets from different sources.
              Unlike the other multi-bucket aggregations, you can use the `composite` aggregation to paginate *all* buckets from a multi-level aggregation efficiently.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.CompositeAggregation"
          cumulative_cardinality:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-pipeline-cumulative-cardinality-aggregation
            description: A parent pipeline aggregation which calculates the cumulative
              cardinality in a parent `histogram` or `date_histogram` aggregation.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.CumulativeCardinalityAggregation"
          cumulative_sum:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-pipeline-cumulative-sum-aggregation
            description: A parent pipeline aggregation which calculates the cumulative
              sum of a specified metric in a parent `histogram` or `date_histogram`
              aggregation.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.CumulativeSumAggregation"
          date_histogram:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-bucket-datehistogram-aggregation
            description: |-
              A multi-bucket values source based aggregation that can be applied on date values or date range values extracted from the documents.
              It dynamically builds fixed size (interval) buckets over the values.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.DateHistogramAggregation"
          date_range:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-bucket-daterange-aggregation
            description: A multi-bucket value source based aggregation that enables
              the user to define a set of date ranges - each representing a bucket.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.DateRangeAggregation"
          derivative:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-pipeline-derivative-aggregation
            description: A parent pipeline aggregation which calculates the derivative
              of a specified metric in a parent `histogram` or `date_histogram` aggregation.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.DerivativeAggregation"
          diversified_sampler:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-bucket-diversified-sampler-aggregation
            description: |-
              A filtering aggregation used to limit any sub aggregations' processing to a sample of the top-scoring documents.
              Similar to the `sampler` aggregation, but adds the ability to limit the number of matches that share a common value.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.DiversifiedSamplerAggregation"
          extended_stats:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-metrics-extendedstats-aggregation
            description: A multi-value metrics aggregation that computes stats over
              numeric values extracted from the aggregated documents.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.ExtendedStatsAggregation"
          extended_stats_bucket:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-pipeline-extended-stats-bucket-aggregation
            description: A sibling pipeline aggregation which calculates a variety
              of stats across all bucket of a specified metric in a sibling aggregation.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.ExtendedStatsBucketAggregation"
          frequent_item_sets:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-bucket-frequent-item-sets-aggregation
            description: A bucket aggregation which finds frequent item sets, a form
              of association rules mining that identifies items that often occur together.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.FrequentItemSetsAggregation"
          filter:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-bucket-filter-aggregation
            description: A single bucket aggregation that narrows the set of documents
              to those that match a query.
            allOf:
            - "$ref": "#/components/schemas/_types.query_dsl.QueryContainer"
          filters:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-bucket-filters-aggregation
            description: A multi-bucket aggregation where each bucket contains the
              documents that match a query.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.FiltersAggregation"
          geo_bounds:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-metrics-geobounds-aggregation
            description: A metric aggregation that computes the geographic bounding
              box containing all values for a Geopoint or Geoshape field.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.GeoBoundsAggregation"
          geo_centroid:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-metrics-geocentroid-aggregation
            description: A metric aggregation that computes the weighted centroid
              from all coordinate values for geo fields.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.GeoCentroidAggregation"
          geo_distance:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-bucket-geodistance-aggregation
            description: |-
              A multi-bucket aggregation that works on `geo_point` fields.
              Evaluates the distance of each document value from an origin point and determines the buckets it belongs to, based on ranges defined in the request.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.GeoDistanceAggregation"
          geohash_grid:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-bucket-geohashgrid-aggregation
            description: |-
              A multi-bucket aggregation that groups `geo_point` and `geo_shape` values into buckets that represent a grid.
              Each cell is labeled using a geohash which is of user-definable precision.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.GeoHashGridAggregation"
          geo_line:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-metrics-geo-line
            description: Aggregates all `geo_point` values within a bucket into a
              `LineString` ordered by the chosen sort field.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.GeoLineAggregation"
          geotile_grid:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-bucket-geotilegrid-aggregation
            description: |-
              A multi-bucket aggregation that groups `geo_point` and `geo_shape` values into buckets that represent a grid.
              Each cell corresponds to a map tile as used by many online map sites.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.GeoTileGridAggregation"
          geohex_grid:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-bucket-geohexgrid-aggregation
            description: |-
              A multi-bucket aggregation that groups `geo_point` and `geo_shape` values into buckets that represent a grid.
              Each cell corresponds to a H3 cell index and is labeled using the H3Index representation.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.GeohexGridAggregation"
          global:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-bucket-global-aggregation
            description: |-
              Defines a single bucket of all the documents within the search execution context.
              This context is defined by the indices and the document types you’re searching on, but is not influenced by the search query itself.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.GlobalAggregation"
          histogram:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-bucket-histogram-aggregation
            description: |-
              A multi-bucket values source based aggregation that can be applied on numeric values or numeric range values extracted from the documents.
              It dynamically builds fixed size (interval) buckets over the values.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.HistogramAggregation"
          ip_range:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-bucket-iprange-aggregation
            description: A multi-bucket value source based aggregation that enables
              the user to define a set of IP ranges - each representing a bucket.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.IpRangeAggregation"
          ip_prefix:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-bucket-ipprefix-aggregation
            description: A bucket aggregation that groups documents based on the network
              or sub-network of an IP address.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.IpPrefixAggregation"
          inference:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-pipeline-inference-bucket-aggregation
            description: A parent pipeline aggregation which loads a pre-trained model
              and performs inference on the collated result fields from the parent
              bucket aggregation.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.InferenceAggregation"
          line:
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.GeoLineAggregation"
          matrix_stats:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-matrix-stats-aggregation
            description: 'A numeric aggregation that computes the following statistics
              over a set of document fields: `count`, `mean`, `variance`, `skewness`,
              `kurtosis`, `covariance`, and `covariance`.'
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.MatrixStatsAggregation"
          max:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-metrics-max-aggregation
            description: A single-value metrics aggregation that returns the maximum
              value among the numeric values extracted from the aggregated documents.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.MaxAggregation"
          max_bucket:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-pipeline-max-bucket-aggregation
            description: A sibling pipeline aggregation which identifies the bucket(s)
              with the maximum value of a specified metric in a sibling aggregation
              and outputs both the value and the key(s) of the bucket(s).
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.MaxBucketAggregation"
          median_absolute_deviation:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-metrics-median-absolute-deviation-aggregation
            description: A single-value aggregation that approximates the median absolute
              deviation of its search results.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.MedianAbsoluteDeviationAggregation"
          min:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-metrics-min-aggregation
            description: A single-value metrics aggregation that returns the minimum
              value among numeric values extracted from the aggregated documents.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.MinAggregation"
          min_bucket:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-pipeline-min-bucket-aggregation
            description: A sibling pipeline aggregation which identifies the bucket(s)
              with the minimum value of a specified metric in a sibling aggregation
              and outputs both the value and the key(s) of the bucket(s).
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.MinBucketAggregation"
          missing:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-bucket-missing-aggregation
            description: A field data based single bucket aggregation, that creates
              a bucket of all documents in the current document set context that are
              missing a field value (effectively, missing a field or having the configured
              NULL value set).
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.MissingAggregation"
          moving_avg:
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.MovingAverageAggregation"
          moving_percentiles:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-pipeline-moving-percentiles-aggregation
            description: Given an ordered series of percentiles, "slides" a window
              across those percentiles and computes cumulative percentiles.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.MovingPercentilesAggregation"
          moving_fn:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-pipeline-movfn-aggregation
            description: |-
              Given an ordered series of data, "slides" a window across the data and runs a custom script on each window of data.
              For convenience, a number of common functions are predefined such as `min`, `max`, and moving averages.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.MovingFunctionAggregation"
          multi_terms:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-bucket-multi-terms-aggregation
            description: A multi-bucket value source based aggregation where buckets
              are dynamically built - one per unique set of values.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.MultiTermsAggregation"
          nested:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-bucket-nested-aggregation
            description: A special single bucket aggregation that enables aggregating
              nested documents.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.NestedAggregation"
          normalize:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-pipeline-normalize-aggregation
            description: A parent pipeline aggregation which calculates the specific
              normalized/rescaled value for a specific bucket value.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.NormalizeAggregation"
          parent:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-bucket-parent-aggregation
            description: A special single bucket aggregation that selects parent documents
              that have the specified type, as defined in a `join` field.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.ParentAggregation"
          percentile_ranks:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-metrics-percentile-rank-aggregation
            description: A multi-value metrics aggregation that calculates one or
              more percentile ranks over numeric values extracted from the aggregated
              documents.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.PercentileRanksAggregation"
          percentiles:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-metrics-percentile-aggregation
            description: A multi-value metrics aggregation that calculates one or
              more percentiles over numeric values extracted from the aggregated documents.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.PercentilesAggregation"
          percentiles_bucket:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-pipeline-percentiles-bucket-aggregation
            description: A sibling pipeline aggregation which calculates percentiles
              across all bucket of a specified metric in a sibling aggregation.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.PercentilesBucketAggregation"
          range:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-bucket-range-aggregation
            description: A multi-bucket value source based aggregation that enables
              the user to define a set of ranges - each representing a bucket.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.RangeAggregation"
          rare_terms:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-bucket-rare-terms-aggregation
            description: A multi-bucket value source based aggregation which finds
              "rare" terms — terms that are at the long-tail of the distribution and
              are not frequent.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.RareTermsAggregation"
          rate:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-metrics-rate-aggregation
            description: |-
              Calculates a rate of documents or a field in each bucket.
              Can only be used inside a `date_histogram` or `composite` aggregation.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.RateAggregation"
          reverse_nested:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-bucket-reverse-nested-aggregation
            description: |-
              A special single bucket aggregation that enables aggregating on parent documents from nested documents.
              Should only be defined inside a `nested` aggregation.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.ReverseNestedAggregation"
          random_sampler:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-random-sampler-aggregation
            description: |-
              A single bucket aggregation that randomly includes documents in the aggregated results.
              Sampling provides significant speed improvement at the cost of accuracy.
            x-state: Technical preview; Added in 8.1.0
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.RandomSamplerAggregation"
          sampler:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-bucket-sampler-aggregation
            description: A filtering aggregation used to limit any sub aggregations'
              processing to a sample of the top-scoring documents.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.SamplerAggregation"
          scripted_metric:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-metrics-scripted-metric-aggregation
            description: A metric aggregation that uses scripts to provide a metric
              output.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.ScriptedMetricAggregation"
          serial_diff:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-pipeline-serialdiff-aggregation
            description: An aggregation that subtracts values in a time series from
              themselves at different time lags or periods.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.SerialDifferencingAggregation"
          significant_terms:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-bucket-significantterms-aggregation
            description: Returns interesting or unusual occurrences of terms in a
              set.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.SignificantTermsAggregation"
          significant_text:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-bucket-significanttext-aggregation
            description: Returns interesting or unusual occurrences of free-text terms
              in a set.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.SignificantTextAggregation"
          stats:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-metrics-stats-aggregation
            description: A multi-value metrics aggregation that computes stats over
              numeric values extracted from the aggregated documents.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.StatsAggregation"
          stats_bucket:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-pipeline-stats-bucket-aggregation
            description: A sibling pipeline aggregation which calculates a variety
              of stats across all bucket of a specified metric in a sibling aggregation.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.StatsBucketAggregation"
          string_stats:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-metrics-string-stats-aggregation
            description: A multi-value metrics aggregation that computes statistics
              over string values extracted from the aggregated documents.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.StringStatsAggregation"
          sum:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-metrics-sum-aggregation
            description: A single-value metrics aggregation that sums numeric values
              that are extracted from the aggregated documents.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.SumAggregation"
          sum_bucket:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-pipeline-sum-bucket-aggregation
            description: A sibling pipeline aggregation which calculates the sum of
              a specified metric across all buckets in a sibling aggregation.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.SumBucketAggregation"
          terms:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-bucket-terms-aggregation
            description: A multi-bucket value source based aggregation where buckets
              are dynamically built - one per unique value.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.TermsAggregation"
          time_series:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-bucket-time-series-aggregation
            description: |-
              The time series aggregation queries data created using a time series index.
              This is typically data such as metrics or other data streams with a time component, and requires creating an index using the time series mode.
            x-state: Technical preview
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.TimeSeriesAggregation"
          top_hits:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-metrics-top-hits-aggregation
            description: A metric aggregation that returns the top matching documents
              per bucket.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.TopHitsAggregation"
          t_test:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-metrics-ttest-aggregation
            description: A metrics aggregation that performs a statistical hypothesis
              test in which the test statistic follows a Student’s t-distribution
              under the null hypothesis on numeric values extracted from the aggregated
              documents.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.TTestAggregation"
          top_metrics:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-metrics-top-metrics
            description: A metric aggregation that selects metrics from the document
              with the largest or smallest sort value.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.TopMetricsAggregation"
          value_count:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-metrics-valuecount-aggregation
            description: A single-value metrics aggregation that counts the number
              of values that are extracted from the aggregated documents.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.ValueCountAggregation"
          weighted_avg:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-metrics-weight-avg-aggregation
            description: A single-value metrics aggregation that computes the weighted
              average of numeric values that are extracted from the aggregated documents.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.WeightedAverageAggregation"
          variable_width_histogram:
            externalDocs:
              url: https://www.elastic.co/docs/reference/aggregations/search-aggregations-bucket-variablewidthhistogram-aggregation
            description: A multi-bucket aggregation similar to the histogram, except
              instead of providing an interval to use as the width of each bucket,
              a target number of buckets is provided.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.VariableWidthHistogramAggregation"
        minProperties: 1
        maxProperties: 1
    _types.aggregations.AdjacencyMatrixAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.BucketAggregationBase"
      - type: object
        properties:
          filters:
            description: |-
              Filters used to create buckets.
              At least one filter is required.
            type: object
            additionalProperties:
              "$ref": "#/components/schemas/_types.query_dsl.QueryContainer"
          separator:
            description: Separator used to concatenate filter names. Defaults to &.
            type: string
    _types.query_dsl.QueryContainer:
      externalDocs:
        url: https://www.elastic.co/docs/explore-analyze/query-filter/languages/querydsl
      description: An Elasticsearch Query DSL (Domain Specific Language) object that
        defines a query.
      type: object
      properties:
        bool:
          externalDocs:
            url: https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-bool-query
          description: matches documents matching boolean combinations of other queries.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.BoolQuery"
        boosting:
          externalDocs:
            url: https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-boosting-query
          description: Returns documents matching a `positive` query while reducing
            the relevance score of documents that also match a `negative` query.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.BoostingQuery"
        common:
          deprecated: true
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/_types.query_dsl.CommonTermsQuery"
          minProperties: 1
          maxProperties: 1
        combined_fields:
          externalDocs:
            url: https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-combined-fields-query
          description: The `combined_fields` query supports searching multiple text
            fields as if their contents had been indexed into one combined field.
          x-state: Generally available; Added in 7.13.0
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.CombinedFieldsQuery"
        constant_score:
          externalDocs:
            url: https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-constant-score-query
          description: Wraps a filter query and returns every matching document with
            a relevance score equal to the `boost` parameter value.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.ConstantScoreQuery"
        dis_max:
          externalDocs:
            url: https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-dis-max-query
          description: |-
            Returns documents matching one or more wrapped queries, called query clauses or clauses.
            If a returned document matches multiple query clauses, the `dis_max` query assigns the document the highest relevance score from any matching clause, plus a tie breaking increment for any additional matching subqueries.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.DisMaxQuery"
        distance_feature:
          externalDocs:
            url: https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-distance-feature-query
          description: |-
            Boosts the relevance score of documents closer to a provided origin date or point.
            For example, you can use this query to give more weight to documents closer to a certain date or location.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.DistanceFeatureQuery"
        exists:
          externalDocs:
            url: https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-exists-query
          description: Returns documents that contain an indexed value for a field.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.ExistsQuery"
        function_score:
          externalDocs:
            url: https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-function-score-query
          description: The `function_score` enables you to modify the score of documents
            that are retrieved by a query.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.FunctionScoreQuery"
        fuzzy:
          externalDocs:
            url: https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-fuzzy-query
          description: Returns documents that contain terms similar to the search
            term, as measured by a Levenshtein edit distance.
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/_types.query_dsl.FuzzyQuery"
          minProperties: 1
          maxProperties: 1
        geo_bounding_box:
          externalDocs:
            url: https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-geo-bounding-box-query
          description: Matches geo_point and geo_shape values that intersect a bounding
            box.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.GeoBoundingBoxQuery"
        geo_distance:
          externalDocs:
            url: https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-geo-distance-query
          description: Matches `geo_point` and `geo_shape` values within a given distance
            of a geopoint.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.GeoDistanceQuery"
        geo_grid:
          description: Matches `geo_point` and `geo_shape` values that intersect a
            grid cell from a GeoGrid aggregation.
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/_types.query_dsl.GeoGridQuery"
          minProperties: 1
          maxProperties: 1
        geo_polygon:
          deprecated: true
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.GeoPolygonQuery"
        geo_shape:
          externalDocs:
            url: https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-geo-shape-query
          description: Filter documents indexed using either the `geo_shape` or the
            `geo_point` type.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.GeoShapeQuery"
        has_child:
          externalDocs:
            url: https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-has-child-query
          description: Returns parent documents whose joined child documents match
            a provided query.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.HasChildQuery"
        has_parent:
          externalDocs:
            url: https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-has-parent-query
          description: Returns child documents whose joined parent document matches
            a provided query.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.HasParentQuery"
        ids:
          externalDocs:
            url: https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-ids-query
          description: |-
            Returns documents based on their IDs.
            This query uses document IDs stored in the `_id` field.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.IdsQuery"
        intervals:
          externalDocs:
            url: https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-intervals-query
          description: Returns documents based on the order and proximity of matching
            terms.
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/_types.query_dsl.IntervalsQuery"
          minProperties: 1
          maxProperties: 1
        knn:
          externalDocs:
            url: https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-knn-query
          description: |-
            Finds the k nearest vectors to a query vector, as measured by a similarity
            metric. knn query finds nearest vectors through approximate search on indexed
            dense_vectors.
          allOf:
          - "$ref": "#/components/schemas/_types.KnnQuery"
        match:
          externalDocs:
            url: https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-match-query
          description: |-
            Returns documents that match a provided text, number, date or boolean value.
            The provided text is analyzed before matching.
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/_types.query_dsl.MatchQuery"
          minProperties: 1
          maxProperties: 1
        match_all:
          externalDocs:
            url: https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-match-all-query
          description: Matches all documents, giving them all a `_score` of 1.0.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.MatchAllQuery"
        match_bool_prefix:
          externalDocs:
            url: https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-match-bool-prefix-query
          description: |-
            Analyzes its input and constructs a `bool` query from the terms.
            Each term except the last is used in a `term` query.
            The last term is used in a prefix query.
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/_types.query_dsl.MatchBoolPrefixQuery"
          minProperties: 1
          maxProperties: 1
        match_none:
          externalDocs:
            url: https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-match-all-query#query-dsl-match-none-query
          description: Matches no documents.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.MatchNoneQuery"
        match_phrase:
          externalDocs:
            url: https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-match-query-phrase
          description: Analyzes the text and creates a phrase query out of the analyzed
            text.
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/_types.query_dsl.MatchPhraseQuery"
          minProperties: 1
          maxProperties: 1
        match_phrase_prefix:
          externalDocs:
            url: https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-match-query-phrase-prefix
          description: |-
            Returns documents that contain the words of a provided text, in the same order as provided.
            The last term of the provided text is treated as a prefix, matching any words that begin with that term.
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/_types.query_dsl.MatchPhrasePrefixQuery"
          minProperties: 1
          maxProperties: 1
        more_like_this:
          externalDocs:
            url: https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-mlt-query
          description: Returns documents that are "like" a given set of documents.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.MoreLikeThisQuery"
        multi_match:
          externalDocs:
            url: https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-multi-match-query
          description: |-
            Enables you to search for a provided text, number, date or boolean value across multiple fields.
            The provided text is analyzed before matching.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.MultiMatchQuery"
        nested:
          externalDocs:
            url: https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-nested-query
          description: |-
            Wraps another query to search nested fields.
            If an object matches the search, the nested query returns the root parent document.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.NestedQuery"
        parent_id:
          externalDocs:
            url: https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-parent-id-query
          description: Returns child documents joined to a specific parent document.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.ParentIdQuery"
        percolate:
          externalDocs:
            url: https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-percolate-query
          description: Matches queries stored in an index.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.PercolateQuery"
        pinned:
          externalDocs:
            url: https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-pinned-query
          description: Promotes selected documents to rank higher than those matching
            a given query.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.PinnedQuery"
        prefix:
          externalDocs:
            url: https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-prefix-query
          description: Returns documents that contain a specific prefix in a provided
            field.
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/_types.query_dsl.PrefixQuery"
          minProperties: 1
          maxProperties: 1
        query_string:
          externalDocs:
            url: https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-query-string-query
          description: Returns documents based on a provided query string, using a
            parser with a strict syntax.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.QueryStringQuery"
        range:
          externalDocs:
            url: https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-range-query
          description: Returns documents that contain terms within a provided range.
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/_types.query_dsl.RangeQuery"
          minProperties: 1
          maxProperties: 1
        rank_feature:
          externalDocs:
            url: https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-rank-feature-query
          description: Boosts the relevance score of documents based on the numeric
            value of a `rank_feature` or `rank_features` field.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.RankFeatureQuery"
        regexp:
          externalDocs:
            url: https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-regexp-query
          description: Returns documents that contain terms matching a regular expression.
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/_types.query_dsl.RegexpQuery"
          minProperties: 1
          maxProperties: 1
        rule:
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.RuleQuery"
        script:
          externalDocs:
            url: https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-script-query
          description: |-
            Filters documents based on a provided script.
            The script query is typically used in a filter context.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.ScriptQuery"
        script_score:
          externalDocs:
            url: https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-script-score-query
          description: Uses a script to provide a custom score for returned documents.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.ScriptScoreQuery"
        semantic:
          description: A semantic query to semantic_text field types
          x-state: Generally available; Added in 8.15.0
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.SemanticQuery"
        shape:
          externalDocs:
            url: https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-shape-query
          description: Queries documents that contain fields indexed using the `shape`
            type.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.ShapeQuery"
        simple_query_string:
          externalDocs:
            url: https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-simple-query-string-query
          description: Returns documents based on a provided query string, using a
            parser with a limited but fault-tolerant syntax.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.SimpleQueryStringQuery"
        span_containing:
          externalDocs:
            url: https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-span-containing-query
          description: Returns matches which enclose another span query.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.SpanContainingQuery"
        span_field_masking:
          externalDocs:
            url: https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-span-field-masking-query
          description: Wrapper to allow span queries to participate in composite single-field
            span queries by _lying_ about their search field.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.SpanFieldMaskingQuery"
        span_first:
          externalDocs:
            url: https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-span-first-query
          description: Matches spans near the beginning of a field.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.SpanFirstQuery"
        span_multi:
          externalDocs:
            url: https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-span-multi-term-query
          description: Allows you to wrap a multi term query (one of `wildcard`, `fuzzy`,
            `prefix`, `range`, or `regexp` query) as a `span` query, so it can be
            nested.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.SpanMultiTermQuery"
        span_near:
          externalDocs:
            url: https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-span-near-query
          description: |-
            Matches spans which are near one another.
            You can specify `slop`, the maximum number of intervening unmatched positions, as well as whether matches are required to be in-order.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.SpanNearQuery"
        span_not:
          externalDocs:
            url: https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-span-not-query
          description: Removes matches which overlap with another span query or which
            are within x tokens before (controlled by the parameter `pre`) or y tokens
            after (controlled by the parameter `post`) another span query.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.SpanNotQuery"
        span_or:
          externalDocs:
            url: https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-span-query
          description: Matches the union of its span clauses.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.SpanOrQuery"
        span_term:
          externalDocs:
            url: https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-span-term-query
          description: Matches spans containing a term.
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/_types.query_dsl.SpanTermQuery"
          minProperties: 1
          maxProperties: 1
        span_within:
          externalDocs:
            url: https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-span-within-query
          description: Returns matches which are enclosed inside another span query.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.SpanWithinQuery"
        sparse_vector:
          externalDocs:
            url: https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-sparse-vector-query
          description: Using input query vectors or a natural language processing
            model to convert a query into a list of token-weight pairs, queries against
            a sparse vector field.
          x-state: Generally available; Added in 8.15.0
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.SparseVectorQuery"
        term:
          externalDocs:
            url: https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-term-query
          description: |-
            Returns documents that contain an exact term in a provided field.
            To return a document, the query term must exactly match the queried field's value, including whitespace and capitalization.
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/_types.query_dsl.TermQuery"
          minProperties: 1
          maxProperties: 1
        terms:
          externalDocs:
            url: https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-terms-query
          description: |-
            Returns documents that contain one or more exact terms in a provided field.
            To return a document, one or more terms must exactly match a field value, including whitespace and capitalization.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.TermsQuery"
        terms_set:
          externalDocs:
            url: https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-terms-set-query
          description: |-
            Returns documents that contain a minimum number of exact terms in a provided field.
            To return a document, a required number of terms must exactly match the field values, including whitespace and capitalization.
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/_types.query_dsl.TermsSetQuery"
          minProperties: 1
          maxProperties: 1
        text_expansion:
          deprecated: true
          externalDocs:
            url: https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-text-expansion-query
          description: Uses a natural language processing model to convert the query
            text into a list of token-weight pairs which are then used in a query
            against a sparse vector or rank features field.
          x-state: Generally available; Added in 8.8.0
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/_types.query_dsl.TextExpansionQuery"
          minProperties: 1
          maxProperties: 1
        weighted_tokens:
          deprecated: true
          externalDocs:
            url: https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-weighted-tokens-query
          description: Supports returning text_expansion query results by sending
            in precomputed tokens with the query.
          x-state: Generally available; Added in 8.13.0
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/_types.query_dsl.WeightedTokensQuery"
          minProperties: 1
          maxProperties: 1
        wildcard:
          externalDocs:
            url: https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-wildcard-query
          description: Returns documents that contain terms matching a wildcard pattern.
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/_types.query_dsl.WildcardQuery"
          minProperties: 1
          maxProperties: 1
        wrapper:
          externalDocs:
            url: https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-wrapper-query
          description: A query that accepts any other query as base64 encoded string.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.WrapperQuery"
        type:
          deprecated: true
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.TypeQuery"
      minProperties: 1
      maxProperties: 1
      x-model: true
    _types.query_dsl.BoolQuery:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.QueryBase"
      - type: object
        properties:
          filter:
            description: |-
              The clause (query) must appear in matching documents.
              However, unlike `must`, the score of the query will be ignored.
            oneOf:
            - "$ref": "#/components/schemas/_types.query_dsl.QueryContainer"
            - type: array
              items:
                "$ref": "#/components/schemas/_types.query_dsl.QueryContainer"
          minimum_should_match:
            description: Specifies the number or percentage of `should` clauses returned
              documents must match.
            allOf:
            - "$ref": "#/components/schemas/_types.MinimumShouldMatch"
          must:
            description: The clause (query) must appear in matching documents and
              will contribute to the score.
            oneOf:
            - "$ref": "#/components/schemas/_types.query_dsl.QueryContainer"
            - type: array
              items:
                "$ref": "#/components/schemas/_types.query_dsl.QueryContainer"
          must_not:
            description: |-
              The clause (query) must not appear in the matching documents.
              Because scoring is ignored, a score of `0` is returned for all documents.
            oneOf:
            - "$ref": "#/components/schemas/_types.query_dsl.QueryContainer"
            - type: array
              items:
                "$ref": "#/components/schemas/_types.query_dsl.QueryContainer"
          should:
            description: The clause (query) should appear in the matching document.
            oneOf:
            - "$ref": "#/components/schemas/_types.query_dsl.QueryContainer"
            - type: array
              items:
                "$ref": "#/components/schemas/_types.query_dsl.QueryContainer"
      x-model: true
    _types.MinimumShouldMatch:
      description: The minimum number of terms that should match as integer, percentage
        or range
      oneOf:
      - type: number
      - type: string
    _types.query_dsl.QueryBase:
      type: object
      properties:
        boost:
          description: |-
            Floating point number used to decrease or increase the relevance scores of the query.
            Boost values are relative to the default value of 1.0.
            A boost value between 0 and 1.0 decreases the relevance score.
            A value greater than 1.0 increases the relevance score.
          default: 1
          type: number
        _name:
          type: string
      x-model: true
    _types.query_dsl.BoostingQuery:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.QueryBase"
      - type: object
        properties:
          negative_boost:
            description: Floating point number between 0 and 1.0 used to decrease
              the relevance scores of documents matching the `negative` query.
            type: number
          negative:
            description: Query used to decrease the relevance score of matching documents.
            allOf:
            - "$ref": "#/components/schemas/_types.query_dsl.QueryContainer"
          positive:
            description: Any returned documents must match this query.
            allOf:
            - "$ref": "#/components/schemas/_types.query_dsl.QueryContainer"
        required:
        - negative_boost
        - negative
        - positive
      x-model: true
    _types.query_dsl.CommonTermsQuery:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.QueryBase"
      - type: object
        properties:
          analyzer:
            type: string
          cutoff_frequency:
            type: number
          high_freq_operator:
            allOf:
            - "$ref": "#/components/schemas/_types.query_dsl.Operator"
          low_freq_operator:
            allOf:
            - "$ref": "#/components/schemas/_types.query_dsl.Operator"
          minimum_should_match:
            allOf:
            - "$ref": "#/components/schemas/_types.MinimumShouldMatch"
          query:
            type: string
        required:
        - query
      x-model: true
    _types.query_dsl.CombinedFieldsQuery:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.QueryBase"
      - type: object
        properties:
          fields:
            description: List of fields to search. Field wildcard patterns are allowed.
              Only `text` fields are supported, and they must all have the same search
              `analyzer`.
            type: array
            items:
              "$ref": "#/components/schemas/_types.Field"
          query:
            description: |-
              Text to search for in the provided `fields`.
              The `combined_fields` query analyzes the provided text before performing a search.
            type: string
          auto_generate_synonyms_phrase_query:
            description: If true, match phrase queries are automatically created for
              multi-term synonyms.
            default: true
            type: boolean
          operator:
            description: Boolean logic used to interpret text in the query value.
            default: or
            allOf:
            - "$ref": "#/components/schemas/_types.query_dsl.CombinedFieldsOperator"
          minimum_should_match:
            externalDocs:
              url: https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-minimum-should-match
            description: Minimum number of clauses that must match for a document
              to be returned.
            allOf:
            - "$ref": "#/components/schemas/_types.MinimumShouldMatch"
          zero_terms_query:
            description: |+
              Indicates whether no documents are returned if the analyzer removes all tokens, such as when using a `stop` filter.

              Supported values include:
                - `none`: No documents are returned if the analyzer removes all tokens.
                - `all`: Returns all documents, similar to a `match_all` query.

            default: none
            allOf:
            - "$ref": "#/components/schemas/_types.query_dsl.CombinedFieldsZeroTerms"
        required:
        - fields
        - query
      x-model: true
    _types.query_dsl.CombinedFieldsOperator:
      type: string
      enum:
      - or
      - and
    _types.query_dsl.CombinedFieldsZeroTerms:
      type: string
      enum:
      - none
      - all
    _types.query_dsl.ConstantScoreQuery:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.QueryBase"
      - type: object
        properties:
          filter:
            description: |-
              Filter query you wish to run. Any returned documents must match this query.
              Filter queries do not calculate relevance scores.
              To speed up performance, Elasticsearch automatically caches frequently used filter queries.
            allOf:
            - "$ref": "#/components/schemas/_types.query_dsl.QueryContainer"
        required:
        - filter
      x-model: true
    _types.query_dsl.DisMaxQuery:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.QueryBase"
      - type: object
        properties:
          queries:
            description: |-
              One or more query clauses.
              Returned documents must match one or more of these queries.
              If a document matches multiple queries, Elasticsearch uses the highest relevance score.
            type: array
            items:
              "$ref": "#/components/schemas/_types.query_dsl.QueryContainer"
          tie_breaker:
            description: Floating point number between 0 and 1.0 used to increase
              the relevance scores of documents matching multiple query clauses.
            default: 0
            type: number
        required:
        - queries
      x-model: true
    _types.query_dsl.DistanceFeatureQuery:
      externalDocs:
        url: https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-distance-feature-query
      oneOf:
      - "$ref": "#/components/schemas/_types.query_dsl.UntypedDistanceFeatureQuery"
      - "$ref": "#/components/schemas/_types.query_dsl.GeoDistanceFeatureQuery"
      - "$ref": "#/components/schemas/_types.query_dsl.DateDistanceFeatureQuery"
      x-model: true
    _types.query_dsl.UntypedDistanceFeatureQuery:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.DistanceFeatureQueryBase"
      - type: object
      x-model: true
    _types.query_dsl.DistanceFeatureQueryBase:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.QueryBase"
      - type: object
        properties:
          origin:
            description: |-
              Date or point of origin used to calculate distances.
              If the `field` value is a `date` or `date_nanos` field, the `origin` value must be a date.
              Date Math, such as `now-1h`, is supported.
              If the field value is a `geo_point` field, the `origin` value must be a geopoint.
            type: object
          pivot:
            description: |-
              Distance from the `origin` at which relevance scores receive half of the `boost` value.
              If the `field` value is a `date` or `date_nanos` field, the `pivot` value must be a time unit, such as `1h` or `10d`. If the `field` value is a `geo_point` field, the `pivot` value must be a distance unit, such as `1km` or `12m`.
            type: object
          field:
            description: |-
              Name of the field used to calculate distances. This field must meet the following criteria:
              be a `date`, `date_nanos` or `geo_point` field;
              have an `index` mapping parameter value of `true`, which is the default;
              have an `doc_values` mapping parameter value of `true`, which is the default.
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
        required:
        - origin
        - pivot
        - field
      x-model: true
    _types.query_dsl.GeoDistanceFeatureQuery:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.DistanceFeatureQueryBaseGeoLocationDistance"
      - type: object
      x-model: true
    _types.query_dsl.DistanceFeatureQueryBaseGeoLocationDistance:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.QueryBase"
      - type: object
        properties:
          origin:
            description: |-
              Date or point of origin used to calculate distances.
              If the `field` value is a `date` or `date_nanos` field, the `origin` value must be a date.
              Date Math, such as `now-1h`, is supported.
              If the field value is a `geo_point` field, the `origin` value must be a geopoint.
            allOf:
            - "$ref": "#/components/schemas/_types.GeoLocation"
          pivot:
            description: |-
              Distance from the `origin` at which relevance scores receive half of the `boost` value.
              If the `field` value is a `date` or `date_nanos` field, the `pivot` value must be a time unit, such as `1h` or `10d`. If the `field` value is a `geo_point` field, the `pivot` value must be a distance unit, such as `1km` or `12m`.
            allOf:
            - "$ref": "#/components/schemas/_types.Distance"
          field:
            description: |-
              Name of the field used to calculate distances. This field must meet the following criteria:
              be a `date`, `date_nanos` or `geo_point` field;
              have an `index` mapping parameter value of `true`, which is the default;
              have an `doc_values` mapping parameter value of `true`, which is the default.
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
        required:
        - origin
        - pivot
        - field
      x-model: true
    _types.Distance:
      type: string
    _types.query_dsl.DateDistanceFeatureQuery:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.DistanceFeatureQueryBaseDateMathDuration"
      - type: object
      x-model: true
    _types.query_dsl.DistanceFeatureQueryBaseDateMathDuration:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.QueryBase"
      - type: object
        properties:
          origin:
            description: |-
              Date or point of origin used to calculate distances.
              If the `field` value is a `date` or `date_nanos` field, the `origin` value must be a date.
              Date Math, such as `now-1h`, is supported.
              If the field value is a `geo_point` field, the `origin` value must be a geopoint.
            allOf:
            - "$ref": "#/components/schemas/_types.DateMath"
          pivot:
            description: |-
              Distance from the `origin` at which relevance scores receive half of the `boost` value.
              If the `field` value is a `date` or `date_nanos` field, the `pivot` value must be a time unit, such as `1h` or `10d`. If the `field` value is a `geo_point` field, the `pivot` value must be a distance unit, such as `1km` or `12m`.
            allOf:
            - "$ref": "#/components/schemas/_types.Duration"
          field:
            description: |-
              Name of the field used to calculate distances. This field must meet the following criteria:
              be a `date`, `date_nanos` or `geo_point` field;
              have an `index` mapping parameter value of `true`, which is the default;
              have an `doc_values` mapping parameter value of `true`, which is the default.
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
        required:
        - origin
        - pivot
        - field
      x-model: true
    _types.DateMath:
      type: string
    _types.query_dsl.ExistsQuery:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.QueryBase"
      - type: object
        properties:
          field:
            description: Name of the field you wish to search.
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
        required:
        - field
      x-model: true
    _types.query_dsl.FunctionScoreQuery:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.QueryBase"
      - type: object
        properties:
          boost_mode:
            description: |+
              Defines how he newly computed score is combined with the score of the query

              Supported values include:
                - `multiply`: Query score and function score are multiplied
                - `replace`: Only the function score is used.
              The query score is ignored.
                - `sum`: Query score and function score are added
                - `avg`: Query score and function score are averaged
                - `max`: Max of query score and function score
                - `min`: Min of query score and function score

            default: multiply
            allOf:
            - "$ref": "#/components/schemas/_types.query_dsl.FunctionBoostMode"
          functions:
            description: One or more functions that compute a new score for each document
              returned by the query.
            type: array
            items:
              "$ref": "#/components/schemas/_types.query_dsl.FunctionScoreContainer"
          max_boost:
            description: Restricts the new score to not exceed the provided limit.
            type: number
          min_score:
            description: Excludes documents that do not meet the provided score threshold.
            type: number
          query:
            description: A query that determines the documents for which a new score
              is computed.
            allOf:
            - "$ref": "#/components/schemas/_types.query_dsl.QueryContainer"
          score_mode:
            description: |+
              Specifies how the computed scores are combined

              Supported values include:
                - `multiply`: Scores are multiplied.
                - `sum`: Scores are summed.
                - `avg`: Scores are averaged.
                - `first`: The first function that has a matching filter is applied.
                - `max`: Maximum score is used.
                - `min`: Minimum score is used.

            default: multiply
            allOf:
            - "$ref": "#/components/schemas/_types.query_dsl.FunctionScoreMode"
      x-model: true
    _types.query_dsl.FunctionBoostMode:
      type: string
      enum:
      - multiply
      - replace
      - sum
      - avg
      - max
      - min
    _types.query_dsl.FunctionScoreContainer:
      allOf:
      - type: object
        properties:
          filter:
            allOf:
            - "$ref": "#/components/schemas/_types.query_dsl.QueryContainer"
          weight:
            type: number
          _name:
            description: A name to identify which function matched and influenced
              the score.
            x-state: Generally available; Added in 9.4.0
            type: string
      - type: object
        properties:
          exp:
            description: Function that scores a document with a exponential decay,
              depending on the distance of a numeric field value of the document from
              an origin.
            allOf:
            - "$ref": "#/components/schemas/_types.query_dsl.DecayFunction"
          gauss:
            description: Function that scores a document with a normal decay, depending
              on the distance of a numeric field value of the document from an origin.
            allOf:
            - "$ref": "#/components/schemas/_types.query_dsl.DecayFunction"
          linear:
            description: Function that scores a document with a linear decay, depending
              on the distance of a numeric field value of the document from an origin.
            allOf:
            - "$ref": "#/components/schemas/_types.query_dsl.DecayFunction"
          field_value_factor:
            description: |-
              Function allows you to use a field from a document to influence the score.
              It’s similar to using the script_score function, however, it avoids the overhead of scripting.
            allOf:
            - "$ref": "#/components/schemas/_types.query_dsl.FieldValueFactorScoreFunction"
          random_score:
            description: |-
              Generates scores that are uniformly distributed from 0 up to but not including 1.
              In case you want scores to be reproducible, it is possible to provide a `seed` and `field`.
            allOf:
            - "$ref": "#/components/schemas/_types.query_dsl.RandomScoreFunction"
          script_score:
            description: Enables you to wrap another query and customize the scoring
              of it optionally with a computation derived from other numeric field
              values in the doc using a script expression.
            allOf:
            - "$ref": "#/components/schemas/_types.query_dsl.ScriptScoreFunction"
        minProperties: 1
        maxProperties: 1
      x-model: true
    _types.query_dsl.DecayFunction:
      oneOf:
      - "$ref": "#/components/schemas/_types.query_dsl.UntypedDecayFunction"
      - "$ref": "#/components/schemas/_types.query_dsl.DateDecayFunction"
      - "$ref": "#/components/schemas/_types.query_dsl.NumericDecayFunction"
      - "$ref": "#/components/schemas/_types.query_dsl.GeoDecayFunction"
      x-model: true
    _types.query_dsl.UntypedDecayFunction:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.DecayFunctionBase"
      - type: object
      x-model: true
    _types.query_dsl.DecayFunctionBase:
      type: object
      properties:
        multi_value_mode:
          description: |+
            Determines how the distance is calculated when a field used for computing the decay contains multiple values.

            Supported values include:
              - `min`: Distance is the minimum distance.
              - `max`: Distance is the maximum distance.
              - `avg`: Distance is the average distance.
              - `sum`: Distance is the sum of all distances.

          default: min
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.MultiValueMode"
      x-model: true
    _types.query_dsl.MultiValueMode:
      type: string
      enum:
      - min
      - max
      - avg
      - sum
      x-model: true
    _types.query_dsl.DateDecayFunction:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.DecayFunctionBaseDateMathDuration"
      - type: object
      x-model: true
    _types.query_dsl.DecayFunctionBaseDateMathDuration:
      type: object
      properties:
        multi_value_mode:
          description: |+
            Determines how the distance is calculated when a field used for computing the decay contains multiple values.

            Supported values include:
              - `min`: Distance is the minimum distance.
              - `max`: Distance is the maximum distance.
              - `avg`: Distance is the average distance.
              - `sum`: Distance is the sum of all distances.

          default: min
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.MultiValueMode"
      x-model: true
    _types.query_dsl.NumericDecayFunction:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.DecayFunctionBasedoubledouble"
      - type: object
      x-model: true
    _types.query_dsl.DecayFunctionBasedoubledouble:
      type: object
      properties:
        multi_value_mode:
          description: |+
            Determines how the distance is calculated when a field used for computing the decay contains multiple values.

            Supported values include:
              - `min`: Distance is the minimum distance.
              - `max`: Distance is the maximum distance.
              - `avg`: Distance is the average distance.
              - `sum`: Distance is the sum of all distances.

          default: min
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.MultiValueMode"
      x-model: true
    _types.query_dsl.GeoDecayFunction:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.DecayFunctionBaseGeoLocationDistance"
      - type: object
      x-model: true
    _types.query_dsl.DecayFunctionBaseGeoLocationDistance:
      type: object
      properties:
        multi_value_mode:
          description: |+
            Determines how the distance is calculated when a field used for computing the decay contains multiple values.

            Supported values include:
              - `min`: Distance is the minimum distance.
              - `max`: Distance is the maximum distance.
              - `avg`: Distance is the average distance.
              - `sum`: Distance is the sum of all distances.

          default: min
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.MultiValueMode"
      x-model: true
    _types.query_dsl.FieldValueFactorScoreFunction:
      type: object
      properties:
        field:
          description: Field to be extracted from the document.
          allOf:
          - "$ref": "#/components/schemas/_types.Field"
        factor:
          description: Optional factor to multiply the field value with.
          default: 1
          type: number
        missing:
          description: |-
            Value used if the document doesn’t have that field.
            The modifier and factor are still applied to it as though it were read from the document.
          type: number
        modifier:
          description: |+
            Modifier to apply to the field value.

            Supported values include:
              - `none`: Do not apply any multiplier to the field value.
              - `log`: Take the common logarithm of the field value.
            Because this function will return a negative value and cause an error if used on values between 0 and 1, it is recommended to use `log1p` instead.
              - `log1p`: Add 1 to the field value and take the common logarithm.
              - `log2p`: Add 2 to the field value and take the common logarithm.
              - `ln`: Take the natural logarithm of the field value.
            Because this function will return a negative value and cause an error if used on values between 0 and 1, it is recommended to use `ln1p` instead.
              - `ln1p`: Add 1 to the field value and take the natural logarithm.
              - `ln2p`: Add 2 to the field value and take the natural logarithm.
              - `square`: Square the field value (multiply it by itself).
              - `sqrt`: Take the square root of the field value.
              - `reciprocal`: Reciprocate the field value, same as `1/x` where `x` is the field’s value.

          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.FieldValueFactorModifier"
      required:
      - field
      x-model: true
    _types.query_dsl.FieldValueFactorModifier:
      type: string
      enum:
      - none
      - log
      - log1p
      - log2p
      - ln
      - ln1p
      - ln2p
      - square
      - sqrt
      - reciprocal
    _types.query_dsl.RandomScoreFunction:
      type: object
      properties:
        field:
          allOf:
          - "$ref": "#/components/schemas/_types.Field"
        seed:
          oneOf:
          - type: number
          - type: string
      x-model: true
    _types.query_dsl.ScriptScoreFunction:
      type: object
      properties:
        script:
          description: A script that computes a score.
          allOf:
          - "$ref": "#/components/schemas/_types.Script"
      required:
      - script
      x-model: true
    _types.Script:
      type: object
      properties:
        source:
          description: The script source.
          allOf:
          - "$ref": "#/components/schemas/_types.ScriptSource"
        id:
          description: The `id` for a stored script.
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        params:
          description: |-
            Specifies any named parameters that are passed into the script as variables.
            Use parameters instead of hard-coded values to decrease compile time.
          type: object
          additionalProperties:
            type: object
        lang:
          description: |+
            Specifies the language the script is written in.

            Supported values include:
              - `painless`: Painless scripting language, purpose-built for Elasticsearch.
              - `expression`: Lucene’s expressions language, compiles a JavaScript expression to bytecode.
              - `mustache`: Mustache templated, used for templates.
              - `java`: Expert Java API

          default: painless
          allOf:
          - "$ref": "#/components/schemas/_types.ScriptLanguage"
        options:
          type: object
          additionalProperties:
            type: string
    _types.ScriptSource:
      oneOf:
      - type: string
      - "$ref": "#/components/schemas/_global.search._types.SearchRequestBody"
    _global.search._types.SearchRequestBody:
      type: object
      properties:
        aggregations:
          externalDocs:
            url: https://www.elastic.co/docs/explore-analyze/query-filter/aggregations
          description: Defines the aggregations that are run as part of the search
            request.
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/_types.aggregations.AggregationContainer"
        collapse:
          description: Collapses search results the values of the specified field.
          allOf:
          - "$ref": "#/components/schemas/_global.search._types.FieldCollapse"
        explain:
          description: If `true`, the request returns detailed information about score
            computation as part of a hit.
          default: false
          type: boolean
        ext:
          description: Configuration of search extensions defined by Elasticsearch
            plugins.
          type: object
          additionalProperties:
            type: object
        from:
          description: |-
            The starting document offset, which must be non-negative.
            By default, you cannot page through more than 10,000 hits using the `from` and `size` parameters.
            To page through more hits, use the `search_after` parameter.
          default: 0
          type: number
        highlight:
          externalDocs:
            url: https://www.elastic.co/docs/reference/elasticsearch/rest-apis/highlighting
          description: Specifies the highlighter to use for retrieving highlighted
            snippets from one or more fields in your search results.
          allOf:
          - "$ref": "#/components/schemas/_global.search._types.Highlight"
        track_total_hits:
          description: |-
            Number of hits matching the query to count accurately.
            If `true`, the exact number of hits is returned at the cost of some performance.
            If `false`, the  response does not include the total number of hits matching the query.
          default: '10000'
          allOf:
          - "$ref": "#/components/schemas/_global.search._types.TrackHits"
        indices_boost:
          externalDocs:
            url: https://www.elastic.co/docs/explore-analyze/query-filter/languages/querydsl#relevance-scores
          description: |-
            Boost the `_score` of documents from specified indices.
            The boost value is the factor by which scores are multiplied.
            A boost value greater than `1.0` increases the score.
            A boost value between `0` and `1.0` decreases the score.
          type: array
          items:
            type: object
            additionalProperties:
              type: number
            minProperties: 1
            maxProperties: 1
        docvalue_fields:
          externalDocs:
            url: https://www.elastic.co/docs/reference/elasticsearch/rest-apis/retrieve-selected-fields#docvalue-fields
          description: |-
            An array of wildcard (`*`) field patterns.
            The request returns doc values for field names matching these patterns in the `hits.fields` property of the response.
          type: array
          items:
            "$ref": "#/components/schemas/_types.query_dsl.FieldAndFormat"
        knn:
          externalDocs:
            url: https://www.elastic.co/docs/solutions/search/vector/knn#approximate-knn
          description: The approximate kNN search to run.
          x-state: Generally available; Added in 8.4.0
          oneOf:
          - "$ref": "#/components/schemas/_types.KnnSearch"
          - type: array
            items:
              "$ref": "#/components/schemas/_types.KnnSearch"
        rank:
          description: The Reciprocal Rank Fusion (RRF) to use.
          x-state: Generally available; Added in 8.8.0
          allOf:
          - "$ref": "#/components/schemas/_types.RankContainer"
        min_score:
          description: |-
            The minimum `_score` for matching documents.
            Documents with a lower `_score` are not included in search results or results collected by aggregations.
          type: number
        post_filter:
          description: |-
            Use the `post_filter` parameter to filter search results.
            The search hits are filtered after the aggregations are calculated.
            A post filter has no impact on the aggregation results.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.QueryContainer"
        profile:
          description: |-
            Set to `true` to return detailed timing information about the execution of individual components in a search request.
            NOTE: This is a debugging tool and adds significant overhead to search execution.
          default: false
          type: boolean
        query:
          externalDocs:
            url: https://www.elastic.co/docs/explore-analyze/query-filter/languages/querydsl
          description: The search definition using the Query DSL.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.QueryContainer"
        rescore:
          description: Can be used to improve precision by reordering just the top
            (for example 100 - 500) documents returned by the `query` and `post_filter`
            phases.
          oneOf:
          - "$ref": "#/components/schemas/_global.search._types.Rescore"
          - type: array
            items:
              "$ref": "#/components/schemas/_global.search._types.Rescore"
        retriever:
          externalDocs:
            url: https://www.elastic.co/docs/reference/elasticsearch/rest-apis/retrievers
          description: |-
            A retriever is a specification to describe top documents returned from a search.
            A retriever replaces other elements of the search API that also return top documents such as `query` and `knn`.
          x-state: Generally available; Added in 8.14.0
          allOf:
          - "$ref": "#/components/schemas/_types.RetrieverContainer"
        script_fields:
          description: Retrieve a script evaluation (based on different fields) for
            each hit.
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/_types.ScriptField"
        search_after:
          description: Used to retrieve the next page of hits using a set of sort
            values from the previous page.
          allOf:
          - "$ref": "#/components/schemas/_types.SortResults"
        size:
          description: |-
            The number of hits to return, which must not be negative.
            By default, you cannot page through more than 10,000 hits using the `from` and `size` parameters.
            To page through more hits, use the `search_after` property.
          default: 10
          type: number
        slice:
          description: Split a scrolled search into multiple slices that can be consumed
            independently.
          allOf:
          - "$ref": "#/components/schemas/_types.SlicedScroll"
        sort:
          externalDocs:
            url: https://www.elastic.co/docs/reference/elasticsearch/rest-apis/sort-search-results
          description: A comma-separated list of <field>:<direction> pairs.
          allOf:
          - "$ref": "#/components/schemas/_types.Sort"
        _source:
          externalDocs:
            url: https://www.elastic.co/docs/reference/elasticsearch/rest-apis/retrieve-selected-fields#source-filtering
          description: |-
            The source fields that are returned for matching documents.
            These fields are returned in the `hits._source` property of the search response.
            If the `stored_fields` property is specified, the `_source` property defaults to `false`.
            Otherwise, it defaults to `true`.
          allOf:
          - "$ref": "#/components/schemas/_global.search._types.SourceConfig"
        fields:
          description: |-
            An array of wildcard (`*`) field patterns.
            The request returns values for field names matching these patterns in the `hits.fields` property of the response.
          type: array
          items:
            "$ref": "#/components/schemas/_types.query_dsl.FieldAndFormat"
        suggest:
          description: Defines a suggester that provides similar looking terms based
            on a provided text.
          allOf:
          - "$ref": "#/components/schemas/_global.search._types.Suggester"
        terminate_after:
          description: |-
            The maximum number of documents to collect for each shard.
            If a query reaches this limit, Elasticsearch terminates the query early.
            Elasticsearch collects documents before sorting.

            IMPORTANT: Use with caution.
            Elasticsearch applies this property to each shard handling the request.
            When possible, let Elasticsearch perform early termination automatically.
            Avoid specifying this property for requests that target data streams with backing indices across multiple data tiers.

            If set to `0` (default), the query does not terminate early.
          default: 0
          type: number
        timeout:
          description: |-
            The period of time to wait for a response from each shard.
            If no response is received before the timeout expires, the request fails and returns an error.
            Defaults to no timeout.
          type: string
        track_scores:
          description: If `true`, calculate and return document scores, even if the
            scores are not used for sorting.
          default: false
          type: boolean
        version:
          description: If `true`, the request returns the document version as part
            of a hit.
          default: false
          type: boolean
        seq_no_primary_term:
          externalDocs:
            url: https://www.elastic.co/docs/reference/elasticsearch/rest-apis/optimistic-concurrency-control
          description: If `true`, the request returns sequence number and primary
            term of the last modification of each hit.
          type: boolean
        stored_fields:
          externalDocs:
            url: https://www.elastic.co/docs/reference/elasticsearch/rest-apis/retrieve-selected-fields#stored-fields
          description: |-
            A comma-separated list of stored fields to return as part of a hit.
            If no fields are specified, no stored fields are included in the response.
            If this field is specified, the `_source` property defaults to `false`.
            You can pass `_source: true` to return both source fields and stored fields in the search response.
          allOf:
          - "$ref": "#/components/schemas/_types.Fields"
        pit:
          description: |-
            Limit the search to a point in time (PIT).
            If you provide a PIT, you cannot specify an `<index>` in the request path.
          allOf:
          - "$ref": "#/components/schemas/_global.search._types.PointInTimeReference"
        runtime_mappings:
          externalDocs:
            url: https://www.elastic.co/docs/manage-data/data-store/mapping/define-runtime-fields-in-search-request
          description: |-
            One or more runtime fields in the search request.
            These fields take precedence over mapped fields with the same name.
          allOf:
          - "$ref": "#/components/schemas/_types.mapping.RuntimeFields"
        stats:
          description: |-
            The stats groups to associate with the search.
            Each group maintains a statistics aggregation for its associated searches.
            You can retrieve these stats using the indices stats API.
          type: array
          items:
            type: string
    _global.search._types.FieldCollapse:
      type: object
      properties:
        field:
          description: The field to collapse the result set on
          allOf:
          - "$ref": "#/components/schemas/_types.Field"
        inner_hits:
          description: The number of inner hits and their sort order
          oneOf:
          - "$ref": "#/components/schemas/_global.search._types.InnerHits"
          - type: array
            items:
              "$ref": "#/components/schemas/_global.search._types.InnerHits"
        max_concurrent_group_searches:
          description: The number of concurrent requests allowed to retrieve the inner_hits
            per group
          type: number
        collapse:
          allOf:
          - "$ref": "#/components/schemas/_global.search._types.FieldCollapse"
      required:
      - field
      x-model: true
      externalDocs:
        url: https://www.elastic.co/docs/reference/elasticsearch/rest-apis/collapse-search-results
    _global.search._types.InnerHits:
      type: object
      properties:
        name:
          description: |-
            The name for the particular inner hit definition in the response.
            Useful when a search request contains multiple inner hits.
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        size:
          description: The maximum number of hits to return per `inner_hits`.
          default: 3
          type: number
        from:
          description: Inner hit starting document offset.
          default: 0
          type: number
        collapse:
          allOf:
          - "$ref": "#/components/schemas/_global.search._types.FieldCollapse"
        docvalue_fields:
          type: array
          items:
            "$ref": "#/components/schemas/_types.query_dsl.FieldAndFormat"
        explain:
          type: boolean
        highlight:
          allOf:
          - "$ref": "#/components/schemas/_global.search._types.Highlight"
        ignore_unmapped:
          type: boolean
        script_fields:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/_types.ScriptField"
        seq_no_primary_term:
          type: boolean
        fields:
          type: array
          items:
            "$ref": "#/components/schemas/_types.Field"
        sort:
          description: |-
            How the inner hits should be sorted per `inner_hits`.
            By default, inner hits are sorted by score.
          allOf:
          - "$ref": "#/components/schemas/_types.Sort"
        _source:
          allOf:
          - "$ref": "#/components/schemas/_global.search._types.SourceConfig"
        stored_fields:
          allOf:
          - "$ref": "#/components/schemas/_types.Fields"
        track_scores:
          default: false
          type: boolean
        version:
          type: boolean
    _types.Name:
      type: string
    _types.query_dsl.FieldAndFormat:
      description: A reference to a field with formatting instructions on how to return
        the value
      type: object
      properties:
        field:
          description: A wildcard pattern. The request returns values for field names
            matching this pattern.
          allOf:
          - "$ref": "#/components/schemas/_types.Field"
        format:
          description: The format in which the values are returned.
          type: string
        include_unmapped:
          type: boolean
      required:
      - field
    _global.search._types.Highlight:
      allOf:
      - "$ref": "#/components/schemas/_global.search._types.HighlightBase"
      - type: object
        properties:
          encoder:
            allOf:
            - "$ref": "#/components/schemas/_global.search._types.HighlighterEncoder"
          fields:
            oneOf:
            - type: object
              additionalProperties:
                "$ref": "#/components/schemas/_global.search._types.HighlightField"
              minProperties: 1
              maxProperties: 1
            - type: array
              items:
                type: object
                additionalProperties:
                  "$ref": "#/components/schemas/_global.search._types.HighlightField"
                minProperties: 1
                maxProperties: 1
        required:
        - fields
    _global.search._types.HighlighterEncoder:
      type: string
      enum:
      - default
      - html
    _global.search._types.HighlightField:
      allOf:
      - "$ref": "#/components/schemas/_global.search._types.HighlightBase"
      - type: object
        properties:
          fragment_offset:
            type: number
          matched_fields:
            allOf:
            - "$ref": "#/components/schemas/_types.Fields"
    _global.search._types.HighlightBase:
      type: object
      properties:
        type:
          description: |2+


            Supported values include:
              - `plain`: The `plain` highlighter uses the standard Lucene highlighter
              - `fvh`: The fvh highlighter uses the Lucene Fast Vector highlighter.
              - `unified`: The unified highlighter uses the Lucene Unified Highlighter.

          allOf:
          - "$ref": "#/components/schemas/_global.search._types.HighlighterType"
        boundary_chars:
          description: A string that contains each boundary character.
          default: ".,!? \\t\\n"
          type: string
        boundary_max_scan:
          description: How far to scan for boundary characters.
          default: 20
          type: number
        boundary_scanner:
          description: |+
            Specifies how to break the highlighted fragments: chars, sentence, or word.
            Only valid for the unified and fvh highlighters.
            Defaults to `sentence` for the `unified` highlighter. Defaults to `chars` for the `fvh` highlighter.

            Supported values include:
              - `chars`: Use the characters specified by `boundary_chars` as highlighting boundaries.
            The `boundary_max_scan` setting controls how far to scan for boundary characters.
            Only valid for the `fvh` highlighter.
              - `sentence`: Break highlighted fragments at the next sentence boundary, as determined by Java’s `BreakIterator`.
            You can specify the locale to use with `boundary_scanner_locale`.
            When used with the `unified` highlighter, the `sentence` scanner splits sentences bigger than `fragment_size` at the first word boundary next to fragment_size.
            You can set `fragment_size` to `0` to never split any sentence.
              - `word`: Break highlighted fragments at the next word boundary, as determined by Java’s `BreakIterator`.
            You can specify the locale to use with `boundary_scanner_locale`.

          allOf:
          - "$ref": "#/components/schemas/_global.search._types.BoundaryScanner"
        boundary_scanner_locale:
          description: |-
            Controls which locale is used to search for sentence and word boundaries.
            This parameter takes a form of a language tag, for example: `"en-US"`, `"fr-FR"`, `"ja-JP"`.
          default: Locale.ROOT
          type: string
        force_source:
          deprecated: true
          type: boolean
        fragmenter:
          description: |-
            Specifies how text should be broken up in highlight snippets: `simple` or `span`.
            Only valid for the `plain` highlighter.
          default: span
          allOf:
          - "$ref": "#/components/schemas/_global.search._types.HighlighterFragmenter"
        fragment_size:
          description: The size of the highlighted fragment in characters.
          default: 100
          type: number
        highlight_filter:
          type: boolean
        highlight_query:
          description: |-
            Highlight matches for a query other than the search query.
            This is especially useful if you use a rescore query because those are not taken into account by highlighting by default.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.QueryContainer"
        max_fragment_length:
          type: number
        max_analyzed_offset:
          description: |-
            If set to a non-negative value, highlighting stops at this defined maximum limit.
            The rest of the text is not processed, thus not highlighted and no error is returned
            The `max_analyzed_offset` query setting does not override the `index.highlight.max_analyzed_offset` setting, which prevails when it’s set to lower value than the query setting.
          type: number
        no_match_size:
          description: The amount of text you want to return from the beginning of
            the field if there are no matching fragments to highlight.
          default: 0
          type: number
        number_of_fragments:
          description: |-
            The maximum number of fragments to return.
            If the number of fragments is set to `0`, no fragments are returned.
            Instead, the entire field contents are highlighted and returned.
            This can be handy when you need to highlight short texts such as a title or address, but fragmentation is not required.
            If `number_of_fragments` is `0`, `fragment_size` is ignored.
          default: 5
          type: number
        options:
          type: object
          additionalProperties:
            type: object
        order:
          description: |-
            Sorts highlighted fragments by score when set to `score`.
            By default, fragments will be output in the order they appear in the field (order: `none`).
            Setting this option to `score` will output the most relevant fragments first.
            Each highlighter applies its own logic to compute relevancy scores.
          default: none
          allOf:
          - "$ref": "#/components/schemas/_global.search._types.HighlighterOrder"
        phrase_limit:
          description: |-
            Controls the number of matching phrases in a document that are considered.
            Prevents the `fvh` highlighter from analyzing too many phrases and consuming too much memory.
            When using `matched_fields`, `phrase_limit` phrases per matched field are considered. Raising the limit increases query time and consumes more memory.
            Only supported by the `fvh` highlighter.
          default: 256
          type: number
        post_tags:
          description: |-
            Use in conjunction with `pre_tags` to define the HTML tags to use for the highlighted text.
            By default, highlighted text is wrapped in `<em>` and `</em>` tags.
          type: array
          items:
            type: string
        pre_tags:
          description: |-
            Use in conjunction with `post_tags` to define the HTML tags to use for the highlighted text.
            By default, highlighted text is wrapped in `<em>` and `</em>` tags.
          type: array
          items:
            type: string
        require_field_match:
          description: |-
            By default, only fields that contains a query match are highlighted.
            Set to `false` to highlight all fields.
          default: true
          type: boolean
        tags_schema:
          description: Set to `styled` to use the built-in tag schema.
          allOf:
          - "$ref": "#/components/schemas/_global.search._types.HighlighterTagsSchema"
    _global.search._types.HighlighterType:
      anyOf:
      - type: string
        enum:
        - plain
        - fvh
        - unified
      - type: string
    _global.search._types.BoundaryScanner:
      type: string
      enum:
      - chars
      - sentence
      - word
    _global.search._types.HighlighterFragmenter:
      type: string
      enum:
      - simple
      - span
    _global.search._types.HighlighterOrder:
      type: string
      enum:
      - score
    _global.search._types.HighlighterTagsSchema:
      type: string
      enum:
      - styled
    _types.ScriptField:
      type: object
      properties:
        script:
          allOf:
          - "$ref": "#/components/schemas/_types.Script"
        ignore_failure:
          type: boolean
      required:
      - script
    _types.Sort:
      oneOf:
      - "$ref": "#/components/schemas/_types.SortCombinations"
      - type: array
        items:
          "$ref": "#/components/schemas/_types.SortCombinations"
    _types.SortCombinations:
      oneOf:
      - "$ref": "#/components/schemas/_types.Field"
      - "$ref": "#/components/schemas/_types.SortOptions"
    _types.SortOptions:
      type: object
      properties:
        _score:
          allOf:
          - "$ref": "#/components/schemas/_types.ScoreSort"
        _doc:
          allOf:
          - "$ref": "#/components/schemas/_types.ScoreSort"
        _geo_distance:
          allOf:
          - "$ref": "#/components/schemas/_types.GeoDistanceSort"
        _script:
          allOf:
          - "$ref": "#/components/schemas/_types.ScriptSort"
      minProperties: 1
      maxProperties: 1
    _types.ScoreSort:
      type: object
      properties:
        order:
          description: |2+


            Supported values include:
              - `asc`: Ascending (smallest to largest)
              - `desc`: Descending (largest to smallest)

          allOf:
          - "$ref": "#/components/schemas/_types.SortOrder"
    _types.SortOrder:
      type: string
      enum:
      - asc
      - desc
    _types.GeoDistanceSort:
      type: object
      properties:
        mode:
          allOf:
          - "$ref": "#/components/schemas/_types.SortMode"
        distance_type:
          description: |2+


            Supported values include:
              - `arc`: The `arc` calculation is the most accurate.
              - `plane`: The `plane` calculation is faster but less accurate.

          allOf:
          - "$ref": "#/components/schemas/_types.GeoDistanceType"
        ignore_unmapped:
          type: boolean
        order:
          description: |2+


            Supported values include:
              - `asc`: Ascending (smallest to largest)
              - `desc`: Descending (largest to smallest)

          allOf:
          - "$ref": "#/components/schemas/_types.SortOrder"
        unit:
          allOf:
          - "$ref": "#/components/schemas/_types.DistanceUnit"
        nested:
          allOf:
          - "$ref": "#/components/schemas/_types.NestedSortValue"
    _types.SortMode:
      type: string
      enum:
      - min
      - max
      - sum
      - avg
      - median
    _types.GeoDistanceType:
      type: string
      enum:
      - arc
      - plane
    _types.DistanceUnit:
      type: string
      enum:
      - in
      - ft
      - yd
      - mi
      - nmi
      - km
      - m
      - cm
      - mm
    _types.NestedSortValue:
      type: object
      properties:
        filter:
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.QueryContainer"
        max_children:
          type: number
        nested:
          allOf:
          - "$ref": "#/components/schemas/_types.NestedSortValue"
        path:
          allOf:
          - "$ref": "#/components/schemas/_types.Field"
      required:
      - path
    _types.ScriptSort:
      type: object
      properties:
        order:
          description: |2+


            Supported values include:
              - `asc`: Ascending (smallest to largest)
              - `desc`: Descending (largest to smallest)

          allOf:
          - "$ref": "#/components/schemas/_types.SortOrder"
        script:
          allOf:
          - "$ref": "#/components/schemas/_types.Script"
        type:
          allOf:
          - "$ref": "#/components/schemas/_types.ScriptSortType"
        mode:
          allOf:
          - "$ref": "#/components/schemas/_types.SortMode"
        nested:
          allOf:
          - "$ref": "#/components/schemas/_types.NestedSortValue"
      required:
      - script
    _types.ScriptSortType:
      type: string
      enum:
      - string
      - number
      - version
    _global.search._types.SourceConfig:
      description: Defines how to fetch a source. Fetching can be disabled entirely,
        or the source can be filtered.
      oneOf:
      - type: boolean
      - "$ref": "#/components/schemas/_global.search._types.SourceFilter"
    _global.search._types.SourceFilter:
      type: object
      properties:
        exclude_vectors:
          description: |-
            If `true`, vector fields are excluded from the returned source.

            This option takes precedence over `includes`: any vector field will
            remain excluded even if it matches an `includes` rule.
          type: boolean
        excludes:
          description: A list of fields to exclude from the returned source.
          allOf:
          - "$ref": "#/components/schemas/_types.Fields"
        includes:
          description: A list of fields to include in the returned source.
          allOf:
          - "$ref": "#/components/schemas/_types.Fields"
    _types.KnnSearch:
      type: object
      properties:
        field:
          description: The name of the vector field to search against
          allOf:
          - "$ref": "#/components/schemas/_types.Field"
        query_vector:
          description: The query vector
          allOf:
          - "$ref": "#/components/schemas/_types.QueryVector"
        query_vector_builder:
          description: The query vector builder. You must provide a query_vector_builder
            or query_vector, but not both.
          allOf:
          - "$ref": "#/components/schemas/_types.QueryVectorBuilder"
        k:
          description: The final number of nearest neighbors to return as top hits
          type: number
        num_candidates:
          description: The number of nearest neighbor candidates to consider per shard
          type: number
        visit_percentage:
          description: The percentage of vectors to explore per shard while doing
            knn search with bbq_disk
          x-state: Generally available; Added in 9.2.0
          type: number
        boost:
          description: Boost value to apply to kNN scores
          type: number
        filter:
          description: Filters for the kNN search query
          oneOf:
          - "$ref": "#/components/schemas/_types.query_dsl.QueryContainer"
          - type: array
            items:
              "$ref": "#/components/schemas/_types.query_dsl.QueryContainer"
        similarity:
          description: The minimum similarity for a vector to be considered a match
          type: number
        inner_hits:
          description: If defined, each search hit will contain inner hits.
          allOf:
          - "$ref": "#/components/schemas/_global.search._types.InnerHits"
        rescore_vector:
          description: Apply oversampling and rescoring to quantized vectors
          x-state: Generally available; Added in 8.18.0
          allOf:
          - "$ref": "#/components/schemas/_types.RescoreVector"
        _name:
          type: string
      required:
      - field
    _types.QueryVector:
      type: array
      items:
        type: number
    _types.QueryVectorBuilder:
      type: object
      properties:
        text_embedding:
          allOf:
          - "$ref": "#/components/schemas/_types.TextEmbedding"
      minProperties: 1
      maxProperties: 1
    _types.TextEmbedding:
      type: object
      properties:
        model_id:
          description: |-
            Model ID is required for all dense_vector fields but
            may be inferred for semantic_text fields
          x-state: Generally available; Added in 8.18.0
          type: string
        model_text:
          type: string
      required:
      - model_text
    _types.RescoreVector:
      type: object
      properties:
        oversample:
          description: Applies the specified oversample factor to k on the approximate
            kNN search
          type: number
      required:
      - oversample
    _types.RankContainer:
      type: object
      properties:
        rrf:
          description: The reciprocal rank fusion parameters
          allOf:
          - "$ref": "#/components/schemas/_types.RrfRank"
      minProperties: 1
      maxProperties: 1
    _types.RrfRank:
      allOf:
      - "$ref": "#/components/schemas/_types.RankBase"
      - type: object
        properties:
          rank_constant:
            description: How much influence documents in individual result sets per
              query have over the final ranked result set
            type: number
          rank_window_size:
            description: Size of the individual result sets per query
            type: number
    _types.RankBase:
      type: object
    _global.search._types.Rescore:
      allOf:
      - type: object
        properties:
          window_size:
            type: number
      - type: object
        properties:
          query:
            allOf:
            - "$ref": "#/components/schemas/_global.search._types.RescoreQuery"
          learning_to_rank:
            allOf:
            - "$ref": "#/components/schemas/_global.search._types.LearningToRank"
          script:
            allOf:
            - "$ref": "#/components/schemas/_global.search._types.ScriptRescore"
        minProperties: 1
        maxProperties: 1
    _global.search._types.RescoreQuery:
      type: object
      properties:
        rescore_query:
          description: |-
            The query to use for rescoring.
            This query is only run on the Top-K results returned by the `query` and `post_filter` phases.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.QueryContainer"
        query_weight:
          description: Relative importance of the original query versus the rescore
            query.
          default: 1
          type: number
        rescore_query_weight:
          description: Relative importance of the rescore query versus the original
            query.
          default: 1
          type: number
        score_mode:
          description: |+
            Determines how scores are combined.

            Supported values include:
              - `avg`: Average the original score and the rescore query score.
              - `max`: Take the max of original score and the rescore query score.
              - `min`: Take the min of the original score and the rescore query score.
              - `multiply`: Multiply the original score by the rescore query score.
            Useful for `function` query rescores.
              - `total`: Add the original score and the rescore query score.

          default: total
          allOf:
          - "$ref": "#/components/schemas/_global.search._types.ScoreMode"
      required:
      - rescore_query
    _global.search._types.ScoreMode:
      type: string
      enum:
      - avg
      - max
      - min
      - multiply
      - total
    _global.search._types.LearningToRank:
      type: object
      properties:
        model_id:
          description: The unique identifier of the trained model uploaded to Elasticsearch
          type: string
        params:
          description: Named parameters to be passed to the query templates used for
            feature
          type: object
          additionalProperties:
            type: object
      required:
      - model_id
    _global.search._types.ScriptRescore:
      type: object
      properties:
        script:
          allOf:
          - "$ref": "#/components/schemas/_types.Script"
      required:
      - script
    _types.RetrieverContainer:
      type: object
      properties:
        standard:
          description: A retriever that replaces the functionality of a traditional
            query.
          allOf:
          - "$ref": "#/components/schemas/_types.StandardRetriever"
        knn:
          description: A retriever that replaces the functionality  of a knn search.
          allOf:
          - "$ref": "#/components/schemas/_types.KnnRetriever"
        rrf:
          description: A retriever that produces top documents from reciprocal rank
            fusion (RRF).
          allOf:
          - "$ref": "#/components/schemas/_types.RRFRetriever"
        text_similarity_reranker:
          description: A retriever that reranks the top documents based on a reranking
            model using the InferenceAPI
          allOf:
          - "$ref": "#/components/schemas/_types.TextSimilarityReranker"
        rule:
          description: A retriever that replaces the functionality of a rule query.
          allOf:
          - "$ref": "#/components/schemas/_types.RuleRetriever"
        rescorer:
          description: A retriever that re-scores only the results produced by its
            child retriever.
          allOf:
          - "$ref": "#/components/schemas/_types.RescorerRetriever"
        linear:
          description: A retriever that supports the combination of different retrievers
            through a weighted linear combination.
          allOf:
          - "$ref": "#/components/schemas/_types.LinearRetriever"
        pinned:
          description: |-
            A pinned retriever applies pinned documents to the underlying retriever.
            This retriever will rewrite to a PinnedQueryBuilder.
          allOf:
          - "$ref": "#/components/schemas/_types.PinnedRetriever"
        diversify:
          description: A retriever that diversifies the results from its child retriever.
          allOf:
          - "$ref": "#/components/schemas/_types.DiversifyRetriever"
      minProperties: 1
      maxProperties: 1
    _types.StandardRetriever:
      allOf:
      - "$ref": "#/components/schemas/_types.RetrieverBase"
      - type: object
        properties:
          query:
            description: Defines a query to retrieve a set of top documents.
            allOf:
            - "$ref": "#/components/schemas/_types.query_dsl.QueryContainer"
          search_after:
            description: Defines a search after object parameter used for pagination.
            allOf:
            - "$ref": "#/components/schemas/_types.SortResults"
          terminate_after:
            description: Maximum number of documents to collect for each shard.
            type: number
          sort:
            description: A sort object that that specifies the order of matching documents.
            allOf:
            - "$ref": "#/components/schemas/_types.Sort"
          collapse:
            description: Collapses the top documents by a specified key into a single
              top document per key.
            allOf:
            - "$ref": "#/components/schemas/_global.search._types.FieldCollapse"
    _types.RetrieverBase:
      type: object
      properties:
        filter:
          description: Query to filter the documents that can match.
          oneOf:
          - "$ref": "#/components/schemas/_types.query_dsl.QueryContainer"
          - type: array
            items:
              "$ref": "#/components/schemas/_types.query_dsl.QueryContainer"
        min_score:
          description: Minimum _score for matching documents. Documents with a lower
            _score are not included in the top documents.
          type: number
        _name:
          description: Retriever name.
          type: string
    _types.KnnRetriever:
      allOf:
      - "$ref": "#/components/schemas/_types.RetrieverBase"
      - type: object
        properties:
          field:
            description: The name of the vector field to search against.
            type: string
          query_vector:
            description: Query vector. Must have the same number of dimensions as
              the vector field you are searching against. You must provide a query_vector_builder
              or query_vector, but not both.
            allOf:
            - "$ref": "#/components/schemas/_types.QueryVector"
          query_vector_builder:
            description: Defines a model to build a query vector.
            allOf:
            - "$ref": "#/components/schemas/_types.QueryVectorBuilder"
          k:
            description: Number of nearest neighbors to return as top hits.
            type: number
          num_candidates:
            description: Number of nearest neighbor candidates to consider per shard.
            type: number
          visit_percentage:
            description: The percentage of vectors to explore per shard while doing
              knn search with bbq_disk
            x-state: Generally available; Added in 9.2.0
            type: number
          similarity:
            description: The minimum similarity required for a document to be considered
              a match.
            type: number
          rescore_vector:
            description: Apply oversampling and rescoring to quantized vectors
            x-state: Generally available; Added in 8.18.0
            allOf:
            - "$ref": "#/components/schemas/_types.RescoreVector"
        required:
        - field
        - k
        - num_candidates
    _types.RRFRetriever:
      allOf:
      - "$ref": "#/components/schemas/_types.RetrieverBase"
      - type: object
        properties:
          retrievers:
            description: A list of child retrievers to specify which sets of returned
              top documents will have the RRF formula applied to them. Each retriever
              can optionally include a weight parameter.
            type: array
            items:
              "$ref": "#/components/schemas/_types.RRFRetrieverEntry"
          rank_constant:
            description: This value determines how much influence documents in individual
              result sets per query have over the final ranked result set.
            type: number
          rank_window_size:
            description: This value determines the size of the individual result sets
              per query.
            type: number
          query:
            type: string
          fields:
            type: array
            items:
              type: string
        required:
        - retrievers
    _types.RRFRetrieverEntry:
      description: Either a direct RetrieverContainer (backward compatible) or an
        RRFRetrieverComponent with weight.
      oneOf:
      - "$ref": "#/components/schemas/_types.RetrieverContainer"
      - "$ref": "#/components/schemas/_types.RRFRetrieverComponent"
    _types.RRFRetrieverComponent:
      description: Wraps a retriever with an optional weight for RRF scoring.
      type: object
      properties:
        retriever:
          description: The nested retriever configuration.
          allOf:
          - "$ref": "#/components/schemas/_types.RetrieverContainer"
        weight:
          description: Weight multiplier for this retriever's contribution to the
            RRF score. Higher values increase influence. Defaults to 1.0 if not specified.
            Must be non-negative.
          default: 1
          type: number
      required:
      - retriever
    _types.TextSimilarityReranker:
      allOf:
      - "$ref": "#/components/schemas/_types.RetrieverBase"
      - type: object
        properties:
          retriever:
            description: The nested retriever which will produce the first-level results,
              that will later be used for reranking.
            allOf:
            - "$ref": "#/components/schemas/_types.RetrieverContainer"
          rank_window_size:
            description: This value determines how many documents we will consider
              from the nested retriever.
            type: number
          inference_id:
            description: Unique identifier of the inference endpoint created using
              the inference API.
            type: string
          inference_text:
            description: The text snippet used as the basis for similarity comparison.
            type: string
          field:
            description: The document field to be used for text similarity comparisons.
              This field should contain the text that will be evaluated against the
              inference_text.
            type: string
          chunk_rescorer:
            description: Whether to rescore on only the best matching chunks.
            x-state: Generally available; Added in 9.2.0
            allOf:
            - "$ref": "#/components/schemas/_types.ChunkRescorer"
        required:
        - retriever
        - inference_text
        - field
    _types.ChunkRescorer:
      type: object
      properties:
        size:
          description: The number of chunks per document to evaluate for reranking.
          type: number
        chunking_settings:
          description: Chunking settings to apply
          allOf:
          - "$ref": "#/components/schemas/_types.mapping.ChunkRescorerChunkingSettings"
    _types.mapping.ChunkRescorerChunkingSettings:
      type: object
      properties:
        strategy:
          externalDocs:
            url: https://www.elastic.co/docs/explore-analyze/elastic-inference/inference-api#chunking-strategies
          description: |-
            The chunking strategy: `sentence`, `word`, `none` or `recursive`.

             * If `strategy` is set to `recursive`, you must also specify:

            - `max_chunk_size`
            - either `separators` or`separator_group`

            Learn more about different chunking strategies in the linked documentation.
          default: sentence
          type: string
        separator_group:
          description: |-
            Only applicable to the `recursive` strategy and required when using it.

            Sets a predefined list of separators in the saved chunking settings based on the selected text type.
            Values can be `markdown` or `plaintext`.

            Using this parameter is an alternative to manually specifying a custom `separators` list.
          type: string
        separators:
          description: |-
            Only applicable to the `recursive` strategy and required when using it.

            A list of strings used as possible split points when chunking text.

            Each string can be a plain string or a regular expression (regex) pattern.
            The system tries each separator in order to split the text, starting from the first item in the list.

            After splitting, it attempts to recombine smaller pieces into larger chunks that stay within
            the `max_chunk_size` limit, to reduce the total number of chunks generated.
          type: array
          items:
            type: string
        max_chunk_size:
          description: |-
            The maximum size of a chunk in words.
            This value cannot be lower than `20` (for `sentence` strategy) or `10` (for `word` strategy).
            This value should not exceed the window size for the associated model.
          default: 250
          type: number
        overlap:
          description: |-
            The number of overlapping words for chunks.
            It is applicable only to a `word` chunking strategy.
            This value cannot be higher than half the `max_chunk_size` value.
          default: 100
          type: number
        sentence_overlap:
          description: |-
            The number of overlapping sentences for chunks.
            It is applicable only for a `sentence` chunking strategy.
            It can be either `1` or `0`.
          default: 1
          type: number
      required:
      - max_chunk_size
    _types.RuleRetriever:
      allOf:
      - "$ref": "#/components/schemas/_types.RetrieverBase"
      - type: object
        properties:
          ruleset_ids:
            description: The ruleset IDs containing the rules this retriever is evaluating
              against.
            oneOf:
            - "$ref": "#/components/schemas/_types.Id"
            - type: array
              items:
                "$ref": "#/components/schemas/_types.Id"
          match_criteria:
            description: The match criteria that will determine if a rule in the provided
              rulesets should be applied.
            type: object
          retriever:
            description: The retriever whose results rules should be applied to.
            allOf:
            - "$ref": "#/components/schemas/_types.RetrieverContainer"
          rank_window_size:
            description: This value determines the size of the individual result set.
            type: number
        required:
        - ruleset_ids
        - match_criteria
        - retriever
    _types.RescorerRetriever:
      allOf:
      - "$ref": "#/components/schemas/_types.RetrieverBase"
      - type: object
        properties:
          retriever:
            description: Inner retriever.
            allOf:
            - "$ref": "#/components/schemas/_types.RetrieverContainer"
          rescore:
            oneOf:
            - "$ref": "#/components/schemas/_global.search._types.Rescore"
            - type: array
              items:
                "$ref": "#/components/schemas/_global.search._types.Rescore"
        required:
        - retriever
        - rescore
    _types.LinearRetriever:
      allOf:
      - "$ref": "#/components/schemas/_types.RetrieverBase"
      - type: object
        properties:
          retrievers:
            description: Inner retrievers.
            type: array
            items:
              "$ref": "#/components/schemas/_types.InnerRetriever"
          rank_window_size:
            type: number
          query:
            type: string
          fields:
            type: array
            items:
              type: string
          normalizer:
            allOf:
            - "$ref": "#/components/schemas/_types.ScoreNormalizer"
    _types.InnerRetriever:
      type: object
      properties:
        retriever:
          allOf:
          - "$ref": "#/components/schemas/_types.RetrieverContainer"
        weight:
          type: number
        normalizer:
          allOf:
          - "$ref": "#/components/schemas/_types.ScoreNormalizer"
      required:
      - retriever
      - weight
      - normalizer
    _types.ScoreNormalizer:
      type: string
      enum:
      - none
      - minmax
      - l2_norm
    _types.PinnedRetriever:
      allOf:
      - "$ref": "#/components/schemas/_types.RetrieverBase"
      - type: object
        properties:
          retriever:
            description: Inner retriever.
            allOf:
            - "$ref": "#/components/schemas/_types.RetrieverContainer"
          ids:
            type: array
            items:
              type: string
          docs:
            type: array
            items:
              "$ref": "#/components/schemas/_types.SpecifiedDocument"
          rank_window_size:
            type: number
        required:
        - retriever
    _types.SpecifiedDocument:
      type: object
      properties:
        index:
          allOf:
          - "$ref": "#/components/schemas/_types.IndexName"
        id:
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
      required:
      - id
    _types.DiversifyRetriever:
      allOf:
      - "$ref": "#/components/schemas/_types.RetrieverBase"
      - type: object
        properties:
          type:
            description: The diversification strategy to apply.
            allOf:
            - "$ref": "#/components/schemas/_types.DiversifyRetrieverTypes"
          field:
            description: The document field on which to diversify results on.
            type: string
          retriever:
            description: The nested retriever whose results will be diversified.
            allOf:
            - "$ref": "#/components/schemas/_types.RetrieverContainer"
          size:
            description: The number of top documents to return after diversification.
            type: number
          rank_window_size:
            description: The number of top documents from the nested retriever to
              consider for diversification.
            type: number
          query_vector:
            description: The query vector used for diversification.
            allOf:
            - "$ref": "#/components/schemas/_types.QueryVector"
          query_vector_builder:
            description: a dense vector query vector builder to use instead of a static
              query_vector
            allOf:
            - "$ref": "#/components/schemas/_types.QueryVectorBuilder"
          lambda:
            description: Controls the trade-off between relevance and diversity for
              MMR. A value of 0.0 focuses solely on diversity, while a value of 1.0
              focuses solely on relevance. Required for MMR
            type: number
        required:
        - type
        - field
        - retriever
    _types.DiversifyRetrieverTypes:
      type: string
      enum:
      - mmr
    _types.SlicedScroll:
      type: object
      properties:
        field:
          allOf:
          - "$ref": "#/components/schemas/_types.Field"
        id:
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        max:
          type: number
      required:
      - id
      - max
    _global.search._types.Suggester:
      type: object
      properties:
        text:
          description: Global suggest text, to avoid repetition when the same text
            is used in several suggesters
          type: string
    _global.search._types.PointInTimeReference:
      type: object
      properties:
        id:
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        keep_alive:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
      required:
      - id
    _types.mapping.RuntimeFields:
      type: object
      additionalProperties:
        "$ref": "#/components/schemas/_types.mapping.RuntimeField"
    _types.mapping.RuntimeField:
      type: object
      properties:
        fields:
          description: For type `composite`
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/_types.mapping.CompositeSubField"
        fetch_fields:
          description: For type `lookup`
          type: array
          items:
            "$ref": "#/components/schemas/_types.mapping.RuntimeFieldFetchFields"
        format:
          description: A custom format for `date` type runtime fields.
          type: string
        input_field:
          description: For type `lookup`
          allOf:
          - "$ref": "#/components/schemas/_types.Field"
        target_field:
          description: For type `lookup`
          allOf:
          - "$ref": "#/components/schemas/_types.Field"
        target_index:
          description: For type `lookup`
          allOf:
          - "$ref": "#/components/schemas/_types.IndexName"
        script:
          description: Painless script executed at query time.
          allOf:
          - "$ref": "#/components/schemas/_types.Script"
        type:
          description: 'Field type, which can be: `boolean`, `composite`, `date`,
            `double`, `geo_point`, `ip`,`keyword`, `long`, or `lookup`.'
          allOf:
          - "$ref": "#/components/schemas/_types.mapping.RuntimeFieldType"
      required:
      - type
    _types.mapping.CompositeSubField:
      type: object
      properties:
        type:
          allOf:
          - "$ref": "#/components/schemas/_types.mapping.RuntimeFieldType"
      required:
      - type
    _types.mapping.RuntimeFieldType:
      type: string
      enum:
      - boolean
      - composite
      - date
      - double
      - geo_point
      - geo_shape
      - ip
      - keyword
      - long
      - lookup
    _types.mapping.RuntimeFieldFetchFields:
      type: object
      properties:
        field:
          allOf:
          - "$ref": "#/components/schemas/_types.Field"
        format:
          type: string
      required:
      - field
    _types.ScriptLanguage:
      anyOf:
      - type: string
        enum:
        - painless
        - expression
        - mustache
        - java
      - type: string
    _types.query_dsl.FunctionScoreMode:
      type: string
      enum:
      - multiply
      - sum
      - avg
      - first
      - max
      - min
    _types.query_dsl.FuzzyQuery:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.QueryBase"
      - type: object
        properties:
          max_expansions:
            description: Maximum number of variations created.
            default: 50
            type: number
          prefix_length:
            description: Number of beginning characters left unchanged when creating
              expansions.
            default: 0
            type: number
          rewrite:
            description: Number of beginning characters left unchanged when creating
              expansions.
            default: constant_score
            allOf:
            - "$ref": "#/components/schemas/_types.MultiTermQueryRewrite"
          transpositions:
            description: Indicates whether edits include transpositions of two adjacent
              characters (for example `ab` to `ba`).
            default: true
            type: boolean
          fuzziness:
            description: Maximum edit distance allowed for matching.
            allOf:
            - "$ref": "#/components/schemas/_types.Fuzziness"
          value:
            description: Term you wish to find in the provided field.
            oneOf:
            - type: string
            - type: number
            - type: boolean
        required:
        - value
      x-model: true
    _types.MultiTermQueryRewrite:
      type: string
    _types.Fuzziness:
      oneOf:
      - type: string
      - type: number
    _types.query_dsl.GeoBoundingBoxQuery:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.QueryBase"
      - type: object
        properties:
          type:
            deprecated: true
            allOf:
            - "$ref": "#/components/schemas/_types.query_dsl.GeoExecution"
          validation_method:
            description: |+
              Set to `IGNORE_MALFORMED` to accept geo points with invalid latitude or longitude.
              Set to `COERCE` to also try to infer correct latitude or longitude.

              Supported values include:
                - `coerce`: Accept geo points with invalid latitude or longitude and additionally try and infer correct coordinates.
                - `ignore_malformed`: Accept geo points with invalid latitude or longitude.
                - `strict`

            default: "'strict'"
            allOf:
            - "$ref": "#/components/schemas/_types.query_dsl.GeoValidationMethod"
          ignore_unmapped:
            description: |-
              Set to `true` to ignore an unmapped field and not match any documents for this query.
              Set to `false` to throw an exception if the field is not mapped.
            default: false
            type: boolean
      x-model: true
    _types.query_dsl.GeoExecution:
      type: string
      enum:
      - memory
      - indexed
    _types.query_dsl.GeoValidationMethod:
      type: string
      enum:
      - coerce
      - ignore_malformed
      - strict
    _types.query_dsl.GeoDistanceQuery:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.QueryBase"
      - type: object
        properties:
          distance:
            description: |-
              The radius of the circle centred on the specified location.
              Points which fall into this circle are considered to be matches.
            allOf:
            - "$ref": "#/components/schemas/_types.Distance"
          distance_type:
            description: |+
              How to compute the distance.
              Set to `plane` for a faster calculation that's inaccurate on long distances and close to the poles.

              Supported values include:
                - `arc`: The `arc` calculation is the most accurate.
                - `plane`: The `plane` calculation is faster but less accurate.

            default: "'arc'"
            allOf:
            - "$ref": "#/components/schemas/_types.GeoDistanceType"
          validation_method:
            description: |+
              Set to `IGNORE_MALFORMED` to accept geo points with invalid latitude or longitude.
              Set to `COERCE` to also try to infer correct latitude or longitude.

              Supported values include:
                - `coerce`: Accept geo points with invalid latitude or longitude and additionally try and infer correct coordinates.
                - `ignore_malformed`: Accept geo points with invalid latitude or longitude.
                - `strict`

            default: "'strict'"
            allOf:
            - "$ref": "#/components/schemas/_types.query_dsl.GeoValidationMethod"
          ignore_unmapped:
            description: |-
              Set to `true` to ignore an unmapped field and not match any documents for this query.
              Set to `false` to throw an exception if the field is not mapped.
            default: false
            type: boolean
        required:
        - distance
      x-model: true
    _types.query_dsl.GeoGridQuery:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.QueryBase"
      - type: object
        properties:
          geotile:
            allOf:
            - "$ref": "#/components/schemas/_types.GeoTile"
          geohash:
            allOf:
            - "$ref": "#/components/schemas/_types.GeoHash"
          geohex:
            allOf:
            - "$ref": "#/components/schemas/_types.GeoHexCell"
        minProperties: 1
        maxProperties: 1
    _types.query_dsl.GeoPolygonQuery:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.QueryBase"
      - type: object
        properties:
          validation_method:
            description: |2+


              Supported values include:
                - `coerce`: Accept geo points with invalid latitude or longitude and additionally try and infer correct coordinates.
                - `ignore_malformed`: Accept geo points with invalid latitude or longitude.
                - `strict`

            default: "'strict'"
            allOf:
            - "$ref": "#/components/schemas/_types.query_dsl.GeoValidationMethod"
          ignore_unmapped:
            type: boolean
      x-model: true
    _types.query_dsl.GeoShapeQuery:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.QueryBase"
      - type: object
        properties:
          ignore_unmapped:
            description: |-
              Set to `true` to ignore an unmapped field and not match any documents for this query.
              Set to `false` to throw an exception if the field is not mapped.
            default: false
            type: boolean
      x-model: true
    _types.query_dsl.HasChildQuery:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.QueryBase"
      - type: object
        properties:
          ignore_unmapped:
            description: Indicates whether to ignore an unmapped `type` and not return
              any documents instead of an error.
            default: false
            type: boolean
          inner_hits:
            description: If defined, each search hit will contain inner hits.
            allOf:
            - "$ref": "#/components/schemas/_global.search._types.InnerHits"
          max_children:
            description: |-
              Maximum number of child documents that match the query allowed for a returned parent document.
              If the parent document exceeds this limit, it is excluded from the search results.
            type: number
          min_children:
            description: |-
              Minimum number of child documents that match the query required to match the query for a returned parent document.
              If the parent document does not meet this limit, it is excluded from the search results.
            type: number
          query:
            description: |-
              Query you wish to run on child documents of the `type` field.
              If a child document matches the search, the query returns the parent document.
            allOf:
            - "$ref": "#/components/schemas/_types.query_dsl.QueryContainer"
          score_mode:
            description: Indicates how scores for matching child documents affect
              the root parent document’s relevance score.
            default: "'none'"
            allOf:
            - "$ref": "#/components/schemas/_types.query_dsl.ChildScoreMode"
          type:
            description: Name of the child relationship mapped for the `join` field.
            allOf:
            - "$ref": "#/components/schemas/_types.RelationName"
        required:
        - query
        - type
      x-model: true
    _types.query_dsl.ChildScoreMode:
      type: string
      enum:
      - none
      - avg
      - sum
      - max
      - min
    _types.RelationName:
      type: string
    _types.query_dsl.HasParentQuery:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.QueryBase"
      - type: object
        properties:
          ignore_unmapped:
            description: |-
              Indicates whether to ignore an unmapped `parent_type` and not return any documents instead of an error.
              You can use this parameter to query multiple indices that may not contain the `parent_type`.
            default: false
            type: boolean
          inner_hits:
            description: If defined, each search hit will contain inner hits.
            allOf:
            - "$ref": "#/components/schemas/_global.search._types.InnerHits"
          parent_type:
            description: Name of the parent relationship mapped for the `join` field.
            allOf:
            - "$ref": "#/components/schemas/_types.RelationName"
          query:
            description: |-
              Query you wish to run on parent documents of the `parent_type` field.
              If a parent document matches the search, the query returns its child documents.
            allOf:
            - "$ref": "#/components/schemas/_types.query_dsl.QueryContainer"
          score:
            description: Indicates whether the relevance score of a matching parent
              document is aggregated into its child documents.
            default: false
            type: boolean
        required:
        - parent_type
        - query
      x-model: true
    _types.query_dsl.IdsQuery:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.QueryBase"
      - type: object
        properties:
          values:
            description: An array of document IDs.
            allOf:
            - "$ref": "#/components/schemas/_types.Ids"
      x-model: true
    _types.Ids:
      oneOf:
      - "$ref": "#/components/schemas/_types.Id"
      - type: array
        items:
          "$ref": "#/components/schemas/_types.Id"
    _types.query_dsl.IntervalsQuery:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.QueryBase"
      - externalDocs:
          url: https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-intervals-query
        type: object
        properties:
          all_of:
            description: Returns matches that span a combination of other rules.
            allOf:
            - "$ref": "#/components/schemas/_types.query_dsl.IntervalsAllOf"
          any_of:
            description: Returns intervals produced by any of its sub-rules.
            allOf:
            - "$ref": "#/components/schemas/_types.query_dsl.IntervalsAnyOf"
          fuzzy:
            description: Matches terms that are similar to the provided term, within
              an edit distance defined by `fuzziness`.
            allOf:
            - "$ref": "#/components/schemas/_types.query_dsl.IntervalsFuzzy"
          match:
            description: Matches analyzed text.
            allOf:
            - "$ref": "#/components/schemas/_types.query_dsl.IntervalsMatch"
          prefix:
            description: Matches terms that start with a specified set of characters.
            allOf:
            - "$ref": "#/components/schemas/_types.query_dsl.IntervalsPrefix"
          range:
            allOf:
            - "$ref": "#/components/schemas/_types.query_dsl.IntervalsRange"
          regexp:
            allOf:
            - "$ref": "#/components/schemas/_types.query_dsl.IntervalsRegexp"
          wildcard:
            description: Matches terms using a wildcard pattern.
            allOf:
            - "$ref": "#/components/schemas/_types.query_dsl.IntervalsWildcard"
        minProperties: 1
        maxProperties: 1
      x-model: true
    _types.query_dsl.IntervalsAllOf:
      type: object
      properties:
        intervals:
          description: An array of rules to combine. All rules must produce a match
            in a document for the overall source to match.
          type: array
          items:
            "$ref": "#/components/schemas/_types.query_dsl.IntervalsContainer"
        max_gaps:
          description: |-
            Maximum number of positions between the matching terms.
            Intervals produced by the rules further apart than this are not considered matches.
          default: -1
          type: number
        ordered:
          description: If `true`, intervals produced by the rules should appear in
            the order in which they are specified.
          default: false
          type: boolean
        filter:
          description: Rule used to filter returned intervals.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.IntervalsFilter"
      required:
      - intervals
      x-model: true
    _types.query_dsl.IntervalsContainer:
      type: object
      properties:
        all_of:
          description: Returns matches that span a combination of other rules.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.IntervalsAllOf"
        any_of:
          description: Returns intervals produced by any of its sub-rules.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.IntervalsAnyOf"
        fuzzy:
          description: Matches analyzed text.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.IntervalsFuzzy"
        match:
          description: Matches analyzed text.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.IntervalsMatch"
        prefix:
          description: Matches terms that start with a specified set of characters.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.IntervalsPrefix"
        range:
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.IntervalsRange"
        regexp:
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.IntervalsRegexp"
        wildcard:
          description: Matches terms using a wildcard pattern.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.IntervalsWildcard"
      minProperties: 1
      maxProperties: 1
      x-model: true
    _types.query_dsl.IntervalsAnyOf:
      type: object
      properties:
        intervals:
          description: An array of rules to match.
          type: array
          items:
            "$ref": "#/components/schemas/_types.query_dsl.IntervalsContainer"
        filter:
          description: Rule used to filter returned intervals.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.IntervalsFilter"
      required:
      - intervals
      x-model: true
    _types.query_dsl.IntervalsFilter:
      type: object
      properties:
        after:
          description: Query used to return intervals that follow an interval from
            the `filter` rule.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.IntervalsContainer"
        before:
          description: Query used to return intervals that occur before an interval
            from the `filter` rule.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.IntervalsContainer"
        contained_by:
          description: Query used to return intervals contained by an interval from
            the `filter` rule.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.IntervalsContainer"
        containing:
          description: Query used to return intervals that contain an interval from
            the `filter` rule.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.IntervalsContainer"
        not_contained_by:
          description: Query used to return intervals that are **not** contained by
            an interval from the `filter` rule.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.IntervalsContainer"
        not_containing:
          description: Query used to return intervals that do **not** contain an interval
            from the `filter` rule.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.IntervalsContainer"
        not_overlapping:
          description: Query used to return intervals that do **not** overlap with
            an interval from the `filter` rule.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.IntervalsContainer"
        overlapping:
          description: Query used to return intervals that overlap with an interval
            from the `filter` rule.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.IntervalsContainer"
        script:
          description: |-
            Script used to return matching documents.
            This script must return a boolean value: `true` or `false`.
          allOf:
          - "$ref": "#/components/schemas/_types.Script"
      minProperties: 1
      maxProperties: 1
      x-model: true
    _types.query_dsl.IntervalsFuzzy:
      type: object
      properties:
        analyzer:
          description: Analyzer used to normalize the term.
          type: string
        fuzziness:
          description: Maximum edit distance allowed for matching.
          default: auto
          allOf:
          - "$ref": "#/components/schemas/_types.Fuzziness"
        prefix_length:
          description: Number of beginning characters left unchanged when creating
            expansions.
          default: 0
          type: number
        term:
          description: The term to match.
          type: string
        transpositions:
          description: Indicates whether edits include transpositions of two adjacent
            characters (for example, `ab` to `ba`).
          default: true
          type: boolean
        use_field:
          description: |-
            If specified, match intervals from this field rather than the top-level field.
            The `term` is normalized using the search analyzer from this field, unless `analyzer` is specified separately.
          allOf:
          - "$ref": "#/components/schemas/_types.Field"
      required:
      - term
      x-model: true
    _types.query_dsl.IntervalsMatch:
      type: object
      properties:
        analyzer:
          description: Analyzer used to analyze terms in the query.
          type: string
        max_gaps:
          description: |-
            Maximum number of positions between the matching terms.
            Terms further apart than this are not considered matches.
          default: -1
          type: number
        ordered:
          description: If `true`, matching terms must appear in their specified order.
          default: false
          type: boolean
        query:
          description: Text you wish to find in the provided field.
          type: string
        use_field:
          description: |-
            If specified, match intervals from this field rather than the top-level field.
            The `term` is normalized using the search analyzer from this field, unless `analyzer` is specified separately.
          allOf:
          - "$ref": "#/components/schemas/_types.Field"
        filter:
          description: An optional interval filter.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.IntervalsFilter"
      required:
      - query
      x-model: true
    _types.query_dsl.IntervalsPrefix:
      type: object
      properties:
        analyzer:
          description: Analyzer used to analyze the `prefix`.
          type: string
        prefix:
          description: Beginning characters of terms you wish to find in the top-level
            field.
          type: string
        use_field:
          description: |-
            If specified, match intervals from this field rather than the top-level field.
            The `prefix` is normalized using the search analyzer from this field, unless `analyzer` is specified separately.
          allOf:
          - "$ref": "#/components/schemas/_types.Field"
      required:
      - prefix
      x-model: true
    _types.query_dsl.IntervalsRange:
      type: object
      properties:
        analyzer:
          description: Analyzer used to analyze the `prefix`.
          type: string
        gte:
          description: Lower term, either gte or gt must be provided.
          type: string
        gt:
          description: Lower term, either gte or gt must be provided.
          type: string
        lte:
          description: Upper term, either lte or lt must be provided.
          type: string
        lt:
          description: Upper term, either lte or lt must be provided.
          type: string
        use_field:
          description: |-
            If specified, match intervals from this field rather than the top-level field.
            The `prefix` is normalized using the search analyzer from this field, unless `analyzer` is specified separately.
          allOf:
          - "$ref": "#/components/schemas/_types.Field"
    _types.query_dsl.IntervalsRegexp:
      type: object
      properties:
        analyzer:
          description: Analyzer used to analyze the `prefix`.
          type: string
        pattern:
          description: Regex pattern.
          type: string
        use_field:
          description: |-
            If specified, match intervals from this field rather than the top-level field.
            The `prefix` is normalized using the search analyzer from this field, unless `analyzer` is specified separately.
          allOf:
          - "$ref": "#/components/schemas/_types.Field"
      required:
      - pattern
    _types.query_dsl.IntervalsWildcard:
      type: object
      properties:
        analyzer:
          description: |-
            Analyzer used to analyze the `pattern`.
            Defaults to the top-level field's analyzer.
          type: string
        pattern:
          description: Wildcard pattern used to find matching terms.
          type: string
        use_field:
          description: |-
            If specified, match intervals from this field rather than the top-level field.
            The `pattern` is normalized using the search analyzer from this field, unless `analyzer` is specified separately.
          allOf:
          - "$ref": "#/components/schemas/_types.Field"
      required:
      - pattern
      x-model: true
    _types.KnnQuery:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.QueryBase"
      - type: object
        properties:
          field:
            description: The name of the vector field to search against
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          query_vector:
            description: The query vector
            allOf:
            - "$ref": "#/components/schemas/_types.QueryVector"
          query_vector_builder:
            description: The query vector builder. You must provide a query_vector_builder
              or query_vector, but not both.
            allOf:
            - "$ref": "#/components/schemas/_types.QueryVectorBuilder"
          num_candidates:
            description: The number of nearest neighbor candidates to consider per
              shard
            type: number
          visit_percentage:
            description: The percentage of vectors to explore per shard while doing
              knn search with bbq_disk
            x-state: Generally available; Added in 9.2.0
            type: number
          k:
            description: The final number of nearest neighbors to return as top hits
            type: number
          filter:
            description: Filters for the kNN search query
            oneOf:
            - "$ref": "#/components/schemas/_types.query_dsl.QueryContainer"
            - type: array
              items:
                "$ref": "#/components/schemas/_types.query_dsl.QueryContainer"
          similarity:
            description: The minimum similarity for a vector to be considered a match
            type: number
          rescore_vector:
            description: Apply oversampling and rescoring to quantized vectors
            x-state: Generally available; Added in 8.18.0
            allOf:
            - "$ref": "#/components/schemas/_types.RescoreVector"
        required:
        - field
      x-model: true
    _types.query_dsl.MatchQuery:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.QueryBase"
      - type: object
        properties:
          analyzer:
            description: Analyzer used to convert the text in the query value into
              tokens.
            type: string
          auto_generate_synonyms_phrase_query:
            description: If `true`, match phrase queries are automatically created
              for multi-term synonyms.
            default: true
            type: boolean
          cutoff_frequency:
            deprecated: true
            type: number
          fuzziness:
            description: Maximum edit distance allowed for matching.
            allOf:
            - "$ref": "#/components/schemas/_types.Fuzziness"
          fuzzy_rewrite:
            description: Method used to rewrite the query.
            allOf:
            - "$ref": "#/components/schemas/_types.MultiTermQueryRewrite"
          fuzzy_transpositions:
            description: If `true`, edits for fuzzy matching include transpositions
              of two adjacent characters (for example, `ab` to `ba`).
            default: true
            type: boolean
          lenient:
            description: If `true`, format-based errors, such as providing a text
              query value for a numeric field, are ignored.
            default: false
            type: boolean
          max_expansions:
            description: Maximum number of terms to which the query will expand.
            default: 50
            type: number
          minimum_should_match:
            description: Minimum number of clauses that must match for a document
              to be returned.
            allOf:
            - "$ref": "#/components/schemas/_types.MinimumShouldMatch"
          operator:
            description: Boolean logic used to interpret text in the query value.
            default: "'or'"
            allOf:
            - "$ref": "#/components/schemas/_types.query_dsl.Operator"
          prefix_length:
            description: Number of beginning characters left unchanged for fuzzy matching.
            default: 0
            type: number
          query:
            description: Text, number, boolean value or date you wish to find in the
              provided field.
            oneOf:
            - type: string
            - type: number
            - type: boolean
          zero_terms_query:
            description: |+
              Indicates whether no documents are returned if the `analyzer` removes all tokens, such as when using a `stop` filter.

              Supported values include:
                - `all`: Returns all documents, similar to a `match_all` query.
                - `none`: No documents are returned if the `analyzer` removes all tokens.

            default: "'none'"
            allOf:
            - "$ref": "#/components/schemas/_types.query_dsl.ZeroTermsQuery"
        required:
        - query
      x-model: true
    _types.query_dsl.ZeroTermsQuery:
      type: string
      enum:
      - all
      - none
    _types.query_dsl.MatchAllQuery:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.QueryBase"
      - type: object
      x-model: true
    _types.query_dsl.MatchBoolPrefixQuery:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.QueryBase"
      - type: object
        properties:
          analyzer:
            description: Analyzer used to convert the text in the query value into
              tokens.
            type: string
          fuzziness:
            description: |-
              Maximum edit distance allowed for matching.
              Can be applied to the term subqueries constructed for all terms but the final term.
            allOf:
            - "$ref": "#/components/schemas/_types.Fuzziness"
          fuzzy_rewrite:
            description: |-
              Method used to rewrite the query.
              Can be applied to the term subqueries constructed for all terms but the final term.
            allOf:
            - "$ref": "#/components/schemas/_types.MultiTermQueryRewrite"
          fuzzy_transpositions:
            description: |-
              If `true`, edits for fuzzy matching include transpositions of two adjacent characters (for example, `ab` to `ba`).
              Can be applied to the term subqueries constructed for all terms but the final term.
            default: true
            type: boolean
          max_expansions:
            description: |-
              Maximum number of terms to which the query will expand.
              Can be applied to the term subqueries constructed for all terms but the final term.
            default: 50
            type: number
          minimum_should_match:
            description: |-
              Minimum number of clauses that must match for a document to be returned.
              Applied to the constructed bool query.
            allOf:
            - "$ref": "#/components/schemas/_types.MinimumShouldMatch"
          operator:
            description: |-
              Boolean logic used to interpret text in the query value.
              Applied to the constructed bool query.
            default: "'or'"
            allOf:
            - "$ref": "#/components/schemas/_types.query_dsl.Operator"
          prefix_length:
            description: |-
              Number of beginning characters left unchanged for fuzzy matching.
              Can be applied to the term subqueries constructed for all terms but the final term.
            default: 0
            type: number
          query:
            description: |-
              Terms you wish to find in the provided field.
              The last term is used in a prefix query.
            type: string
        required:
        - query
      x-model: true
    _types.query_dsl.MatchNoneQuery:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.QueryBase"
      - type: object
      x-model: true
    _types.query_dsl.MatchPhraseQuery:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.QueryBase"
      - type: object
        properties:
          analyzer:
            description: Analyzer used to convert the text in the query value into
              tokens.
            type: string
          query:
            description: Query terms that are analyzed and turned into a phrase query.
            type: string
          slop:
            description: Maximum number of positions allowed between matching tokens.
            default: 0
            type: number
          zero_terms_query:
            description: |+
              Indicates whether no documents are returned if the `analyzer` removes all tokens, such as when using a `stop` filter.

              Supported values include:
                - `all`: Returns all documents, similar to a `match_all` query.
                - `none`: No documents are returned if the `analyzer` removes all tokens.

            default: "'none'"
            allOf:
            - "$ref": "#/components/schemas/_types.query_dsl.ZeroTermsQuery"
        required:
        - query
      x-model: true
    _types.query_dsl.MatchPhrasePrefixQuery:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.QueryBase"
      - type: object
        properties:
          analyzer:
            description: Analyzer used to convert text in the query value into tokens.
            type: string
          max_expansions:
            description: Maximum number of terms to which the last provided term of
              the query value will expand.
            default: 50
            type: number
          query:
            description: Text you wish to find in the provided field.
            type: string
          slop:
            description: Maximum number of positions allowed between matching tokens.
            default: 0
            type: number
          zero_terms_query:
            description: |+
              Indicates whether no documents are returned if the analyzer removes all tokens, such as when using a `stop` filter.

              Supported values include:
                - `all`: Returns all documents, similar to a `match_all` query.
                - `none`: No documents are returned if the `analyzer` removes all tokens.

            default: none
            allOf:
            - "$ref": "#/components/schemas/_types.query_dsl.ZeroTermsQuery"
        required:
        - query
      x-model: true
    _types.query_dsl.MoreLikeThisQuery:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.QueryBase"
      - type: object
        properties:
          analyzer:
            externalDocs:
              url: https://www.elastic.co/docs/manage-data/data-store/text-analysis
            description: |-
              The analyzer that is used to analyze the free form text.
              Defaults to the analyzer associated with the first field in fields.
            type: string
          boost_terms:
            description: |-
              Each term in the formed query could be further boosted by their tf-idf score.
              This sets the boost factor to use when using this feature.
              Defaults to deactivated (0).
            default: 0
            type: number
          fail_on_unsupported_field:
            description: Controls whether the query should fail (throw an exception)
              if any of the specified fields are not of the supported types (`text`
              or `keyword`).
            default: true
            type: boolean
          fields:
            description: |-
              A list of fields to fetch and analyze the text from.
              Defaults to the `index.query.default_field` index setting, which has a default value of `*`.
            type: array
            items:
              "$ref": "#/components/schemas/_types.Field"
          include:
            description: Specifies whether the input documents should also be included
              in the search results returned.
            default: false
            type: boolean
          like:
            description: Specifies free form text and/or a single or multiple documents
              for which you want to find similar documents.
            oneOf:
            - "$ref": "#/components/schemas/_types.query_dsl.Like"
            - type: array
              items:
                "$ref": "#/components/schemas/_types.query_dsl.Like"
          max_doc_freq:
            description: The maximum document frequency above which the terms are
              ignored from the input document.
            type: number
          max_query_terms:
            description: The maximum number of query terms that can be selected.
            default: 25
            type: number
          max_word_length:
            description: |-
              The maximum word length above which the terms are ignored.
              Defaults to unbounded (`0`).
            default: 0
            type: number
          min_doc_freq:
            description: The minimum document frequency below which the terms are
              ignored from the input document.
            default: 5
            type: number
          minimum_should_match:
            description: After the disjunctive query has been formed, this parameter
              controls the number of terms that must match.
            allOf:
            - "$ref": "#/components/schemas/_types.MinimumShouldMatch"
          min_term_freq:
            description: The minimum term frequency below which the terms are ignored
              from the input document.
            default: 2
            type: number
          min_word_length:
            description: The minimum word length below which the terms are ignored.
            default: 0
            type: number
          routing:
            type: string
          stop_words:
            description: |-
              An array of stop words.
              Any word in this set is ignored.
            allOf:
            - "$ref": "#/components/schemas/_types.analysis.StopWords"
          unlike:
            description: Used in combination with `like` to exclude documents that
              match a set of terms.
            oneOf:
            - "$ref": "#/components/schemas/_types.query_dsl.Like"
            - type: array
              items:
                "$ref": "#/components/schemas/_types.query_dsl.Like"
          version:
            allOf:
            - "$ref": "#/components/schemas/_types.VersionNumber"
          version_type:
            description: |2+


              Supported values include:
                - `internal`: Use internal versioning that starts at 1 and increments with each update or delete.
                - `external`: Only index the document if the specified version is strictly higher than the version of the stored document or if there is no existing document.
                - `external_gte`: Only index the document if the specified version is equal or higher than the version of the stored document or if there is no existing document.
              NOTE: The `external_gte` version type is meant for special use cases and should be used with care.
              If used incorrectly, it can result in loss of data.

            default: "'internal'"
            allOf:
            - "$ref": "#/components/schemas/_types.VersionType"
        required:
        - like
      x-model: true
    _types.query_dsl.Like:
      description: Text that we want similar documents for or a lookup to a document's
        field for the text.
      oneOf:
      - type: string
      - "$ref": "#/components/schemas/_types.query_dsl.LikeDocument"
    _types.query_dsl.LikeDocument:
      type: object
      properties:
        doc:
          description: A document not present in the index.
          type: object
        fields:
          type: array
          items:
            "$ref": "#/components/schemas/_types.Field"
        _id:
          description: ID of a document.
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        _index:
          description: Index of a document.
          allOf:
          - "$ref": "#/components/schemas/_types.IndexName"
        per_field_analyzer:
          description: Overrides the default analyzer.
          type: object
          additionalProperties:
            type: string
        routing:
          allOf:
          - "$ref": "#/components/schemas/_types.Routing"
        version:
          allOf:
          - "$ref": "#/components/schemas/_types.VersionNumber"
        version_type:
          description: |2+


            Supported values include:
              - `internal`: Use internal versioning that starts at 1 and increments with each update or delete.
              - `external`: Only index the document if the specified version is strictly higher than the version of the stored document or if there is no existing document.
              - `external_gte`: Only index the document if the specified version is equal or higher than the version of the stored document or if there is no existing document.
            NOTE: The `external_gte` version type is meant for special use cases and should be used with care.
            If used incorrectly, it can result in loss of data.

          default: "'internal'"
          allOf:
          - "$ref": "#/components/schemas/_types.VersionType"
      x-model: true
    _types.VersionType:
      type: string
      enum:
      - internal
      - external
      - external_gte
    _types.analysis.StopWords:
      description: |-
        Language value, such as _arabic_ or _thai_. Defaults to _english_.
        Each language value corresponds to a predefined list of stop words in Lucene. See Stop words by language for supported language values and their stop words.
        Also accepts an array of stop words.
      oneOf:
      - "$ref": "#/components/schemas/_types.analysis.StopWordLanguage"
      - type: array
        items:
          type: string
    _types.analysis.StopWordLanguage:
      type: string
      enum:
      - _arabic_
      - _armenian_
      - _basque_
      - _bengali_
      - _brazilian_
      - _bulgarian_
      - _catalan_
      - _cjk_
      - _czech_
      - _danish_
      - _dutch_
      - _english_
      - _estonian_
      - _finnish_
      - _french_
      - _galician_
      - _german_
      - _greek_
      - _hindi_
      - _hungarian_
      - _indonesian_
      - _irish_
      - _italian_
      - _latvian_
      - _lithuanian_
      - _norwegian_
      - _persian_
      - _portuguese_
      - _romanian_
      - _russian_
      - _serbian_
      - _sorani_
      - _spanish_
      - _swedish_
      - _thai_
      - _turkish_
      - _none_
    _types.query_dsl.MultiMatchQuery:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.QueryBase"
      - type: object
        properties:
          analyzer:
            description: Analyzer used to convert the text in the query value into
              tokens.
            type: string
          auto_generate_synonyms_phrase_query:
            description: If `true`, match phrase queries are automatically created
              for multi-term synonyms.
            default: true
            type: boolean
          cutoff_frequency:
            deprecated: true
            type: number
          fields:
            description: |-
              The fields to be queried.
              Defaults to the `index.query.default_field` index settings, which in turn defaults to `*`.
            allOf:
            - "$ref": "#/components/schemas/_types.Fields"
          fuzziness:
            description: Maximum edit distance allowed for matching.
            allOf:
            - "$ref": "#/components/schemas/_types.Fuzziness"
          fuzzy_rewrite:
            description: Method used to rewrite the query.
            allOf:
            - "$ref": "#/components/schemas/_types.MultiTermQueryRewrite"
          fuzzy_transpositions:
            description: |-
              If `true`, edits for fuzzy matching include transpositions of two adjacent characters (for example, `ab` to `ba`).
              Can be applied to the term subqueries constructed for all terms but the final term.
            default: true
            type: boolean
          lenient:
            description: If `true`, format-based errors, such as providing a text
              query value for a numeric field, are ignored.
            default: false
            type: boolean
          max_expansions:
            description: Maximum number of terms to which the query will expand.
            default: 50
            type: number
          minimum_should_match:
            description: Minimum number of clauses that must match for a document
              to be returned.
            allOf:
            - "$ref": "#/components/schemas/_types.MinimumShouldMatch"
          operator:
            description: Boolean logic used to interpret text in the query value.
            default: "'or'"
            allOf:
            - "$ref": "#/components/schemas/_types.query_dsl.Operator"
          prefix_length:
            description: Number of beginning characters left unchanged for fuzzy matching.
            default: 0
            type: number
          query:
            description: Text, number, boolean value or date you wish to find in the
              provided field.
            type: string
          slop:
            description: Maximum number of positions allowed between matching tokens.
            default: 0
            type: number
          tie_breaker:
            description: Determines how scores for each per-term blended query and
              scores across groups are combined.
            default: 0
            type: number
          type:
            description: |+
              How `the` multi_match query is executed internally.

              Supported values include:
                - `best_fields`: Finds documents that match any field, but uses the `_score` from the best field.
                - `most_fields`: Finds documents that match any field and combines the `_score` from each field.
                - `cross_fields`: Treats fields with the same analyzer as though they were one big field.
              Looks for each word in any field.
                - `phrase`: Runs a `match_phrase` query on each field and uses the `_score` from the best field.
                - `phrase_prefix`: Runs a `match_phrase_prefix` query on each field and uses the `_score` from the best field.
                - `bool_prefix`: Creates a `match_bool_prefix` query on each field and combines the `_score` from each field.

            default: "'best_fields'"
            allOf:
            - "$ref": "#/components/schemas/_types.query_dsl.TextQueryType"
          zero_terms_query:
            description: |+
              Indicates whether no documents are returned if the `analyzer` removes all tokens, such as when using a `stop` filter.

              Supported values include:
                - `all`: Returns all documents, similar to a `match_all` query.
                - `none`: No documents are returned if the `analyzer` removes all tokens.

            default: "'none'"
            allOf:
            - "$ref": "#/components/schemas/_types.query_dsl.ZeroTermsQuery"
        required:
        - query
      x-model: true
    _types.query_dsl.TextQueryType:
      type: string
      enum:
      - best_fields
      - most_fields
      - cross_fields
      - phrase
      - phrase_prefix
      - bool_prefix
    _types.query_dsl.NestedQuery:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.QueryBase"
      - type: object
        properties:
          ignore_unmapped:
            description: Indicates whether to ignore an unmapped path and not return
              any documents instead of an error.
            default: false
            type: boolean
          inner_hits:
            description: If defined, each search hit will contain inner hits.
            allOf:
            - "$ref": "#/components/schemas/_global.search._types.InnerHits"
          path:
            description: Path to the nested object you wish to search.
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          query:
            description: Query you wish to run on nested objects in the path.
            allOf:
            - "$ref": "#/components/schemas/_types.query_dsl.QueryContainer"
          score_mode:
            description: How scores for matching child objects affect the root parent
              document’s relevance score.
            default: "'avg'"
            allOf:
            - "$ref": "#/components/schemas/_types.query_dsl.ChildScoreMode"
        required:
        - path
        - query
      x-model: true
    _types.query_dsl.ParentIdQuery:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.QueryBase"
      - type: object
        properties:
          id:
            description: ID of the parent document.
            allOf:
            - "$ref": "#/components/schemas/_types.Id"
          ignore_unmapped:
            description: Indicates whether to ignore an unmapped `type` and not return
              any documents instead of an error.
            default: false
            type: boolean
          type:
            description: Name of the child relationship mapped for the `join` field.
            allOf:
            - "$ref": "#/components/schemas/_types.RelationName"
      x-model: true
    _types.query_dsl.PercolateQuery:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.QueryBase"
      - type: object
        properties:
          document:
            description: The source of the document being percolated.
            type: object
          documents:
            description: An array of sources of the documents being percolated.
            type: array
            items:
              type: object
          field:
            description: Field that holds the indexed queries. The field must use
              the `percolator` mapping type.
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          id:
            description: The ID of a stored document to percolate.
            allOf:
            - "$ref": "#/components/schemas/_types.Id"
          index:
            description: The index of a stored document to percolate.
            allOf:
            - "$ref": "#/components/schemas/_types.IndexName"
          name:
            description: The suffix used for the `_percolator_document_slot` field
              when multiple `percolate` queries are specified.
            type: string
          preference:
            description: Preference used to fetch document to percolate.
            type: string
          routing:
            description: Routing used to fetch document to percolate.
            type: string
          version:
            description: The expected version of a stored document to percolate.
            allOf:
            - "$ref": "#/components/schemas/_types.VersionNumber"
        required:
        - field
      x-model: true
    _types.query_dsl.PinnedQuery:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.QueryBase"
      - externalDocs:
          url: https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-pinned-query
        allOf:
        - type: object
          properties:
            organic:
              description: Any choice of query used to rank documents which will be
                ranked below the "pinned" documents.
              allOf:
              - "$ref": "#/components/schemas/_types.query_dsl.QueryContainer"
          required:
          - organic
        - type: object
          properties:
            ids:
              description: |-
                Document IDs listed in the order they are to appear in results.
                Required if `docs` is not specified.
              type: array
              items:
                "$ref": "#/components/schemas/_types.Id"
            docs:
              description: |-
                Documents listed in the order they are to appear in results.
                Required if `ids` is not specified.
              type: array
              items:
                "$ref": "#/components/schemas/_types.query_dsl.PinnedDoc"
          minProperties: 1
          maxProperties: 1
      x-model: true
    _types.query_dsl.PinnedDoc:
      type: object
      properties:
        _id:
          description: The unique document ID.
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        _index:
          description: The index that contains the document.
          allOf:
          - "$ref": "#/components/schemas/_types.IndexName"
      required:
      - _id
    _types.query_dsl.PrefixQuery:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.QueryBase"
      - type: object
        properties:
          rewrite:
            description: Method used to rewrite the query.
            allOf:
            - "$ref": "#/components/schemas/_types.MultiTermQueryRewrite"
          value:
            description: Beginning characters of terms you wish to find in the provided
              field.
            type: string
          case_insensitive:
            description: |-
              Allows ASCII case insensitive matching of the value with the indexed field values when set to `true`.
              Default is `false` which means the case sensitivity of matching depends on the underlying field’s mapping.
            default: false
            x-state: Generally available; Added in 7.10.0
            type: boolean
        required:
        - value
      x-model: true
    _types.query_dsl.QueryStringQuery:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.QueryBase"
      - type: object
        properties:
          allow_leading_wildcard:
            description: If `true`, the wildcard characters `*` and `?` are allowed
              as the first character of the query string.
            default: true
            type: boolean
          analyzer:
            description: Analyzer used to convert text in the query string into tokens.
            type: string
          analyze_wildcard:
            description: If `true`, the query attempts to analyze wildcard terms in
              the query string.
            default: false
            type: boolean
          auto_generate_synonyms_phrase_query:
            description: If `true`, match phrase queries are automatically created
              for multi-term synonyms.
            default: true
            type: boolean
          default_field:
            description: |-
              Default field to search if no field is provided in the query string.
              Supports wildcards (`*`).
              Defaults to the `index.query.default_field` index setting, which has a default value of `*`.
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          default_operator:
            description: Default boolean logic used to interpret text in the query
              string if no operators are specified.
            default: "'or'"
            allOf:
            - "$ref": "#/components/schemas/_types.query_dsl.Operator"
          enable_position_increments:
            description: If `true`, enable position increments in queries constructed
              from a `query_string` search.
            default: true
            type: boolean
          escape:
            default: false
            type: boolean
          fields:
            description: Array of fields to search. Supports wildcards (`*`).
            type: array
            items:
              "$ref": "#/components/schemas/_types.Field"
          fuzziness:
            description: Maximum edit distance allowed for fuzzy matching.
            allOf:
            - "$ref": "#/components/schemas/_types.Fuzziness"
          fuzzy_max_expansions:
            description: Maximum number of terms to which the query expands for fuzzy
              matching.
            default: 50
            type: number
          fuzzy_prefix_length:
            description: Number of beginning characters left unchanged for fuzzy matching.
            default: 0
            type: number
          fuzzy_rewrite:
            description: Method used to rewrite the query.
            allOf:
            - "$ref": "#/components/schemas/_types.MultiTermQueryRewrite"
          fuzzy_transpositions:
            description: If `true`, edits for fuzzy matching include transpositions
              of two adjacent characters (for example, `ab` to `ba`).
            default: true
            type: boolean
          lenient:
            description: If `true`, format-based errors, such as providing a text
              value for a numeric field, are ignored.
            default: false
            type: boolean
          max_determinized_states:
            description: Maximum number of automaton states required for the query.
            default: 10000
            type: number
          minimum_should_match:
            description: Minimum number of clauses that must match for a document
              to be returned.
            allOf:
            - "$ref": "#/components/schemas/_types.MinimumShouldMatch"
          phrase_slop:
            description: Maximum number of positions allowed between matching tokens
              for phrases.
            default: 0
            type: number
          query:
            description: Query string you wish to parse and use for search.
            type: string
          quote_analyzer:
            description: |-
              Analyzer used to convert quoted text in the query string into tokens.
              For quoted text, this parameter overrides the analyzer specified in the `analyzer` parameter.
            type: string
          quote_field_suffix:
            description: |-
              Suffix appended to quoted text in the query string.
              You can use this suffix to use a different analysis method for exact matches.
            type: string
          rewrite:
            description: Method used to rewrite the query.
            allOf:
            - "$ref": "#/components/schemas/_types.MultiTermQueryRewrite"
          tie_breaker:
            description: How to combine the queries generated from the individual
              search terms in the resulting `dis_max` query.
            type: number
          time_zone:
            description: Coordinated Universal Time (UTC) offset or IANA time zone
              used to convert date values in the query string to UTC.
            allOf:
            - "$ref": "#/components/schemas/_types.TimeZone"
          type:
            description: |+
              Determines how the query matches and scores documents.

              Supported values include:
                - `best_fields`: Finds documents that match any field, but uses the `_score` from the best field.
                - `most_fields`: Finds documents that match any field and combines the `_score` from each field.
                - `cross_fields`: Treats fields with the same analyzer as though they were one big field.
              Looks for each word in any field.
                - `phrase`: Runs a `match_phrase` query on each field and uses the `_score` from the best field.
                - `phrase_prefix`: Runs a `match_phrase_prefix` query on each field and uses the `_score` from the best field.
                - `bool_prefix`: Creates a `match_bool_prefix` query on each field and combines the `_score` from each field.

            default: "'best_fields'"
            allOf:
            - "$ref": "#/components/schemas/_types.query_dsl.TextQueryType"
        required:
        - query
      x-model: true
    _types.TimeZone:
      type: string
    _types.query_dsl.RangeQuery:
      externalDocs:
        url: https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-range-query
      oneOf:
      - "$ref": "#/components/schemas/_types.query_dsl.UntypedRangeQuery"
      - "$ref": "#/components/schemas/_types.query_dsl.DateRangeQuery"
      - "$ref": "#/components/schemas/_types.query_dsl.NumberRangeQuery"
      - "$ref": "#/components/schemas/_types.query_dsl.TermRangeQuery"
      x-model: true
    _types.query_dsl.UntypedRangeQuery:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.RangeQueryBase"
      - type: object
        properties:
          format:
            description: Date format used to convert `date` values in the query.
            allOf:
            - "$ref": "#/components/schemas/_types.DateFormat"
          time_zone:
            description: Coordinated Universal Time (UTC) offset or IANA time zone
              used to convert `date` values in the query to UTC.
            allOf:
            - "$ref": "#/components/schemas/_types.TimeZone"
    _types.DateFormat:
      type: string
    _types.query_dsl.RangeQueryBase:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.QueryBase"
      - type: object
        properties:
          relation:
            description: |+
              Indicates how the range query matches values for `range` fields.

              Supported values include:
                - `within`: Matches documents with a range field value entirely within the query’s range.
                - `contains`: Matches documents with a range field value that entirely contains the query’s range.
                - `intersects`: Matches documents with a range field value that intersects the query’s range.

            default: intersects
            allOf:
            - "$ref": "#/components/schemas/_types.query_dsl.RangeRelation"
          gt:
            description: Greater than.
            type: object
          gte:
            description: Greater than or equal to.
            type: object
          lt:
            description: Less than.
            type: object
          lte:
            description: Less than or equal to.
            type: object
    _types.query_dsl.RangeRelation:
      type: string
      enum:
      - within
      - contains
      - intersects
    _types.query_dsl.DateRangeQuery:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.RangeQueryBaseDateMath"
      - type: object
        properties:
          format:
            description: Date format used to convert `date` values in the query.
            allOf:
            - "$ref": "#/components/schemas/_types.DateFormat"
          time_zone:
            description: Coordinated Universal Time (UTC) offset or IANA time zone
              used to convert `date` values in the query to UTC.
            allOf:
            - "$ref": "#/components/schemas/_types.TimeZone"
    _types.query_dsl.RangeQueryBaseDateMath:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.QueryBase"
      - type: object
        properties:
          relation:
            description: |+
              Indicates how the range query matches values for `range` fields.

              Supported values include:
                - `within`: Matches documents with a range field value entirely within the query’s range.
                - `contains`: Matches documents with a range field value that entirely contains the query’s range.
                - `intersects`: Matches documents with a range field value that intersects the query’s range.

            default: intersects
            allOf:
            - "$ref": "#/components/schemas/_types.query_dsl.RangeRelation"
          gt:
            description: Greater than.
            allOf:
            - "$ref": "#/components/schemas/_types.DateMath"
          gte:
            description: Greater than or equal to.
            allOf:
            - "$ref": "#/components/schemas/_types.DateMath"
          lt:
            description: Less than.
            allOf:
            - "$ref": "#/components/schemas/_types.DateMath"
          lte:
            description: Less than or equal to.
            allOf:
            - "$ref": "#/components/schemas/_types.DateMath"
    _types.query_dsl.NumberRangeQuery:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.RangeQueryBasedouble"
      - type: object
    _types.query_dsl.RangeQueryBasedouble:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.QueryBase"
      - type: object
        properties:
          relation:
            description: |+
              Indicates how the range query matches values for `range` fields.

              Supported values include:
                - `within`: Matches documents with a range field value entirely within the query’s range.
                - `contains`: Matches documents with a range field value that entirely contains the query’s range.
                - `intersects`: Matches documents with a range field value that intersects the query’s range.

            default: intersects
            allOf:
            - "$ref": "#/components/schemas/_types.query_dsl.RangeRelation"
          gt:
            description: Greater than.
            type: number
          gte:
            description: Greater than or equal to.
            type: number
          lt:
            description: Less than.
            type: number
          lte:
            description: Less than or equal to.
            type: number
    _types.query_dsl.TermRangeQuery:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.RangeQueryBasestring"
      - type: object
    _types.query_dsl.RangeQueryBasestring:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.QueryBase"
      - type: object
        properties:
          relation:
            description: |+
              Indicates how the range query matches values for `range` fields.

              Supported values include:
                - `within`: Matches documents with a range field value entirely within the query’s range.
                - `contains`: Matches documents with a range field value that entirely contains the query’s range.
                - `intersects`: Matches documents with a range field value that intersects the query’s range.

            default: intersects
            allOf:
            - "$ref": "#/components/schemas/_types.query_dsl.RangeRelation"
          gt:
            description: Greater than.
            type: string
          gte:
            description: Greater than or equal to.
            type: string
          lt:
            description: Less than.
            type: string
          lte:
            description: Less than or equal to.
            type: string
    _types.query_dsl.RankFeatureQuery:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.QueryBase"
      - type: object
        properties:
          field:
            description: "`rank_feature` or `rank_features` field used to boost relevance
              scores."
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          saturation:
            description: Saturation function used to boost relevance scores based
              on the value of the rank feature `field`.
            allOf:
            - "$ref": "#/components/schemas/_types.query_dsl.RankFeatureFunctionSaturation"
          log:
            description: Logarithmic function used to boost relevance scores based
              on the value of the rank feature `field`.
            allOf:
            - "$ref": "#/components/schemas/_types.query_dsl.RankFeatureFunctionLogarithm"
          linear:
            description: Linear function used to boost relevance scores based on the
              value of the rank feature `field`.
            allOf:
            - "$ref": "#/components/schemas/_types.query_dsl.RankFeatureFunctionLinear"
          sigmoid:
            description: Sigmoid function used to boost relevance scores based on
              the value of the rank feature `field`.
            allOf:
            - "$ref": "#/components/schemas/_types.query_dsl.RankFeatureFunctionSigmoid"
        required:
        - field
      x-model: true
    _types.query_dsl.RankFeatureFunctionSaturation:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.RankFeatureFunction"
      - type: object
        properties:
          pivot:
            description: Configurable pivot value so that the result will be less
              than 0.5.
            type: number
    _types.query_dsl.RankFeatureFunction:
      type: object
    _types.query_dsl.RankFeatureFunctionLogarithm:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.RankFeatureFunction"
      - type: object
        properties:
          scaling_factor:
            description: Configurable scaling factor.
            type: number
        required:
        - scaling_factor
    _types.query_dsl.RankFeatureFunctionLinear:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.RankFeatureFunction"
      - type: object
    _types.query_dsl.RankFeatureFunctionSigmoid:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.RankFeatureFunction"
      - type: object
        properties:
          pivot:
            description: Configurable pivot value so that the result will be less
              than 0.5.
            type: number
          exponent:
            description: Configurable Exponent.
            type: number
        required:
        - pivot
        - exponent
    _types.query_dsl.RegexpQuery:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.QueryBase"
      - type: object
        properties:
          case_insensitive:
            description: |-
              Allows case insensitive matching of the regular expression value with the indexed field values when set to `true`.
              When `false`, case sensitivity of matching depends on the underlying field’s mapping.
            default: false
            x-state: Generally available; Added in 7.10.0
            type: boolean
          flags:
            description: Enables optional operators for the regular expression.
            type: string
          max_determinized_states:
            description: Maximum number of automaton states required for the query.
            default: 10000
            type: number
          rewrite:
            description: Method used to rewrite the query.
            allOf:
            - "$ref": "#/components/schemas/_types.MultiTermQueryRewrite"
          value:
            description: Regular expression for terms you wish to find in the provided
              field.
            type: string
        required:
        - value
      x-model: true
    _types.query_dsl.RuleQuery:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.QueryBase"
      - type: object
        properties:
          organic:
            allOf:
            - "$ref": "#/components/schemas/_types.query_dsl.QueryContainer"
          ruleset_ids:
            oneOf:
            - "$ref": "#/components/schemas/_types.Id"
            - type: array
              items:
                "$ref": "#/components/schemas/_types.Id"
          ruleset_id:
            type: string
          match_criteria:
            type: object
        required:
        - organic
        - match_criteria
      x-model: true
    _types.query_dsl.ScriptQuery:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.QueryBase"
      - type: object
        properties:
          script:
            description: |-
              Contains a script to run as a query.
              This script must return a boolean value, `true` or `false`.
            allOf:
            - "$ref": "#/components/schemas/_types.Script"
        required:
        - script
      x-model: true
    _types.query_dsl.ScriptScoreQuery:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.QueryBase"
      - type: object
        properties:
          min_score:
            description: Documents with a score lower than this floating point number
              are excluded from the search results.
            type: number
          query:
            description: Query used to return documents.
            allOf:
            - "$ref": "#/components/schemas/_types.query_dsl.QueryContainer"
          script:
            description: |-
              Script used to compute the score of documents returned by the query.
              Important: final relevance scores from the `script_score` query cannot be negative.
            allOf:
            - "$ref": "#/components/schemas/_types.Script"
        required:
        - query
        - script
      x-model: true
    _types.query_dsl.SemanticQuery:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.QueryBase"
      - type: object
        properties:
          field:
            description: The field to query, which must be a semantic_text field type
            type: string
          query:
            description: The query text
            type: string
        required:
        - field
        - query
      x-model: true
    _types.query_dsl.ShapeQuery:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.QueryBase"
      - type: object
        properties:
          ignore_unmapped:
            description: When set to `true` the query ignores an unmapped field and
              will not match any documents.
            type: boolean
      x-model: true
    _types.query_dsl.SimpleQueryStringQuery:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.QueryBase"
      - type: object
        properties:
          analyzer:
            description: Analyzer used to convert text in the query string into tokens.
            type: string
          analyze_wildcard:
            description: If `true`, the query attempts to analyze wildcard terms in
              the query string.
            default: false
            type: boolean
          auto_generate_synonyms_phrase_query:
            description: If `true`, the parser creates a match_phrase query for each
              multi-position token.
            default: true
            type: boolean
          default_operator:
            description: Default boolean logic used to interpret text in the query
              string if no operators are specified.
            default: "'or'"
            allOf:
            - "$ref": "#/components/schemas/_types.query_dsl.Operator"
          fields:
            description: |-
              Array of fields you wish to search.
              Accepts wildcard expressions.
              You also can boost relevance scores for matches to particular fields using a caret (`^`) notation.
              Defaults to the `index.query.default_field index` setting, which has a default value of `*`.
            type: array
            items:
              "$ref": "#/components/schemas/_types.Field"
          flags:
            description: List of enabled operators for the simple query string syntax.
            default: ALL
            allOf:
            - "$ref": "#/components/schemas/_types.query_dsl.SimpleQueryStringFlags"
          fuzzy_max_expansions:
            description: Maximum number of terms to which the query expands for fuzzy
              matching.
            default: 50
            type: number
          fuzzy_prefix_length:
            description: Number of beginning characters left unchanged for fuzzy matching.
            default: 0
            type: number
          fuzzy_transpositions:
            description: If `true`, edits for fuzzy matching include transpositions
              of two adjacent characters (for example, `ab` to `ba`).
            type: boolean
          lenient:
            description: If `true`, format-based errors, such as providing a text
              value for a numeric field, are ignored.
            default: false
            type: boolean
          minimum_should_match:
            description: Minimum number of clauses that must match for a document
              to be returned.
            allOf:
            - "$ref": "#/components/schemas/_types.MinimumShouldMatch"
          query:
            description: Query string in the simple query string syntax you wish to
              parse and use for search.
            type: string
          quote_field_suffix:
            description: Suffix appended to quoted text in the query string.
            type: string
        required:
        - query
      x-model: true
    _types.query_dsl.SimpleQueryStringFlags:
      description: Query flags can be either a single flag or a combination of flags,
        e.g. `OR|AND|PREFIX`
      allOf:
      - "$ref": "#/components/schemas/_spec_utils.PipeSeparatedFlagsSimpleQueryStringFlag"
    _spec_utils.PipeSeparatedFlagsSimpleQueryStringFlag:
      description: |-
        A set of flags that can be represented as a single enum value or a set of values that are encoded
        as a pipe-separated string

        Depending on the target language, code generators can use this hint to generate language specific
        flags enum constructs and the corresponding (de-)serialization code.
      oneOf:
      - "$ref": "#/components/schemas/_types.query_dsl.SimpleQueryStringFlag"
      - type: string
    _types.query_dsl.SimpleQueryStringFlag:
      type: string
      enum:
      - NONE
      - AND
      - NOT
      - OR
      - PREFIX
      - PHRASE
      - PRECEDENCE
      - ESCAPE
      - WHITESPACE
      - FUZZY
      - NEAR
      - SLOP
      - ALL
    _types.query_dsl.SpanContainingQuery:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.QueryBase"
      - type: object
        properties:
          big:
            description: |-
              Can be any span query.
              Matching spans from `big` that contain matches from `little` are returned.
            allOf:
            - "$ref": "#/components/schemas/_types.query_dsl.SpanQuery"
          little:
            description: |-
              Can be any span query.
              Matching spans from `big` that contain matches from `little` are returned.
            allOf:
            - "$ref": "#/components/schemas/_types.query_dsl.SpanQuery"
        required:
        - big
        - little
      x-model: true
    _types.query_dsl.SpanQuery:
      type: object
      properties:
        span_containing:
          description: Accepts a list of span queries, but only returns those spans
            which also match a second span query.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.SpanContainingQuery"
        span_field_masking:
          description: Allows queries like `span_near` or `span_or` across different
            fields.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.SpanFieldMaskingQuery"
        span_first:
          description: Accepts another span query whose matches must appear within
            the first N positions of the field.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.SpanFirstQuery"
        span_gap:
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.SpanGapQuery"
        span_multi:
          description: Wraps a `term`, `range`, `prefix`, `wildcard`, `regexp`, or
            `fuzzy` query.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.SpanMultiTermQuery"
        span_near:
          description: Accepts multiple span queries whose matches must be within
            the specified distance of each other, and possibly in the same order.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.SpanNearQuery"
        span_not:
          description: Wraps another span query, and excludes any documents which
            match that query.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.SpanNotQuery"
        span_or:
          description: Combines multiple span queries and returns documents which
            match any of the specified queries.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.SpanOrQuery"
        span_term:
          description: The equivalent of the `term` query but for use with other span
            queries.
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/_types.query_dsl.SpanTermQuery"
          minProperties: 1
          maxProperties: 1
        span_within:
          description: The result from a single span query is returned as long is
            its span falls within the spans returned by a list of other span queries.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.SpanWithinQuery"
      minProperties: 1
      maxProperties: 1
    _types.query_dsl.SpanFieldMaskingQuery:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.QueryBase"
      - type: object
        properties:
          field:
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          query:
            allOf:
            - "$ref": "#/components/schemas/_types.query_dsl.SpanQuery"
        required:
        - field
        - query
      x-model: true
    _types.query_dsl.SpanFirstQuery:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.QueryBase"
      - type: object
        properties:
          end:
            description: Controls the maximum end position permitted in a match.
            type: number
          match:
            description: Can be any other span type query.
            allOf:
            - "$ref": "#/components/schemas/_types.query_dsl.SpanQuery"
        required:
        - end
        - match
      x-model: true
    _types.query_dsl.SpanGapQuery:
      description: Can only be used as a clause in a span_near query.
      type: object
      additionalProperties:
        type: number
      minProperties: 1
      maxProperties: 1
    _types.query_dsl.SpanMultiTermQuery:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.QueryBase"
      - type: object
        properties:
          match:
            description: Should be a multi term query (one of `wildcard`, `fuzzy`,
              `prefix`, `range`, or `regexp` query).
            allOf:
            - "$ref": "#/components/schemas/_types.query_dsl.QueryContainer"
        required:
        - match
      x-model: true
    _types.query_dsl.SpanNearQuery:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.QueryBase"
      - type: object
        properties:
          clauses:
            description: Array of one or more other span type queries.
            type: array
            items:
              "$ref": "#/components/schemas/_types.query_dsl.SpanQuery"
          in_order:
            description: Controls whether matches are required to be in-order.
            type: boolean
          slop:
            description: Controls the maximum number of intervening unmatched positions
              permitted.
            type: number
        required:
        - clauses
      x-model: true
    _types.query_dsl.SpanNotQuery:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.QueryBase"
      - type: object
        properties:
          dist:
            description: |-
              The number of tokens from within the include span that can’t have overlap with the exclude span.
              Equivalent to setting both `pre` and `post`.
            type: number
          exclude:
            description: Span query whose matches must not overlap those returned.
            allOf:
            - "$ref": "#/components/schemas/_types.query_dsl.SpanQuery"
          include:
            description: Span query whose matches are filtered.
            allOf:
            - "$ref": "#/components/schemas/_types.query_dsl.SpanQuery"
          post:
            description: The number of tokens after the include span that can’t have
              overlap with the exclude span.
            default: 0
            type: number
          pre:
            description: The number of tokens before the include span that can’t have
              overlap with the exclude span.
            default: 0
            type: number
        required:
        - exclude
        - include
      x-model: true
    _types.query_dsl.SpanOrQuery:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.QueryBase"
      - type: object
        properties:
          clauses:
            description: Array of one or more other span type queries.
            type: array
            items:
              "$ref": "#/components/schemas/_types.query_dsl.SpanQuery"
        required:
        - clauses
      x-model: true
    _types.query_dsl.SpanTermQuery:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.QueryBase"
      - type: object
        properties:
          value:
            allOf:
            - "$ref": "#/components/schemas/_types.FieldValue"
        required:
        - value
      x-model: true
    _types.query_dsl.SpanWithinQuery:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.QueryBase"
      - type: object
        properties:
          big:
            description: |-
              Can be any span query.
              Matching spans from `little` that are enclosed within `big` are returned.
            allOf:
            - "$ref": "#/components/schemas/_types.query_dsl.SpanQuery"
          little:
            description: |-
              Can be any span query.
              Matching spans from `little` that are enclosed within `big` are returned.
            allOf:
            - "$ref": "#/components/schemas/_types.query_dsl.SpanQuery"
        required:
        - big
        - little
      x-model: true
    _types.query_dsl.SparseVectorQuery:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.QueryBase"
      - externalDocs:
          url: https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-sparse-vector-query
        allOf:
        - type: object
          properties:
            field:
              description: |-
                The name of the field that contains the token-weight pairs to be searched against.
                This field must be a mapped sparse_vector field.
              allOf:
              - "$ref": "#/components/schemas/_types.Field"
            query:
              description: |-
                The query text you want to use for search.
                If inference_id is specified, query must also be specified.
              type: string
            prune:
              description: |-
                Whether to perform pruning, omitting the non-significant tokens from the query to improve query performance.
                If prune is true but the pruning_config is not specified, pruning will occur but default values will be used.
                Default: false
              x-state: Generally available; Added in 8.15.0
              type: boolean
            pruning_config:
              description: |-
                Optional pruning configuration.
                If enabled, this will omit non-significant tokens from the query in order to improve query performance.
                This is only used if prune is set to true.
                If prune is set to true but pruning_config is not specified, default values will be used.
              x-state: Generally available; Added in 8.15.0
              allOf:
              - "$ref": "#/components/schemas/_types.TokenPruningConfig"
          required:
          - field
        - type: object
          properties:
            query_vector:
              description: |-
                Dictionary of precomputed sparse vectors and their associated weights.
                Only one of inference_id or query_vector may be supplied in a request.
              type: object
              additionalProperties:
                type: number
            inference_id:
              description: |-
                The inference ID to use to convert the query text into token-weight pairs.
                It must be the same inference ID that was used to create the tokens from the input text.
                Only one of inference_id and query_vector is allowed.
                If inference_id is specified, query must also be specified.
                Only one of inference_id or query_vector may be supplied in a request.
              allOf:
              - "$ref": "#/components/schemas/_types.Id"
          minProperties: 1
          maxProperties: 1
      x-model: true
    _types.TokenPruningConfig:
      type: object
      properties:
        tokens_freq_ratio_threshold:
          description: Tokens whose frequency is more than this threshold times the
            average frequency of all tokens in the specified field are considered
            outliers and pruned.
          default: 5
          type: number
        tokens_weight_threshold:
          description: Tokens whose weight is less than this threshold are considered
            nonsignificant and pruned.
          default: 0.4
          type: number
        only_score_pruned_tokens:
          description: Whether to only score pruned tokens, vs only scoring kept tokens.
          default: false
          type: boolean
    _types.query_dsl.TermQuery:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.QueryBase"
      - type: object
        properties:
          value:
            description: Term you wish to find in the provided field.
            allOf:
            - "$ref": "#/components/schemas/_types.FieldValue"
          case_insensitive:
            description: |-
              Allows ASCII case insensitive matching of the value with the indexed field values when set to `true`.
              When `false`, the case sensitivity of matching depends on the underlying field’s mapping.
            default: false
            x-state: Generally available; Added in 7.10.0
            type: boolean
        required:
        - value
      x-model: true
    _types.query_dsl.TermsQuery:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.QueryBase"
      - type: object
      x-model: true
    _types.query_dsl.TermsSetQuery:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.QueryBase"
      - type: object
        properties:
          minimum_should_match:
            description: Specification describing number of matching terms required
              to return a document.
            x-state: Generally available; Added in 8.10.0
            allOf:
            - "$ref": "#/components/schemas/_types.MinimumShouldMatch"
          minimum_should_match_field:
            description: Numeric field containing the number of matching terms required
              to return a document.
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          minimum_should_match_script:
            description: Custom script containing the number of matching terms required
              to return a document.
            allOf:
            - "$ref": "#/components/schemas/_types.Script"
          terms:
            description: Array of terms you wish to find in the provided field.
            type: array
            items:
              "$ref": "#/components/schemas/_types.FieldValue"
        required:
        - terms
      x-model: true
    _types.query_dsl.TextExpansionQuery:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.QueryBase"
      - type: object
        properties:
          model_id:
            description: The text expansion NLP model to use
            type: string
          model_text:
            description: The query text
            type: string
          pruning_config:
            description: Token pruning configurations
            x-state: Technical preview; Added in 8.13.0
            allOf:
            - "$ref": "#/components/schemas/_types.TokenPruningConfig"
        required:
        - model_id
        - model_text
      x-model: true
    _types.query_dsl.WeightedTokensQuery:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.QueryBase"
      - type: object
        properties:
          tokens:
            description: The tokens representing this query
            oneOf:
            - type: object
              additionalProperties:
                type: number
            - type: array
              items:
                type: object
                additionalProperties:
                  type: number
          pruning_config:
            description: Token pruning configurations
            allOf:
            - "$ref": "#/components/schemas/_types.TokenPruningConfig"
        required:
        - tokens
      x-model: true
    _types.query_dsl.WildcardQuery:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.QueryBase"
      - type: object
        properties:
          case_insensitive:
            description: Allows case insensitive matching of the pattern with the
              indexed field values when set to true. Default is false which means
              the case sensitivity of matching depends on the underlying field’s mapping.
            x-state: Generally available; Added in 7.10.0
            type: boolean
          rewrite:
            description: Method used to rewrite the query.
            allOf:
            - "$ref": "#/components/schemas/_types.MultiTermQueryRewrite"
          value:
            description: Wildcard pattern for terms you wish to find in the provided
              field. Required, when wildcard is not set.
            type: string
          wildcard:
            description: Wildcard pattern for terms you wish to find in the provided
              field. Required, when value is not set.
            type: string
      x-model: true
    _types.query_dsl.WrapperQuery:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.QueryBase"
      - type: object
        properties:
          query:
            description: |-
              A base64 encoded query.
              The binary data format can be any of JSON, YAML, CBOR or SMILE encodings
            type: string
        required:
        - query
      x-model: true
    _types.query_dsl.TypeQuery:
      allOf:
      - "$ref": "#/components/schemas/_types.query_dsl.QueryBase"
      - type: object
        properties:
          value:
            type: string
        required:
        - value
    _types.aggregations.BucketAggregationBase:
      description: Base type for bucket aggregations. These aggregations also accept
        sub-aggregations.
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.Aggregation"
      - type: object
    _types.aggregations.Aggregation:
      type: object
    _types.aggregations.AutoDateHistogramAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.BucketAggregationBase"
      - type: object
        properties:
          buckets:
            description: The target number of buckets.
            default: 10
            type: number
          field:
            description: The field on which to run the aggregation.
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          format:
            description: |-
              The date format used to format `key_as_string` in the response.
              If no `format` is specified, the first date format specified in the field mapping is used.
            type: string
          minimum_interval:
            description: |-
              The minimum rounding interval.
              This can make the collection process more efficient, as the aggregation will not attempt to round at any interval lower than `minimum_interval`.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.MinimumInterval"
          missing:
            description: |-
              The value to apply to documents that do not have a value.
              By default, documents without a value are ignored.
            allOf:
            - "$ref": "#/components/schemas/_types.DateTime"
          offset:
            description: Time zone specified as a ISO 8601 UTC offset.
            type: string
          params:
            type: object
            additionalProperties:
              type: object
          script:
            allOf:
            - "$ref": "#/components/schemas/_types.Script"
          time_zone:
            description: Time zone ID.
            allOf:
            - "$ref": "#/components/schemas/_types.TimeZone"
      x-model: true
    _types.aggregations.MinimumInterval:
      type: string
      enum:
      - second
      - minute
      - hour
      - day
      - month
      - year
    _types.aggregations.AverageAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.FormatMetricAggregationBase"
      - type: object
    _types.aggregations.FormatMetricAggregationBase:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.MetricAggregationBase"
      - type: object
        properties:
          format:
            type: string
    _types.aggregations.MetricAggregationBase:
      type: object
      properties:
        field:
          description: The field on which to run the aggregation.
          allOf:
          - "$ref": "#/components/schemas/_types.Field"
        missing:
          description: |-
            The value to apply to documents that do not have a value.
            By default, documents without a value are ignored.
          allOf:
          - "$ref": "#/components/schemas/_types.aggregations.Missing"
        script:
          allOf:
          - "$ref": "#/components/schemas/_types.Script"
    _types.aggregations.Missing:
      oneOf:
      - type: string
      - type: number
      - type: number
      - type: boolean
    _types.aggregations.AverageBucketAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.PipelineAggregationBase"
      - type: object
      x-model: true
    _types.aggregations.PipelineAggregationBase:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.BucketPathAggregation"
      - type: object
        properties:
          format:
            description: |-
              `DecimalFormat` pattern for the output value.
              If specified, the formatted value is returned in the aggregation’s `value_as_string` property.
            type: string
          gap_policy:
            description: |+
              Policy to apply when gaps are found in the data.

              Supported values include:
                - `skip`: Treats missing data as if the bucket does not exist. It will skip the bucket and
              continue calculating using the next available value.
                - `insert_zeros`: Replace missing values with a zero (0) and pipeline aggregation computation will proceed as normal.
                - `keep_values`: Similar to skip, except if the metric provides a non-null, non-NaN value this value is used,
              otherwise the empty bucket is skipped.

            default: skip
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.GapPolicy"
    _types.aggregations.GapPolicy:
      type: string
      enum:
      - skip
      - insert_zeros
      - keep_values
    _types.aggregations.BucketPathAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.Aggregation"
      - type: object
        properties:
          buckets_path:
            description: Path to the buckets that contain one set of values to correlate.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.BucketsPath"
    _types.aggregations.BucketsPath:
      description: |-
        Buckets path can be expressed in different ways, and an aggregation may accept some or all of these
        forms depending on its type. Please refer to each aggregation's documentation to know what buckets
        path forms they accept.
      oneOf:
      - type: string
      - type: array
        items:
          type: string
      - type: object
        additionalProperties:
          type: string
    _types.aggregations.BoxplotAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.MetricAggregationBase"
      - type: object
        properties:
          compression:
            description: Limits the maximum number of nodes used by the underlying
              TDigest algorithm to `20 * compression`, enabling control of memory
              usage and approximation error.
            type: number
          execution_hint:
            description: |-
              The default implementation of TDigest is optimized for performance, scaling to millions or even billions of sample values while maintaining acceptable accuracy levels (close to 1% relative error for millions of samples in some cases).
              To use an implementation optimized for accuracy, set this parameter to high_accuracy instead.
            default: default
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.TDigestExecutionHint"
    _types.aggregations.TDigestExecutionHint:
      type: string
      enum:
      - default
      - high_accuracy
    _types.aggregations.BucketScriptAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.PipelineAggregationBase"
      - type: object
        properties:
          script:
            description: The script to run for this aggregation.
            allOf:
            - "$ref": "#/components/schemas/_types.Script"
      x-model: true
    _types.aggregations.BucketSelectorAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.PipelineAggregationBase"
      - type: object
        properties:
          script:
            description: The script to run for this aggregation.
            allOf:
            - "$ref": "#/components/schemas/_types.Script"
      x-model: true
    _types.aggregations.BucketSortAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.Aggregation"
      - type: object
        properties:
          from:
            description: Buckets in positions prior to `from` will be truncated.
            type: number
          gap_policy:
            description: |+
              The policy to apply when gaps are found in the data.

              Supported values include:
                - `skip`: Treats missing data as if the bucket does not exist. It will skip the bucket and
              continue calculating using the next available value.
                - `insert_zeros`: Replace missing values with a zero (0) and pipeline aggregation computation will proceed as normal.
                - `keep_values`: Similar to skip, except if the metric provides a non-null, non-NaN value this value is used,
              otherwise the empty bucket is skipped.

            default: skip
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.GapPolicy"
          size:
            description: |-
              The number of buckets to return.
              Defaults to all buckets of the parent aggregation.
            type: number
          sort:
            description: The list of fields to sort on.
            allOf:
            - "$ref": "#/components/schemas/_types.Sort"
      x-model: true
    _types.aggregations.BucketKsAggregation:
      description: |-
        A sibling pipeline aggregation which executes a two sample Kolmogorov–Smirnov test (referred
        to as a "K-S test" from now on) against a provided distribution, and the distribution implied
        by the documents counts in the configured sibling aggregation. Specifically, for some metric,
        assuming that the percentile intervals of the metric are known beforehand or have been computed
        by an aggregation, then one would use range aggregation for the sibling to compute the p-value
        of the distribution difference between the metric and the restriction of that metric to a subset
        of the documents. A natural use case is if the sibling aggregation range aggregation nested in a
        terms aggregation, in which case one compares the overall distribution of metric to its restriction
        to each term.
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.BucketPathAggregation"
      - type: object
        properties:
          alternative:
            description: |-
              A list of string values indicating which K-S test alternative to calculate. The valid values
              are: "greater", "less", "two_sided". This parameter is key for determining the K-S statistic used
              when calculating the K-S test. Default value is all possible alternative hypotheses.
            type: array
            items:
              type: string
          fractions:
            description: |-
              A list of doubles indicating the distribution of the samples with which to compare to the `buckets_path` results.
              In typical usage this is the overall proportion of documents in each bucket, which is compared with the actual
              document proportions in each bucket from the sibling aggregation counts. The default is to assume that overall
              documents are uniformly distributed on these buckets, which they would be if one used equal percentiles of a
              metric to define the bucket end points.
            type: array
            items:
              type: number
          sampling_method:
            description: |-
              Indicates the sampling methodology when calculating the K-S test. Note, this is sampling of the returned values.
              This determines the cumulative distribution function (CDF) points used comparing the two samples. Default is
              `upper_tail`, which emphasizes the upper end of the CDF points. Valid options are: `upper_tail`, `uniform`,
              and `lower_tail`.
            type: string
      x-model: true
    _types.aggregations.BucketCorrelationAggregation:
      description: A sibling pipeline aggregation which executes a correlation function
        on the configured sibling multi-bucket aggregation.
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.BucketPathAggregation"
      - type: object
        properties:
          function:
            description: The correlation function to execute.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.BucketCorrelationFunction"
        required:
        - function
      x-model: true
    _types.aggregations.BucketCorrelationFunction:
      type: object
      properties:
        count_correlation:
          description: The configuration to calculate a count correlation. This function
            is designed for determining the correlation of a term value and a given
            metric.
          allOf:
          - "$ref": "#/components/schemas/_types.aggregations.BucketCorrelationFunctionCountCorrelation"
      required:
      - count_correlation
    _types.aggregations.BucketCorrelationFunctionCountCorrelation:
      type: object
      properties:
        indicator:
          description: The indicator with which to correlate the configured `bucket_path`
            values.
          allOf:
          - "$ref": "#/components/schemas/_types.aggregations.BucketCorrelationFunctionCountCorrelationIndicator"
      required:
      - indicator
    _types.aggregations.BucketCorrelationFunctionCountCorrelationIndicator:
      type: object
      properties:
        doc_count:
          description: |-
            The total number of documents that initially created the expectations. It’s required to be greater
            than or equal to the sum of all values in the buckets_path as this is the originating superset of data
            to which the term values are correlated.
          type: number
        expectations:
          description: |-
            An array of numbers with which to correlate the configured `bucket_path` values.
            The length of this value must always equal the number of buckets returned by the `bucket_path`.
          type: array
          items:
            type: number
        fractions:
          description: |-
            An array of fractions to use when averaging and calculating variance. This should be used if
            the pre-calculated data and the buckets_path have known gaps. The length of fractions, if provided,
            must equal expectations.
          type: array
          items:
            type: number
      required:
      - doc_count
      - expectations
    _types.aggregations.CardinalityAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.MetricAggregationBase"
      - type: object
        properties:
          precision_threshold:
            description: |-
              A unique count below which counts are expected to be close to accurate.
              This allows to trade memory for accuracy.
            default: 3000
            type: number
          rehash:
            type: boolean
          execution_hint:
            description: |+
              Mechanism by which cardinality aggregations is run.

              Supported values include:
                - `global_ordinals`: Run the aggregation by using global ordinals of the field and resolving those values after finishing a shard.
                - `segment_ordinals`: Run the aggregation by using segment ordinal values and resolving those values after each segment.
                - `direct`: Run the aggregation by using field values directly.
                - `save_memory_heuristic`: Heuristic-based mode, default in Elasticsearch 8.3 and earlier.
                - `save_time_heuristic`: Heuristic-based mode, default in Elasticsearch 8.4 and later.

            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.CardinalityExecutionMode"
    _types.aggregations.CardinalityExecutionMode:
      type: string
      enum:
      - global_ordinals
      - segment_ordinals
      - direct
      - save_memory_heuristic
      - save_time_heuristic
    _types.aggregations.CartesianBoundsAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.MetricAggregationBase"
      - type: object
    _types.aggregations.CartesianCentroidAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.MetricAggregationBase"
      - type: object
    _types.aggregations.CategorizeTextAggregation:
      description: |-
        A multi-bucket aggregation that groups semi-structured text into buckets. Each text
        field is re-analyzed using a custom analyzer. The resulting tokens are then categorized
        creating buckets of similarly formatted text values. This aggregation works best with machine
        generated text like system logs. Only the first 100 analyzed tokens are used to categorize the text.
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.Aggregation"
      - type: object
        properties:
          field:
            description: The semi-structured text field to categorize.
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          max_unique_tokens:
            description: |-
              The maximum number of unique tokens at any position up to max_matched_tokens. Must be larger than 1.
              Smaller values use less memory and create fewer categories. Larger values will use more memory and
              create narrower categories. Max allowed value is 100.
            default: 50
            type: number
          max_matched_tokens:
            description: |-
              The maximum number of token positions to match on before attempting to merge categories. Larger
              values will use more memory and create narrower categories. Max allowed value is 100.
            default: 5
            type: number
          similarity_threshold:
            description: |-
              The minimum percentage of tokens that must match for text to be added to the category bucket. Must
              be between 1 and 100. The larger the value the narrower the categories. Larger values will increase memory
              usage and create narrower categories.
            default: 50
            type: number
          categorization_filters:
            description: |-
              This property expects an array of regular expressions. The expressions are used to filter out matching
              sequences from the categorization field values. You can use this functionality to fine tune the categorization
              by excluding sequences from consideration when categories are defined. For example, you can exclude SQL
              statements that appear in your log files. This property cannot be used at the same time as categorization_analyzer.
              If you only want to define simple regular expression filters that are applied prior to tokenization, setting
              this property is the easiest method. If you also want to customize the tokenizer or post-tokenization filtering,
              use the categorization_analyzer property instead and include the filters as pattern_replace character filters.
            type: array
            items:
              type: string
          categorization_analyzer:
            externalDocs:
              url: https://www.elastic.co/docs/api/doc/elasticsearch/operation/operation-indices-analyze
            description: |-
              The categorization analyzer specifies how the text is analyzed and tokenized before being categorized.
              The syntax is very similar to that used to define the analyzer in the analyze API. This property
              cannot be used at the same time as `categorization_filters`.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.CategorizeTextAnalyzer"
          shard_size:
            description: The number of categorization buckets to return from each
              shard before merging all the results.
            type: number
          size:
            description: The number of buckets to return.
            default: 10
            type: number
          min_doc_count:
            description: The minimum number of documents in a bucket to be returned
              to the results.
            type: number
          shard_min_doc_count:
            description: The minimum number of documents in a bucket to be returned
              from the shard before merging.
            type: number
        required:
        - field
      x-model: true
    _types.aggregations.CategorizeTextAnalyzer:
      oneOf:
      - type: string
      - "$ref": "#/components/schemas/_types.aggregations.CustomCategorizeTextAnalyzer"
    _types.aggregations.CustomCategorizeTextAnalyzer:
      type: object
      properties:
        char_filter:
          type: array
          items:
            type: string
        tokenizer:
          type: string
        filter:
          type: array
          items:
            type: string
    _types.aggregations.ChangePointAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.PipelineAggregationBase"
      - type: object
    _types.aggregations.ChildrenAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.BucketAggregationBase"
      - type: object
        properties:
          type:
            description: The child type that should be selected.
            allOf:
            - "$ref": "#/components/schemas/_types.RelationName"
    _types.aggregations.CompositeAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.BucketAggregationBase"
      - type: object
        properties:
          after:
            description: When paginating, use the `after_key` value returned in the
              previous response to retrieve the next page.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.CompositeAggregateKey"
          size:
            description: The number of composite buckets that should be returned.
            default: 10
            type: number
          sources:
            description: |-
              The value sources used to build composite buckets.
              Keys are returned in the order of the `sources` definition.
            type: array
            items:
              type: object
              additionalProperties:
                "$ref": "#/components/schemas/_types.aggregations.CompositeAggregationSource"
              minProperties: 1
              maxProperties: 1
    _types.aggregations.CompositeAggregationSource:
      type: object
      properties:
        terms:
          description: A terms aggregation.
          allOf:
          - "$ref": "#/components/schemas/_types.aggregations.CompositeTermsAggregation"
        histogram:
          description: A histogram aggregation.
          allOf:
          - "$ref": "#/components/schemas/_types.aggregations.CompositeHistogramAggregation"
        date_histogram:
          description: A date histogram aggregation.
          allOf:
          - "$ref": "#/components/schemas/_types.aggregations.CompositeDateHistogramAggregation"
        geotile_grid:
          description: A geotile grid aggregation.
          allOf:
          - "$ref": "#/components/schemas/_types.aggregations.CompositeGeoTileGridAggregation"
      minProperties: 1
      maxProperties: 1
    _types.aggregations.CompositeTermsAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.CompositeAggregationBase"
      - type: object
    _types.aggregations.CompositeAggregationBase:
      type: object
      properties:
        field:
          description: Either `field` or `script` must be present
          allOf:
          - "$ref": "#/components/schemas/_types.Field"
        missing_bucket:
          type: boolean
        missing_order:
          allOf:
          - "$ref": "#/components/schemas/_types.aggregations.MissingOrder"
        script:
          description: Either `field` or `script` must be present
          allOf:
          - "$ref": "#/components/schemas/_types.Script"
        value_type:
          allOf:
          - "$ref": "#/components/schemas/_types.aggregations.ValueType"
        order:
          description: |2+


            Supported values include:
              - `asc`: Ascending (smallest to largest)
              - `desc`: Descending (largest to smallest)

          allOf:
          - "$ref": "#/components/schemas/_types.SortOrder"
    _types.aggregations.MissingOrder:
      type: string
      enum:
      - first
      - last
      - default
    _types.aggregations.ValueType:
      type: string
      enum:
      - string
      - long
      - double
      - number
      - date
      - date_nanos
      - ip
      - numeric
      - geo_point
      - boolean
    _types.aggregations.CompositeHistogramAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.CompositeAggregationBase"
      - type: object
        properties:
          interval:
            type: number
        required:
        - interval
    _types.aggregations.CompositeDateHistogramAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.CompositeAggregationBase"
      - type: object
        properties:
          format:
            type: string
          calendar_interval:
            description: Either `calendar_interval` or `fixed_interval` must be present
            allOf:
            - "$ref": "#/components/schemas/_types.DurationLarge"
          fixed_interval:
            description: Either `calendar_interval` or `fixed_interval` must be present
            allOf:
            - "$ref": "#/components/schemas/_types.DurationLarge"
          offset:
            allOf:
            - "$ref": "#/components/schemas/_types.Duration"
          time_zone:
            allOf:
            - "$ref": "#/components/schemas/_types.TimeZone"
    _types.aggregations.CompositeGeoTileGridAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.CompositeAggregationBase"
      - type: object
        properties:
          precision:
            type: number
          bounds:
            allOf:
            - "$ref": "#/components/schemas/_types.GeoBounds"
    _types.aggregations.CumulativeCardinalityAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.PipelineAggregationBase"
      - type: object
    _types.aggregations.CumulativeSumAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.PipelineAggregationBase"
      - type: object
      x-model: true
    _types.aggregations.DateHistogramAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.BucketAggregationBase"
      - type: object
        properties:
          calendar_interval:
            description: |-
              Calendar-aware interval.
              Can be specified using the unit name, such as `month`, or as a single unit quantity, such as `1M`.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.CalendarInterval"
          extended_bounds:
            description: Enables extending the bounds of the histogram beyond the
              data itself.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.ExtendedBoundsFieldDateMath"
          hard_bounds:
            description: Limits the histogram to specified bounds.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.ExtendedBoundsFieldDateMath"
          field:
            description: The date field whose values are use to build a histogram.
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          fixed_interval:
            description: 'Fixed intervals: a fixed number of SI units and never deviate,
              regardless of where they fall on the calendar.'
            allOf:
            - "$ref": "#/components/schemas/_types.Duration"
          format:
            description: |-
              The date format used to format `key_as_string` in the response.
              If no `format` is specified, the first date format specified in the field mapping is used.
            type: string
          interval:
            deprecated: true
            allOf:
            - "$ref": "#/components/schemas/_types.Duration"
          min_doc_count:
            description: |-
              Only returns buckets that have `min_doc_count` number of documents.
              By default, all buckets between the first bucket that matches documents and the last one are returned.
            type: number
          missing:
            description: |-
              The value to apply to documents that do not have a value.
              By default, documents without a value are ignored.
            allOf:
            - "$ref": "#/components/schemas/_types.DateTime"
          offset:
            description: Changes the start value of each bucket by the specified positive
              (`+`) or negative offset (`-`) duration.
            allOf:
            - "$ref": "#/components/schemas/_types.Duration"
          order:
            description: The sort order of the returned buckets.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.AggregateOrder"
          params:
            type: object
            additionalProperties:
              type: object
          script:
            allOf:
            - "$ref": "#/components/schemas/_types.Script"
          time_zone:
            description: |-
              Time zone used for bucketing and rounding.
              Defaults to Coordinated Universal Time (UTC).
            allOf:
            - "$ref": "#/components/schemas/_types.TimeZone"
          keyed:
            description: Set to `true` to associate a unique string key with each
              bucket and return the ranges as a hash rather than an array.
            type: boolean
    _types.aggregations.CalendarInterval:
      type: string
      enum:
      - second
      - 1s
      - minute
      - 1m
      - hour
      - 1h
      - day
      - 1d
      - week
      - 1w
      - month
      - 1M
      - quarter
      - 1q
      - year
      - 1y
    _types.aggregations.ExtendedBoundsFieldDateMath:
      type: object
      properties:
        max:
          description: Maximum value for the bound.
          allOf:
          - "$ref": "#/components/schemas/_types.aggregations.FieldDateMath"
        min:
          description: Minimum value for the bound.
          allOf:
          - "$ref": "#/components/schemas/_types.aggregations.FieldDateMath"
    _types.aggregations.FieldDateMath:
      description: |-
        A date range limit, represented either as a DateMath expression or a number expressed
        according to the target field's precision.
      oneOf:
      - "$ref": "#/components/schemas/_types.DateMath"
      - type: number
    _types.aggregations.AggregateOrder:
      oneOf:
      - type: object
        additionalProperties:
          "$ref": "#/components/schemas/_types.SortOrder"
        minProperties: 1
        maxProperties: 1
      - type: array
        items:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/_types.SortOrder"
          minProperties: 1
          maxProperties: 1
    _types.aggregations.DateRangeAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.BucketAggregationBase"
      - type: object
        properties:
          field:
            description: The date field whose values are use to build ranges.
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          format:
            description: The date format used to format `from` and `to` in the response.
            type: string
          missing:
            description: |-
              The value to apply to documents that do not have a value.
              By default, documents without a value are ignored.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.Missing"
          ranges:
            description: Array of date ranges.
            type: array
            items:
              "$ref": "#/components/schemas/_types.aggregations.DateRangeExpression"
          time_zone:
            description: Time zone used to convert dates from another time zone to
              UTC.
            allOf:
            - "$ref": "#/components/schemas/_types.TimeZone"
          keyed:
            description: Set to `true` to associate a unique string key with each
              bucket and returns the ranges as a hash rather than an array.
            type: boolean
    _types.aggregations.DateRangeExpression:
      type: object
      properties:
        from:
          description: Start of the range (inclusive).
          allOf:
          - "$ref": "#/components/schemas/_types.aggregations.FieldDateMath"
        key:
          description: Custom key to return the range with.
          type: string
        to:
          description: End of the range (exclusive).
          allOf:
          - "$ref": "#/components/schemas/_types.aggregations.FieldDateMath"
    _types.aggregations.DerivativeAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.PipelineAggregationBase"
      - type: object
    _types.aggregations.DiversifiedSamplerAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.BucketAggregationBase"
      - type: object
        properties:
          execution_hint:
            description: |+
              The type of value used for de-duplication.

              Supported values include:
                - `map`: Hold field values directly.
                - `global_ordinals`: Hold ordinals of the field as determined by the Lucene index.
                - `bytes_hash`: Hold hashes of the field values - with potential for hash collisions.

            default: global_ordinals
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.SamplerAggregationExecutionHint"
          max_docs_per_value:
            description: Limits how many documents are permitted per choice of de-duplicating
              value.
            default: 1
            type: number
          script:
            allOf:
            - "$ref": "#/components/schemas/_types.Script"
          shard_size:
            description: Limits how many top-scoring documents are collected in the
              sample processed on each shard.
            default: 100
            type: number
          field:
            description: The field used to provide values used for de-duplication.
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
      x-model: true
    _types.aggregations.SamplerAggregationExecutionHint:
      type: string
      enum:
      - map
      - global_ordinals
      - bytes_hash
    _types.aggregations.ExtendedStatsAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.FormatMetricAggregationBase"
      - type: object
        properties:
          sigma:
            description: The number of standard deviations above/below the mean to
              display.
            type: number
    _types.aggregations.ExtendedStatsBucketAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.PipelineAggregationBase"
      - type: object
        properties:
          sigma:
            description: The number of standard deviations above/below the mean to
              display.
            type: number
    _types.aggregations.FrequentItemSetsAggregation:
      type: object
      properties:
        fields:
          description: Fields to analyze.
          type: array
          items:
            "$ref": "#/components/schemas/_types.aggregations.FrequentItemSetsField"
        minimum_set_size:
          description: The minimum size of one item set.
          default: 1
          type: number
        minimum_support:
          description: The minimum support of one item set.
          default: 0.1
          type: number
        size:
          description: The number of top item sets to return.
          default: 10
          type: number
        filter:
          description: Query that filters documents from analysis.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.QueryContainer"
      required:
      - fields
    _types.aggregations.FrequentItemSetsField:
      type: object
      properties:
        field:
          allOf:
          - "$ref": "#/components/schemas/_types.Field"
        exclude:
          description: |-
            Values to exclude.
            Can be regular expression strings or arrays of strings of exact terms.
          allOf:
          - "$ref": "#/components/schemas/_types.aggregations.TermsExclude"
        include:
          description: |-
            Values to include.
            Can be regular expression strings or arrays of strings of exact terms.
          allOf:
          - "$ref": "#/components/schemas/_types.aggregations.TermsInclude"
      required:
      - field
    _types.aggregations.TermsExclude:
      oneOf:
      - type: string
      - type: array
        items:
          type: string
    _types.aggregations.TermsInclude:
      oneOf:
      - type: string
      - type: array
        items:
          type: string
      - "$ref": "#/components/schemas/_types.aggregations.TermsPartition"
    _types.aggregations.TermsPartition:
      type: object
      properties:
        num_partitions:
          description: The number of partitions.
          type: number
        partition:
          description: The partition number for this request.
          type: number
      required:
      - num_partitions
      - partition
    _types.aggregations.FiltersAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.BucketAggregationBase"
      - type: object
        properties:
          filters:
            description: Collection of queries from which to build buckets.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.BucketsQueryContainer"
          other_bucket:
            description: Set to `true` to add a bucket to the response which will
              contain all documents that do not match any of the given filters.
            type: boolean
          other_bucket_key:
            description: The key with which the other bucket is returned.
            default: _other_
            type: string
          keyed:
            description: |-
              By default, the named filters aggregation returns the buckets as an object.
              Set to `false` to return the buckets as an array of objects.
            default: true
            type: boolean
    _types.aggregations.BucketsQueryContainer:
      description: |-
        Aggregation buckets. By default they are returned as an array, but if the aggregation has keys configured for
        the different buckets, the result is a dictionary.
      oneOf:
      - type: object
        additionalProperties:
          "$ref": "#/components/schemas/_types.query_dsl.QueryContainer"
      - type: array
        items:
          "$ref": "#/components/schemas/_types.query_dsl.QueryContainer"
    _types.aggregations.GeoBoundsAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.MetricAggregationBase"
      - type: object
        properties:
          wrap_longitude:
            description: Specifies whether the bounding box should be allowed to overlap
              the international date line.
            default: true
            type: boolean
    _types.aggregations.GeoCentroidAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.MetricAggregationBase"
      - type: object
        properties:
          count:
            type: number
          location:
            allOf:
            - "$ref": "#/components/schemas/_types.GeoLocation"
    _types.aggregations.GeoDistanceAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.BucketAggregationBase"
      - type: object
        properties:
          distance_type:
            description: |+
              The distance calculation type.

              Supported values include:
                - `arc`: The `arc` calculation is the most accurate.
                - `plane`: The `plane` calculation is faster but less accurate.

            default: arc
            allOf:
            - "$ref": "#/components/schemas/_types.GeoDistanceType"
          field:
            description: A field of type `geo_point` used to evaluate the distance.
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          origin:
            description: The origin  used to evaluate the distance.
            allOf:
            - "$ref": "#/components/schemas/_types.GeoLocation"
          ranges:
            description: An array of ranges used to bucket documents.
            type: array
            items:
              "$ref": "#/components/schemas/_types.aggregations.AggregationRange"
          unit:
            description: The distance unit.
            default: m
            allOf:
            - "$ref": "#/components/schemas/_types.DistanceUnit"
    _types.aggregations.AggregationRange:
      type: object
      properties:
        from:
          description: Start of the range (inclusive).
          oneOf:
          - type: number
          - nullable: true
            type: string
        key:
          description: Custom key to return the range with.
          type: string
        to:
          description: End of the range (exclusive).
          oneOf:
          - type: number
          - nullable: true
            type: string
    _types.aggregations.GeoHashGridAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.BucketAggregationBase"
      - type: object
        properties:
          bounds:
            description: The bounding box to filter the points in each bucket.
            allOf:
            - "$ref": "#/components/schemas/_types.GeoBounds"
          field:
            description: |-
              Field containing indexed `geo_point` or `geo_shape` values.
              If the field contains an array, `geohash_grid` aggregates all array values.
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          precision:
            description: The string length of the geohashes used to define cells/buckets
              in the results.
            default: '5'
            allOf:
            - "$ref": "#/components/schemas/_types.GeoHashPrecision"
          shard_size:
            description: |-
              Allows for more accurate counting of the top cells returned in the final result the aggregation.
              Defaults to returning `max(10,(size x number-of-shards))` buckets from each shard.
            type: number
          size:
            description: The maximum number of geohash buckets to return.
            default: 10000
            type: number
    _types.GeoHashPrecision:
      description: A precision that can be expressed as a geohash length between 1
        and 12, or a distance measure like "1km", "10m".
      oneOf:
      - type: number
      - type: string
    _types.aggregations.GeoLineAggregation:
      type: object
      properties:
        point:
          description: The name of the geo_point field.
          allOf:
          - "$ref": "#/components/schemas/_types.aggregations.GeoLinePoint"
        sort:
          description: |-
            The name of the numeric field to use as the sort key for ordering the points.
            When the `geo_line` aggregation is nested inside a `time_series` aggregation, this field defaults to `@timestamp`, and any other value will result in error.
          allOf:
          - "$ref": "#/components/schemas/_types.aggregations.GeoLineSort"
        include_sort:
          description: When `true`, returns an additional array of the sort values
            in the feature properties.
          type: boolean
        sort_order:
          description: |+
            The order in which the line is sorted (ascending or descending).

            Supported values include:
              - `asc`: Ascending (smallest to largest)
              - `desc`: Descending (largest to smallest)

          default: asc
          allOf:
          - "$ref": "#/components/schemas/_types.SortOrder"
        size:
          description: |-
            The maximum length of the line represented in the aggregation.
            Valid sizes are between 1 and 10000.
          default: 10000
          type: number
      required:
      - point
    _types.aggregations.GeoLinePoint:
      type: object
      properties:
        field:
          description: The name of the geo_point field.
          allOf:
          - "$ref": "#/components/schemas/_types.Field"
      required:
      - field
    _types.aggregations.GeoLineSort:
      type: object
      properties:
        field:
          description: The name of the numeric field to use as the sort key for ordering
            the points.
          allOf:
          - "$ref": "#/components/schemas/_types.Field"
      required:
      - field
    _types.aggregations.GeoTileGridAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.BucketAggregationBase"
      - type: object
        properties:
          field:
            description: |-
              Field containing indexed `geo_point` or `geo_shape` values.
              If the field contains an array, `geotile_grid` aggregates all array values.
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          precision:
            description: |-
              Integer zoom of the key used to define cells/buckets in the results.
              Values outside of the range [0,29] will be rejected.
            default: '7'
            allOf:
            - "$ref": "#/components/schemas/_types.GeoTilePrecision"
          shard_size:
            description: |-
              Allows for more accurate counting of the top cells returned in the final result the aggregation.
              Defaults to returning `max(10,(size x number-of-shards))` buckets from each shard.
            type: number
          size:
            description: The maximum number of buckets to return.
            default: 10000
            type: number
          bounds:
            description: A bounding box to filter the geo-points or geo-shapes in
              each bucket.
            allOf:
            - "$ref": "#/components/schemas/_types.GeoBounds"
    _types.GeoTilePrecision:
      type: number
    _types.aggregations.GeohexGridAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.BucketAggregationBase"
      - type: object
        properties:
          field:
            description: |-
              Field containing indexed `geo_point` or `geo_shape` values.
              If the field contains an array, `geohex_grid` aggregates all array values.
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          precision:
            description: |-
              Integer zoom of the key used to defined cells or buckets
              in the results. Value should be between 0-15.
            default: 6
            type: number
          bounds:
            description: Bounding box used to filter the geo-points in each bucket.
            allOf:
            - "$ref": "#/components/schemas/_types.GeoBounds"
          size:
            description: Maximum number of buckets to return.
            default: 10000
            type: number
          shard_size:
            description: Number of buckets returned from each shard.
            type: number
        required:
        - field
    _types.aggregations.GlobalAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.BucketAggregationBase"
      - type: object
    _types.aggregations.HistogramAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.BucketAggregationBase"
      - type: object
        properties:
          extended_bounds:
            description: Enables extending the bounds of the histogram beyond the
              data itself.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.ExtendedBoundsdouble"
          hard_bounds:
            description: |-
              Limits the range of buckets in the histogram.
              It is particularly useful in the case of open data ranges that can result in a very large number of buckets.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.ExtendedBoundsdouble"
          field:
            description: The name of the field to aggregate on.
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          interval:
            description: |-
              The interval for the buckets.
              Must be a positive decimal.
            type: number
          min_doc_count:
            description: |-
              Only returns buckets that have `min_doc_count` number of documents.
              By default, the response will fill gaps in the histogram with empty buckets.
            type: number
          missing:
            description: |-
              The value to apply to documents that do not have a value.
              By default, documents without a value are ignored.
            type: number
          offset:
            description: |-
              By default, the bucket keys start with 0 and then continue in even spaced steps of `interval`.
              The bucket boundaries can be shifted by using the `offset` option.
            type: number
          order:
            description: |-
              The sort order of the returned buckets.
              By default, the returned buckets are sorted by their key ascending.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.AggregateOrder"
          script:
            allOf:
            - "$ref": "#/components/schemas/_types.Script"
          format:
            type: string
          keyed:
            description: If `true`, returns buckets as a hash instead of an array,
              keyed by the bucket keys.
            default: false
            type: boolean
    _types.aggregations.ExtendedBoundsdouble:
      type: object
      properties:
        max:
          description: Maximum value for the bound.
          type: number
        min:
          description: Minimum value for the bound.
          type: number
    _types.aggregations.IpRangeAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.BucketAggregationBase"
      - type: object
        properties:
          field:
            description: The date field whose values are used to build ranges.
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          ranges:
            description: Array of IP ranges.
            type: array
            items:
              "$ref": "#/components/schemas/_types.aggregations.IpRangeAggregationRange"
    _types.aggregations.IpRangeAggregationRange:
      type: object
      properties:
        from:
          description: Start of the range.
          oneOf:
          - type: string
          - nullable: true
            type: string
        mask:
          description: IP range defined as a CIDR mask.
          type: string
        to:
          description: End of the range.
          oneOf:
          - type: string
          - nullable: true
            type: string
    _types.aggregations.IpPrefixAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.BucketAggregationBase"
      - type: object
        properties:
          field:
            description: The IP address field to aggregation on. The field mapping
              type must be `ip`.
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          prefix_length:
            description: |-
              Length of the network prefix. For IPv4 addresses the accepted range is [0, 32].
              For IPv6 addresses the accepted range is [0, 128].
            type: number
          is_ipv6:
            description: Defines whether the prefix applies to IPv6 addresses.
            default: false
            type: boolean
          append_prefix_length:
            description: Defines whether the prefix length is appended to IP address
              keys in the response.
            default: false
            type: boolean
          keyed:
            description: Defines whether buckets are returned as a hash rather than
              an array in the response.
            type: boolean
          min_doc_count:
            description: Minimum number of documents in a bucket for it to be included
              in the response.
            default: 1
            type: number
        required:
        - field
        - prefix_length
    _types.aggregations.InferenceAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.PipelineAggregationBase"
      - type: object
        properties:
          model_id:
            description: The ID or alias for the trained model.
            allOf:
            - "$ref": "#/components/schemas/_types.Name"
          inference_config:
            description: Contains the inference type and its options.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.InferenceConfigContainer"
        required:
        - model_id
    _types.aggregations.InferenceConfigContainer:
      type: object
      properties:
        regression:
          description: Regression configuration for inference.
          allOf:
          - "$ref": "#/components/schemas/ml._types.RegressionInferenceOptions"
        classification:
          description: Classification configuration for inference.
          allOf:
          - "$ref": "#/components/schemas/ml._types.ClassificationInferenceOptions"
      minProperties: 1
      maxProperties: 1
    ml._types.RegressionInferenceOptions:
      type: object
      properties:
        results_field:
          description: The field that is added to incoming documents to contain the
            inference prediction. Defaults to predicted_value.
          allOf:
          - "$ref": "#/components/schemas/_types.Field"
        num_top_feature_importance_values:
          description: Specifies the maximum number of feature importance values per
            document.
          default: 0
          type: number
    ml._types.ClassificationInferenceOptions:
      type: object
      properties:
        num_top_classes:
          description: Specifies the number of top class predictions to return. Defaults
            to 0.
          type: number
        num_top_feature_importance_values:
          description: Specifies the maximum number of feature importance values per
            document.
          default: 0
          type: number
        prediction_field_type:
          description: 'Specifies the type of the predicted field to write. Acceptable
            values are: string, number, boolean. When boolean is provided 1.0 is transformed
            to true and 0.0 to false.'
          type: string
        results_field:
          description: The field that is added to incoming documents to contain the
            inference prediction. Defaults to predicted_value.
          type: string
        top_classes_results_field:
          description: Specifies the field to which the top classes are written. Defaults
            to top_classes.
          type: string
    _types.aggregations.MatrixStatsAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.MatrixAggregation"
      - type: object
        properties:
          mode:
            description: Array value the aggregation will use for array or multi-valued
              fields.
            default: avg
            allOf:
            - "$ref": "#/components/schemas/_types.SortMode"
    _types.aggregations.MatrixAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.Aggregation"
      - type: object
        properties:
          fields:
            description: An array of fields for computing the statistics.
            allOf:
            - "$ref": "#/components/schemas/_types.Fields"
          missing:
            description: |-
              The value to apply to documents that do not have a value.
              By default, documents without a value are ignored.
            type: object
            additionalProperties:
              type: number
    _types.aggregations.MaxAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.FormatMetricAggregationBase"
      - type: object
    _types.aggregations.MaxBucketAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.PipelineAggregationBase"
      - type: object
      x-model: true
    _types.aggregations.MedianAbsoluteDeviationAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.FormatMetricAggregationBase"
      - type: object
        properties:
          compression:
            description: Limits the maximum number of nodes used by the underlying
              TDigest algorithm to `20 * compression`, enabling control of memory
              usage and approximation error.
            default: 1000
            type: number
          execution_hint:
            description: |-
              The default implementation of TDigest is optimized for performance, scaling to millions or even billions of sample values while maintaining acceptable accuracy levels (close to 1% relative error for millions of samples in some cases).
              To use an implementation optimized for accuracy, set this parameter to high_accuracy instead.
            default: default
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.TDigestExecutionHint"
    _types.aggregations.MinAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.FormatMetricAggregationBase"
      - type: object
    _types.aggregations.MinBucketAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.PipelineAggregationBase"
      - type: object
      x-model: true
    _types.aggregations.MissingAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.BucketAggregationBase"
      - type: object
        properties:
          field:
            description: The name of the field.
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          missing:
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.Missing"
    _types.aggregations.MovingAverageAggregation:
      discriminator:
        propertyName: model
        mapping:
          ewma: "#/components/schemas/_types.aggregations.EwmaMovingAverageAggregation"
          holt: "#/components/schemas/_types.aggregations.HoltMovingAverageAggregation"
          holt_winters: "#/components/schemas/_types.aggregations.HoltWintersMovingAverageAggregation"
          linear: "#/components/schemas/_types.aggregations.LinearMovingAverageAggregation"
          simple: "#/components/schemas/_types.aggregations.SimpleMovingAverageAggregation"
      oneOf:
      - "$ref": "#/components/schemas/_types.aggregations.LinearMovingAverageAggregation"
      - "$ref": "#/components/schemas/_types.aggregations.SimpleMovingAverageAggregation"
      - "$ref": "#/components/schemas/_types.aggregations.EwmaMovingAverageAggregation"
      - "$ref": "#/components/schemas/_types.aggregations.HoltMovingAverageAggregation"
      - "$ref": "#/components/schemas/_types.aggregations.HoltWintersMovingAverageAggregation"
    _types.aggregations.LinearMovingAverageAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.MovingAverageAggregationBase"
      - type: object
        properties:
          model:
            type: string
            enum:
            - linear
          settings:
            allOf:
            - "$ref": "#/components/schemas/_types.EmptyObject"
        required:
        - model
        - settings
    _types.EmptyObject:
      description: For empty Class assignments
      type: object
    _types.aggregations.MovingAverageAggregationBase:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.PipelineAggregationBase"
      - type: object
        properties:
          minimize:
            type: boolean
          predict:
            type: number
          window:
            type: number
    _types.aggregations.SimpleMovingAverageAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.MovingAverageAggregationBase"
      - type: object
        properties:
          model:
            type: string
            enum:
            - simple
          settings:
            allOf:
            - "$ref": "#/components/schemas/_types.EmptyObject"
        required:
        - model
        - settings
    _types.aggregations.EwmaMovingAverageAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.MovingAverageAggregationBase"
      - type: object
        properties:
          model:
            type: string
            enum:
            - ewma
          settings:
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.EwmaModelSettings"
        required:
        - model
        - settings
    _types.aggregations.EwmaModelSettings:
      type: object
      properties:
        alpha:
          type: number
    _types.aggregations.HoltMovingAverageAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.MovingAverageAggregationBase"
      - type: object
        properties:
          model:
            type: string
            enum:
            - holt
          settings:
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.HoltLinearModelSettings"
        required:
        - model
        - settings
    _types.aggregations.HoltLinearModelSettings:
      type: object
      properties:
        alpha:
          type: number
        beta:
          type: number
    _types.aggregations.HoltWintersMovingAverageAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.MovingAverageAggregationBase"
      - type: object
        properties:
          model:
            type: string
            enum:
            - holt_winters
          settings:
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.HoltWintersModelSettings"
        required:
        - model
        - settings
    _types.aggregations.HoltWintersModelSettings:
      type: object
      properties:
        alpha:
          type: number
        beta:
          type: number
        gamma:
          type: number
        pad:
          type: boolean
        period:
          type: number
        type:
          allOf:
          - "$ref": "#/components/schemas/_types.aggregations.HoltWintersType"
    _types.aggregations.HoltWintersType:
      type: string
      enum:
      - add
      - mult
    _types.aggregations.MovingPercentilesAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.PipelineAggregationBase"
      - type: object
        properties:
          window:
            description: The size of window to "slide" across the histogram.
            type: number
          shift:
            description: |-
              By default, the window consists of the last n values excluding the current bucket.
              Increasing `shift` by 1, moves the starting window position by 1 to the right.
            default: 0
            type: number
          keyed:
            type: boolean
      x-model: true
    _types.aggregations.MovingFunctionAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.PipelineAggregationBase"
      - type: object
        properties:
          script:
            description: The script that should be executed on each window of data.
            type: string
          shift:
            description: |-
              By default, the window consists of the last n values excluding the current bucket.
              Increasing `shift` by 1, moves the starting window position by 1 to the right.
            default: 0
            type: number
          window:
            description: The size of window to "slide" across the histogram.
            type: number
      x-model: true
    _types.aggregations.MultiTermsAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.BucketAggregationBase"
      - type: object
        properties:
          collect_mode:
            description: |+
              Specifies the strategy for data collection.

              Supported values include:
                - `depth_first`: Expands all branches of the aggregation tree in one depth-first pass, before any pruning occurs.
                - `breadth_first`: Caches the set of documents that fall into the uppermost buckets for subsequent replay.

            default: breadth_first
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.TermsAggregationCollectMode"
          order:
            description: |-
              Specifies the sort order of the buckets.
              Defaults to sorting by descending document count.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.AggregateOrder"
          min_doc_count:
            description: The minimum number of documents in a bucket for it to be
              returned.
            default: 1
            type: number
          shard_min_doc_count:
            description: The minimum number of documents in a bucket on each shard
              for it to be returned.
            default: 1
            type: number
          shard_size:
            description: |-
              The number of candidate terms produced by each shard.
              By default, `shard_size` will be automatically estimated based on the number of shards and the `size` parameter.
            type: number
          show_term_doc_count_error:
            description: Calculates the doc count error on per term basis.
            default: false
            type: boolean
          size:
            description: The number of term buckets should be returned out of the
              overall terms list.
            default: 10
            type: number
          terms:
            description: The field from which to generate sets of terms.
            type: array
            items:
              "$ref": "#/components/schemas/_types.aggregations.MultiTermLookup"
        required:
        - terms
    _types.aggregations.TermsAggregationCollectMode:
      type: string
      enum:
      - depth_first
      - breadth_first
    _types.aggregations.MultiTermLookup:
      allOf:
      - type: object
        properties:
          missing:
            description: |-
              The value to apply to documents that do not have a value.
              By default, documents without a value are ignored.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.Missing"
      - type: object
        properties:
          field:
            description: |-
              A field from which to retrieve terms.
              It is required if `script` is not provided.
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          script:
            description: |-
              A script to calculate terms to aggregate on.
              It is required if `field` is not provided.
            allOf:
            - "$ref": "#/components/schemas/_types.Script"
        minProperties: 1
        maxProperties: 1
    _types.aggregations.NestedAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.BucketAggregationBase"
      - type: object
        properties:
          path:
            description: The path to the field of type `nested`.
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
    _types.aggregations.NormalizeAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.PipelineAggregationBase"
      - type: object
        properties:
          method:
            description: |+
              The specific method to apply.

              Supported values include:
                - `rescale_0_1`: This method rescales the data such that the minimum number is 0, and the maximum number is 1, with the rest normalized linearly in-between.
                - `rescale_0_100`: This method rescales the data such that the minimum number is 0, and the maximum number is 100, with the rest normalized linearly in-between.
                - `percent_of_sum`: This method normalizes each value so that it represents a percentage of the total sum it attributes to.
                - `mean`: This method normalizes such that each value is normalized by how much it differs from the average.
                - `z-score`: This method normalizes such that each value represents how far it is from the mean relative to the standard deviation.
                - `softmax`: This method normalizes such that each value is exponentiated and relative to the sum of the exponents of the original values.

            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.NormalizeMethod"
      x-model: true
    _types.aggregations.NormalizeMethod:
      type: string
      enum:
      - rescale_0_1
      - rescale_0_100
      - percent_of_sum
      - mean
      - z-score
      - softmax
    _types.aggregations.ParentAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.BucketAggregationBase"
      - type: object
        properties:
          type:
            description: The child type that should be selected.
            allOf:
            - "$ref": "#/components/schemas/_types.RelationName"
    _types.aggregations.PercentileRanksAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.FormatMetricAggregationBase"
      - type: object
        properties:
          keyed:
            description: |-
              By default, the aggregation associates a unique string key with each bucket and returns the ranges as a hash rather than an array.
              Set to `false` to disable this behavior.
            default: true
            type: boolean
          values:
            description: An array of values for which to calculate the percentile
              ranks.
            oneOf:
            - type: array
              items:
                type: number
            - nullable: true
              type: string
          hdr:
            description: Uses the alternative High Dynamic Range Histogram algorithm
              to calculate percentile ranks.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.HdrMethod"
          tdigest:
            description: Sets parameters for the default TDigest algorithm used to
              calculate percentile ranks.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.TDigest"
      x-model: true
    _types.aggregations.HdrMethod:
      type: object
      properties:
        number_of_significant_value_digits:
          description: Specifies the resolution of values for the histogram in number
            of significant digits.
          type: number
    _types.aggregations.TDigest:
      type: object
      properties:
        compression:
          description: Limits the maximum number of nodes used by the underlying TDigest
            algorithm to `20 * compression`, enabling control of memory usage and
            approximation error.
          type: number
        execution_hint:
          description: |-
            The default implementation of TDigest is optimized for performance, scaling to millions or even billions of sample values while maintaining acceptable accuracy levels (close to 1% relative error for millions of samples in some cases).
            To use an implementation optimized for accuracy, set this parameter to high_accuracy instead.
          default: default
          allOf:
          - "$ref": "#/components/schemas/_types.aggregations.TDigestExecutionHint"
    _types.aggregations.PercentilesAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.FormatMetricAggregationBase"
      - type: object
        properties:
          keyed:
            description: |-
              By default, the aggregation associates a unique string key with each bucket and returns the ranges as a hash rather than an array.
              Set to `false` to disable this behavior.
            default: true
            type: boolean
          percents:
            description: The percentiles to calculate.
            oneOf:
            - type: number
            - type: array
              items:
                type: number
          hdr:
            description: Uses the alternative High Dynamic Range Histogram algorithm
              to calculate percentiles.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.HdrMethod"
          tdigest:
            description: Sets parameters for the default TDigest algorithm used to
              calculate percentiles.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.TDigest"
    _types.aggregations.PercentilesBucketAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.PipelineAggregationBase"
      - type: object
        properties:
          percents:
            description: The list of percentiles to calculate.
            type: array
            items:
              type: number
    _types.aggregations.RangeAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.BucketAggregationBase"
      - type: object
        properties:
          field:
            description: The date field whose values are use to build ranges.
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          missing:
            description: |-
              The value to apply to documents that do not have a value.
              By default, documents without a value are ignored.
            type: number
          ranges:
            description: An array of ranges used to bucket documents.
            type: array
            items:
              "$ref": "#/components/schemas/_types.aggregations.AggregationRange"
          script:
            allOf:
            - "$ref": "#/components/schemas/_types.Script"
          keyed:
            description: Set to `true` to associate a unique string key with each
              bucket and return the ranges as a hash rather than an array.
            type: boolean
          format:
            type: string
    _types.aggregations.RareTermsAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.BucketAggregationBase"
      - type: object
        properties:
          exclude:
            description: Terms that should be excluded from the aggregation.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.TermsExclude"
          field:
            description: The field from which to return rare terms.
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          include:
            description: Terms that should be included in the aggregation.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.TermsInclude"
          max_doc_count:
            description: The maximum number of documents a term should appear in.
            default: 1
            type: number
          missing:
            description: |-
              The value to apply to documents that do not have a value.
              By default, documents without a value are ignored.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.Missing"
          precision:
            description: |-
              The precision of the internal CuckooFilters.
              Smaller precision leads to better approximation, but higher memory usage.
            default: 0.001
            type: number
          value_type:
            type: string
      x-model: true
    _types.aggregations.RateAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.FormatMetricAggregationBase"
      - type: object
        properties:
          unit:
            description: |-
              The interval used to calculate the rate.
              By default, the interval of the `date_histogram` is used.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.CalendarInterval"
          mode:
            description: |+
              How the rate is calculated.

              Supported values include:
                - `sum`: Calculates the sum of all values of the field.
                - `value_count`: Uses the number of values of the field.

            default: sum
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.RateMode"
    _types.aggregations.RateMode:
      type: string
      enum:
      - sum
      - value_count
    _types.aggregations.ReverseNestedAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.BucketAggregationBase"
      - type: object
        properties:
          path:
            description: |-
              Defines the nested object field that should be joined back to.
              The default is empty, which means that it joins back to the root/main document level.
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
    _types.aggregations.RandomSamplerAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.BucketAggregationBase"
      - type: object
        properties:
          probability:
            description: |-
              The probability that a document will be included in the aggregated data.
              Must be greater than 0, less than 0.5, or exactly 1.
              The lower the probability, the fewer documents are matched.
            type: number
          seed:
            description: |-
              The seed to generate the random sampling of documents.
              When a seed is provided, the random subset of documents is the same between calls.
            type: number
          shard_seed:
            description: When combined with seed, setting shard_seed ensures 100%
              consistent sampling over shards where data is exactly the same.
            x-state: Generally available; Added in 8.14.0
            type: number
        required:
        - probability
      x-model: true
    _types.aggregations.SamplerAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.BucketAggregationBase"
      - type: object
        properties:
          shard_size:
            description: Limits how many top-scoring documents are collected in the
              sample processed on each shard.
            default: 100
            type: number
    _types.aggregations.ScriptedMetricAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.MetricAggregationBase"
      - type: object
        properties:
          combine_script:
            description: |-
              Runs once on each shard after document collection is complete.
              Allows the aggregation to consolidate the state returned from each shard.
            allOf:
            - "$ref": "#/components/schemas/_types.Script"
          init_script:
            description: |-
              Runs prior to any collection of documents.
              Allows the aggregation to set up any initial state.
            allOf:
            - "$ref": "#/components/schemas/_types.Script"
          map_script:
            description: |-
              Run once per document collected.
              If no `combine_script` is specified, the resulting state needs to be stored in the `state` object.
            allOf:
            - "$ref": "#/components/schemas/_types.Script"
          params:
            description: |-
              A global object with script parameters for `init`, `map` and `combine` scripts.
              It is shared between the scripts.
            type: object
            additionalProperties:
              type: object
          reduce_script:
            description: |-
              Runs once on the coordinating node after all shards have returned their results.
              The script is provided with access to a variable `states`, which is an array of the result of the `combine_script` on each shard.
            allOf:
            - "$ref": "#/components/schemas/_types.Script"
    _types.aggregations.SerialDifferencingAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.PipelineAggregationBase"
      - type: object
        properties:
          lag:
            description: |-
              The historical bucket to subtract from the current value.
              Must be a positive, non-zero integer.
            type: number
      x-model: true
    _types.aggregations.SignificantTermsAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.BucketAggregationBase"
      - type: object
        properties:
          background_filter:
            description: A background filter that can be used to focus in on significant
              terms within a narrower context, instead of the entire index.
            allOf:
            - "$ref": "#/components/schemas/_types.query_dsl.QueryContainer"
          chi_square:
            description: Use Chi square, as described in "Information Retrieval",
              Manning et al., Chapter 13.5.2, as the significance score.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.ChiSquareHeuristic"
          exclude:
            description: Terms to exclude.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.TermsExclude"
          execution_hint:
            description: 'Mechanism by which the aggregation should be executed: using
              field values directly or using global ordinals.'
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.TermsAggregationExecutionHint"
          field:
            description: The field from which to return significant terms.
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          gnd:
            description: Use Google normalized distance as described in "The Google
              Similarity Distance", Cilibrasi and Vitanyi, 2007, as the significance
              score.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.GoogleNormalizedDistanceHeuristic"
          include:
            description: Terms to include.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.TermsInclude"
          jlh:
            description: Use JLH score as the significance score.
            allOf:
            - "$ref": "#/components/schemas/_types.EmptyObject"
          min_doc_count:
            description: Only return terms that are found in more than `min_doc_count`
              hits.
            default: 3
            type: number
          mutual_information:
            description: Use mutual information as described in "Information Retrieval",
              Manning et al., Chapter 13.5.1, as the significance score.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.MutualInformationHeuristic"
          percentage:
            description: A simple calculation of the number of documents in the foreground
              sample with a term divided by the number of documents in the background
              with the term.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.PercentageScoreHeuristic"
          script_heuristic:
            description: Customized score, implemented via a script.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.ScriptedHeuristic"
          p_value:
            description: |-
              Significant terms heuristic that calculates the p-value between the term existing in foreground and background sets.

              The p-value is the probability of obtaining test results at least as extreme as
              the results actually observed, under the assumption that the null hypothesis is
              correct. The p-value is calculated assuming that the foreground set and the
              background set are independent https://en.wikipedia.org/wiki/Bernoulli_trial, with the null
              hypothesis that the probabilities are the same.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.PValueHeuristic"
          shard_min_doc_count:
            description: |-
              Regulates the certainty a shard has if the term should actually be added to the candidate list or not with respect to the `min_doc_count`.
              Terms will only be considered if their local shard frequency within the set is higher than the `shard_min_doc_count`.
            type: number
          shard_size:
            description: |-
              Can be used to control the volumes of candidate terms produced by each shard.
              By default, `shard_size` will be automatically estimated based on the number of shards and the `size` parameter.
            type: number
          size:
            description: The number of buckets returned out of the overall terms list.
            type: number
      x-model: true
    _types.aggregations.ChiSquareHeuristic:
      type: object
      properties:
        background_is_superset:
          description: Set to `false` if you defined a custom background filter that
            represents a different set of documents that you want to compare to.
          type: boolean
        include_negatives:
          description: Set to `false` to filter out the terms that appear less often
            in the subset than in documents outside the subset.
          type: boolean
      required:
      - background_is_superset
      - include_negatives
    _types.aggregations.TermsAggregationExecutionHint:
      type: string
      enum:
      - map
      - global_ordinals
      - global_ordinals_hash
      - global_ordinals_low_cardinality
    _types.aggregations.GoogleNormalizedDistanceHeuristic:
      type: object
      properties:
        background_is_superset:
          description: Set to `false` if you defined a custom background filter that
            represents a different set of documents that you want to compare to.
          type: boolean
    _types.aggregations.MutualInformationHeuristic:
      type: object
      properties:
        background_is_superset:
          description: Set to `false` if you defined a custom background filter that
            represents a different set of documents that you want to compare to.
          type: boolean
        include_negatives:
          description: Set to `false` to filter out the terms that appear less often
            in the subset than in documents outside the subset.
          type: boolean
    _types.aggregations.PercentageScoreHeuristic:
      type: object
    _types.aggregations.ScriptedHeuristic:
      type: object
      properties:
        script:
          allOf:
          - "$ref": "#/components/schemas/_types.Script"
      required:
      - script
    _types.aggregations.PValueHeuristic:
      type: object
      properties:
        background_is_superset:
          type: boolean
        normalize_above:
          description: |-
            Should the results be normalized when above the given value.
            Allows for consistent significance results at various scales.
            Note: `0` is a special value which means no normalization
          default: 0
          type: number
    _types.aggregations.SignificantTextAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.BucketAggregationBase"
      - type: object
        properties:
          background_filter:
            description: A background filter that can be used to focus in on significant
              terms within a narrower context, instead of the entire index.
            allOf:
            - "$ref": "#/components/schemas/_types.query_dsl.QueryContainer"
          chi_square:
            description: Use Chi square, as described in "Information Retrieval",
              Manning et al., Chapter 13.5.2, as the significance score.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.ChiSquareHeuristic"
          exclude:
            description: Values to exclude.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.TermsExclude"
          execution_hint:
            description: Determines whether the aggregation will use field values
              directly or global ordinals.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.TermsAggregationExecutionHint"
          field:
            description: The field from which to return significant text.
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          filter_duplicate_text:
            description: Whether to out duplicate text to deal with noisy data.
            type: boolean
          gnd:
            description: Use Google normalized distance as described in "The Google
              Similarity Distance", Cilibrasi and Vitanyi, 2007, as the significance
              score.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.GoogleNormalizedDistanceHeuristic"
          include:
            description: Values to include.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.TermsInclude"
          jlh:
            description: Use JLH score as the significance score.
            allOf:
            - "$ref": "#/components/schemas/_types.EmptyObject"
          min_doc_count:
            description: Only return values that are found in more than `min_doc_count`
              hits.
            default: 3
            type: number
          mutual_information:
            description: Use mutual information as described in "Information Retrieval",
              Manning et al., Chapter 13.5.1, as the significance score.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.MutualInformationHeuristic"
          percentage:
            description: A simple calculation of the number of documents in the foreground
              sample with a term divided by the number of documents in the background
              with the term.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.PercentageScoreHeuristic"
          script_heuristic:
            description: Customized score, implemented via a script.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.ScriptedHeuristic"
          shard_min_doc_count:
            description: |-
              Regulates the certainty a shard has if the values should actually be added to the candidate list or not with respect to the min_doc_count.
              Values will only be considered if their local shard frequency within the set is higher than the `shard_min_doc_count`.
            type: number
          shard_size:
            description: |-
              The number of candidate terms produced by each shard.
              By default, `shard_size` will be automatically estimated based on the number of shards and the `size` parameter.
            type: number
          size:
            description: The number of buckets returned out of the overall terms list.
            type: number
          source_fields:
            description: Overrides the JSON `_source` fields from which text will
              be analyzed.
            allOf:
            - "$ref": "#/components/schemas/_types.Fields"
      x-model: true
    _types.aggregations.StatsAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.FormatMetricAggregationBase"
      - type: object
    _types.aggregations.StatsBucketAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.PipelineAggregationBase"
      - type: object
    _types.aggregations.StringStatsAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.MetricAggregationBase"
      - type: object
        properties:
          show_distribution:
            description: Shows the probability distribution for all characters.
            default: false
            type: boolean
    _types.aggregations.SumAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.FormatMetricAggregationBase"
      - type: object
    _types.aggregations.SumBucketAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.PipelineAggregationBase"
      - type: object
      x-model: true
    _types.aggregations.TermsAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.BucketAggregationBase"
      - type: object
        properties:
          collect_mode:
            description: |+
              Determines how child aggregations should be calculated: breadth-first or depth-first.

              Supported values include:
                - `depth_first`: Expands all branches of the aggregation tree in one depth-first pass, before any pruning occurs.
                - `breadth_first`: Caches the set of documents that fall into the uppermost buckets for subsequent replay.

            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.TermsAggregationCollectMode"
          exclude:
            description: |-
              Values to exclude.
              Accepts regular expressions and partitions.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.TermsExclude"
          execution_hint:
            description: Determines whether the aggregation will use field values
              directly or global ordinals.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.TermsAggregationExecutionHint"
          field:
            description: The field from which to return terms.
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          include:
            description: |-
              Values to include.
              Accepts regular expressions and partitions.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.TermsInclude"
          min_doc_count:
            description: Only return values that are found in more than `min_doc_count`
              hits.
            default: 1
            type: number
          missing:
            description: |-
              The value to apply to documents that do not have a value.
              By default, documents without a value are ignored.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.Missing"
          missing_order:
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.MissingOrder"
          missing_bucket:
            type: boolean
          value_type:
            description: Coerced unmapped fields into the specified type.
            type: string
          order:
            description: |-
              Specifies the sort order of the buckets.
              Defaults to sorting by descending document count.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.AggregateOrder"
          script:
            allOf:
            - "$ref": "#/components/schemas/_types.Script"
          shard_min_doc_count:
            description: |-
              Regulates the certainty a shard has if the term should actually be added to the candidate list or not with respect to the `min_doc_count`.
              Terms will only be considered if their local shard frequency within the set is higher than the `shard_min_doc_count`.
            type: number
          shard_size:
            description: |-
              The number of candidate terms produced by each shard.
              By default, `shard_size` will be automatically estimated based on the number of shards and the `size` parameter.
            type: number
          show_term_doc_count_error:
            description: Set to `true` to return the `doc_count_error_upper_bound`,
              which is an upper bound to the error on the `doc_count` returned by
              each shard.
            type: boolean
          size:
            description: The number of buckets returned out of the overall terms list.
            default: 10
            type: number
          format:
            type: string
      x-model: true
    _types.aggregations.TimeSeriesAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.BucketAggregationBase"
      - type: object
        properties:
          size:
            description: The maximum number of results to return.
            default: 10000
            type: number
          keyed:
            description: Set to `true` to associate a unique string key with each
              bucket and returns the ranges as a hash rather than an array.
            type: boolean
    _types.aggregations.TopHitsAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.MetricAggregationBase"
      - type: object
        properties:
          docvalue_fields:
            description: Fields for which to return doc values.
            type: array
            items:
              "$ref": "#/components/schemas/_types.query_dsl.FieldAndFormat"
          explain:
            description: If `true`, returns detailed information about score computation
              as part of a hit.
            default: false
            type: boolean
          fields:
            description: |-
              Array of wildcard (*) patterns. The request returns values for field names
              matching these patterns in the hits.fields property of the response.
            type: array
            items:
              "$ref": "#/components/schemas/_types.query_dsl.FieldAndFormat"
          from:
            description: Starting document offset.
            default: 0
            type: number
          highlight:
            description: Specifies the highlighter to use for retrieving highlighted
              snippets from one or more fields in the search results.
            allOf:
            - "$ref": "#/components/schemas/_global.search._types.Highlight"
          script_fields:
            description: Returns the result of one or more script evaluations for
              each hit.
            type: object
            additionalProperties:
              "$ref": "#/components/schemas/_types.ScriptField"
          size:
            description: The maximum number of top matching hits to return per bucket.
            default: 3
            type: number
          sort:
            description: |-
              Sort order of the top matching hits.
              By default, the hits are sorted by the score of the main query.
            allOf:
            - "$ref": "#/components/schemas/_types.Sort"
          _source:
            description: Selects the fields of the source that are returned.
            allOf:
            - "$ref": "#/components/schemas/_global.search._types.SourceConfig"
          stored_fields:
            description: Returns values for the specified stored fields (fields that
              use the `store` mapping option).
            allOf:
            - "$ref": "#/components/schemas/_types.Fields"
          track_scores:
            description: If `true`, calculates and returns document scores, even if
              the scores are not used for sorting.
            default: false
            type: boolean
          version:
            description: If `true`, returns document version as part of a hit.
            default: false
            type: boolean
          seq_no_primary_term:
            description: If `true`, returns sequence number and primary term of the
              last modification of each hit.
            type: boolean
    _types.aggregations.TTestAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.Aggregation"
      - type: object
        properties:
          a:
            description: Test population A.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.TestPopulation"
          b:
            description: Test population B.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.TestPopulation"
          type:
            description: |+
              The type of test.

              Supported values include:
                - `paired`: Performs paired t-test.
                - `homoscedastic`: Performs two-sample equal variance test.
                - `heteroscedastic`: Performs two-sample unequal variance test.

            default: heteroscedastic
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.TTestType"
    _types.aggregations.TestPopulation:
      type: object
      properties:
        field:
          description: The field to aggregate.
          allOf:
          - "$ref": "#/components/schemas/_types.Field"
        script:
          allOf:
          - "$ref": "#/components/schemas/_types.Script"
        filter:
          description: A filter used to define a set of records to run unpaired t-test
            on.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.QueryContainer"
      required:
      - field
    _types.aggregations.TTestType:
      type: string
      enum:
      - paired
      - homoscedastic
      - heteroscedastic
    _types.aggregations.TopMetricsAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.MetricAggregationBase"
      - type: object
        properties:
          metrics:
            description: The fields of the top document to return.
            oneOf:
            - "$ref": "#/components/schemas/_types.aggregations.TopMetricsValue"
            - type: array
              items:
                "$ref": "#/components/schemas/_types.aggregations.TopMetricsValue"
          size:
            description: The number of top documents from which to return metrics.
            default: 1
            type: number
          sort:
            description: The sort order of the documents.
            allOf:
            - "$ref": "#/components/schemas/_types.Sort"
    _types.aggregations.TopMetricsValue:
      type: object
      properties:
        field:
          description: A field to return as a metric.
          allOf:
          - "$ref": "#/components/schemas/_types.Field"
      required:
      - field
    _types.aggregations.ValueCountAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.FormattableMetricAggregation"
      - type: object
    _types.aggregations.FormattableMetricAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.MetricAggregationBase"
      - type: object
        properties:
          format:
            type: string
    _types.aggregations.WeightedAverageAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.Aggregation"
      - type: object
        properties:
          format:
            description: A numeric response formatter.
            type: string
          value:
            description: Configuration for the field that provides the values.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.WeightedAverageValue"
          value_type:
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.ValueType"
          weight:
            description: Configuration for the field or script that provides the weights.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.WeightedAverageValue"
    _types.aggregations.WeightedAverageValue:
      type: object
      properties:
        field:
          description: The field from which to extract the values or weights.
          allOf:
          - "$ref": "#/components/schemas/_types.Field"
        missing:
          description: A value or weight to use if the field is missing.
          type: number
        script:
          allOf:
          - "$ref": "#/components/schemas/_types.Script"
    _types.aggregations.VariableWidthHistogramAggregation:
      type: object
      properties:
        field:
          description: The name of the field.
          allOf:
          - "$ref": "#/components/schemas/_types.Field"
        buckets:
          description: The target number of buckets.
          default: 10
          type: number
        shard_size:
          description: |-
            The number of buckets that the coordinating node will request from each shard.
            Defaults to `buckets * 50`.
          type: number
        initial_buffer:
          description: |-
            Specifies the number of individual documents that will be stored in memory on a shard before the initial bucketing algorithm is run.
            Defaults to `min(10 * shard_size, 50000)`.
          type: number
        script:
          allOf:
          - "$ref": "#/components/schemas/_types.Script"
    _types.Refresh:
      type: string
      enum:
      - 'true'
      - 'false'
      - wait_for
    _types.WaitForActiveShards:
      oneOf:
      - type: number
      - "$ref": "#/components/schemas/_types.WaitForActiveShardOptions"
    _types.WaitForActiveShardOptions:
      type: string
      enum:
      - all
      - index-setting
    _global.bulk.OperationContainer:
      type: object
      properties:
        index:
          description: |-
            Index the specified document.
            If the document exists, it replaces the document and increments the version.
            The following line must contain the source data to be indexed.
          allOf:
          - "$ref": "#/components/schemas/_global.bulk.IndexOperation"
        create:
          description: |-
            Index the specified document if it does not already exist.
            The following line must contain the source data to be indexed.
          allOf:
          - "$ref": "#/components/schemas/_global.bulk.CreateOperation"
        update:
          description: |-
            Perform a partial document update.
            The following line must contain the partial document and update options.
          allOf:
          - "$ref": "#/components/schemas/_global.bulk.UpdateOperation"
        delete:
          description: Remove the specified document from the index.
          allOf:
          - "$ref": "#/components/schemas/_global.bulk.DeleteOperation"
      minProperties: 1
      maxProperties: 1
    _global.bulk.IndexOperation:
      allOf:
      - "$ref": "#/components/schemas/_global.bulk.WriteOperation"
      - type: object
    _global.bulk.WriteOperation:
      allOf:
      - "$ref": "#/components/schemas/_global.bulk.OperationBase"
      - type: object
        properties:
          dynamic_templates:
            description: |-
              A map from the full name of fields to the name of dynamic templates.
              It defaults to an empty map.
              If a name matches a dynamic template, that template will be applied regardless of other match predicates defined in the template.
              If a field is already defined in the mapping, then this parameter won't be used.
            type: object
            additionalProperties:
              type: string
          pipeline:
            description: |-
              The ID of the pipeline to use to preprocess incoming documents.
              If the index has a default ingest pipeline specified, setting the value to `_none` turns off the default ingest pipeline for this request.
              If a final pipeline is configured, it will always run regardless of the value of this parameter.
            type: string
          require_alias:
            description: If `true`, the request's actions must target an index alias.
            default: false
            type: boolean
    _global.bulk.OperationBase:
      type: object
      properties:
        _id:
          description: The document ID.
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        _index:
          description: The name of the index or index alias to perform the action
            on.
          allOf:
          - "$ref": "#/components/schemas/_types.IndexName"
        routing:
          description: A custom value used to route operations to a specific shard,
            or multiple comma separated values.
          type: string
        if_primary_term:
          type: number
        if_seq_no:
          allOf:
          - "$ref": "#/components/schemas/_types.SequenceNumber"
        version:
          allOf:
          - "$ref": "#/components/schemas/_types.VersionNumber"
        version_type:
          description: |2+


            Supported values include:
              - `internal`: Use internal versioning that starts at 1 and increments with each update or delete.
              - `external`: Only index the document if the specified version is strictly higher than the version of the stored document or if there is no existing document.
              - `external_gte`: Only index the document if the specified version is equal or higher than the version of the stored document or if there is no existing document.
            NOTE: The `external_gte` version type is meant for special use cases and should be used with care.
            If used incorrectly, it can result in loss of data.

          allOf:
          - "$ref": "#/components/schemas/_types.VersionType"
    _global.bulk.CreateOperation:
      allOf:
      - "$ref": "#/components/schemas/_global.bulk.WriteOperation"
      - type: object
    _global.bulk.UpdateOperation:
      allOf:
      - "$ref": "#/components/schemas/_global.bulk.OperationBase"
      - type: object
        properties:
          require_alias:
            description: If `true`, the request's actions must target an index alias.
            default: false
            type: boolean
          retry_on_conflict:
            description: The number of times an update should be retried in the case
              of a version conflict.
            type: number
    _global.bulk.DeleteOperation:
      allOf:
      - "$ref": "#/components/schemas/_global.bulk.OperationBase"
      - type: object
    _global.bulk.UpdateAction:
      type: object
      properties:
        detect_noop:
          description: If true, the `result` in the response is set to 'noop' when
            no changes to the document occur.
          default: true
          type: boolean
        doc:
          description: A partial update to an existing document.
          type: object
        doc_as_upsert:
          description: Set to `true` to use the contents of `doc` as the value of
            `upsert`.
          default: false
          type: boolean
        script:
          description: The script to run to update the document.
          allOf:
          - "$ref": "#/components/schemas/_types.Script"
        scripted_upsert:
          description: Set to `true` to run the script whether or not the document
            exists.
          default: false
          type: boolean
        _source:
          description: |-
            If `false`, source retrieval is turned off.
            You can also specify a comma-separated list of the fields you want to retrieve.
          default: 'true'
          allOf:
          - "$ref": "#/components/schemas/_global.search._types.SourceConfig"
        upsert:
          description: |-
            If the document does not already exist, the contents of `upsert` are inserted as a new document.
            If the document exists, the `script` is run.
          type: object
    _global.bulk.ResponseItem:
      type: object
      properties:
        _id:
          description: The document ID associated with the operation.
          oneOf:
          - type: string
          - nullable: true
            type: string
        _index:
          description: |-
            The name of the index associated with the operation.
            If the operation targeted a data stream, this is the backing index into which the document was written.
          type: string
        status:
          description: The HTTP status code returned for the operation.
          type: number
        failure_store:
          allOf:
          - "$ref": "#/components/schemas/_global.bulk.FailureStoreStatus"
        error:
          description: |-
            Additional information about the failed operation.
            The property is returned only for failed operations.
          allOf:
          - "$ref": "#/components/schemas/_types.ErrorCause"
        _primary_term:
          description: |-
            The primary term assigned to the document for the operation.
            This property is returned only for successful operations.
          type: number
        result:
          description: |-
            The result of the operation.
            Successful values are `created`, `deleted`, and `updated`.
          type: string
        _seq_no:
          description: |-
            The sequence number assigned to the document for the operation.
            Sequence numbers are used to ensure an older version of a document doesn't overwrite a newer version.
          allOf:
          - "$ref": "#/components/schemas/_types.SequenceNumber"
        _shards:
          description: Shard information for the operation.
          allOf:
          - "$ref": "#/components/schemas/_types.ShardStatistics"
        _version:
          description: |-
            The document version associated with the operation.
            The document version is incremented each time the document is updated.
            This property is returned only for successful actions.
          allOf:
          - "$ref": "#/components/schemas/_types.VersionNumber"
        forced_refresh:
          type: boolean
        get:
          allOf:
          - "$ref": "#/components/schemas/_types.InlineGetDictUserDefined"
      required:
      - _index
      - status
    _global.bulk.FailureStoreStatus:
      type: string
      enum:
      - not_applicable_or_unknown
      - used
      - not_enabled
      - failed
    _types.InlineGetDictUserDefined:
      type: object
      properties:
        fields:
          type: object
          additionalProperties:
            type: object
        found:
          type: boolean
        _seq_no:
          allOf:
          - "$ref": "#/components/schemas/_types.SequenceNumber"
        _primary_term:
          type: number
        _routing:
          allOf:
          - "$ref": "#/components/schemas/_types.Routing"
        _source:
          type: object
          additionalProperties:
            type: object
      required:
      - found
    _types.Names:
      oneOf:
      - "$ref": "#/components/schemas/_types.Name"
      - type: array
        items:
          "$ref": "#/components/schemas/_types.Name"
    cat._types.CatAliasesColumns:
      oneOf:
      - "$ref": "#/components/schemas/cat._types.CatAliasesColumn"
      - type: array
        items:
          "$ref": "#/components/schemas/cat._types.CatAliasesColumn"
    cat._types.CatAliasesColumn:
      anyOf:
      - type: string
        enum:
        - alias
        - a
        - index
        - i
        - idx
        - filter
        - f
        - fi
        - routing.index
        - ri
        - routingIndex
        - routing.search
        - rs
        - routingSearch
        - is_write_index
        - w
        - isWriteIndex
      - type: string
    cat.aliases.AliasesRecord:
      type: object
      properties:
        alias:
          description: alias name
          type: string
        index:
          description: index alias points to
          allOf:
          - "$ref": "#/components/schemas/_types.IndexName"
        filter:
          description: filter
          type: string
        routing.index:
          description: index routing
          type: string
        routing.search:
          description: search routing
          type: string
        is_write_index:
          description: write index
          type: string
    _types.NodeIds:
      oneOf:
      - "$ref": "#/components/schemas/_types.NodeId"
      - type: array
        items:
          "$ref": "#/components/schemas/_types.NodeId"
    cat._types.CatAllocationColumns:
      oneOf:
      - "$ref": "#/components/schemas/cat._types.CatAllocationColumn"
      - type: array
        items:
          "$ref": "#/components/schemas/cat._types.CatAllocationColumn"
    cat._types.CatAllocationColumn:
      anyOf:
      - type: string
        enum:
        - shards
        - s
        - shards.undesired
        - write_load.forecast
        - wlf
        - writeLoadForecast
        - disk.indices.forecast
        - dif
        - diskIndicesForecast
        - disk.indices
        - di
        - diskIndices
        - disk.used
        - du
        - diskUsed
        - disk.avail
        - da
        - diskAvail
        - disk.total
        - dt
        - diskTotal
        - disk.percent
        - dp
        - diskPercent
        - host
        - h
        - ip
        - node
        - "n"
        - node.role
        - r
        - role
        - nodeRole
      - type: string
    cat.allocation.AllocationRecord:
      type: object
      properties:
        shards:
          description: Number of primary and replica shards assigned to the node.
          type: string
        shards.undesired:
          description: Amount of shards that are scheduled to be moved elsewhere in
            the cluster or -1 other than desired balance allocator is used
          oneOf:
          - type: string
          - nullable: true
            type: string
        write_load.forecast:
          description: Sum of index write load forecasts
          oneOf:
          - "$ref": "#/components/schemas/_spec_utils.Stringifieddouble"
          - nullable: true
            type: string
        disk.indices.forecast:
          description: Sum of shard size forecasts
          oneOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
          - nullable: true
            type: string
        disk.indices:
          description: |-
            Disk space used by the node’s shards. Does not include disk space for the translog or unassigned shards.
            IMPORTANT: This metric double-counts disk space for hard-linked files, such as those created when shrinking, splitting, or cloning an index.
          oneOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
          - nullable: true
            type: string
        disk.used:
          description: |-
            Total disk space in use.
            Elasticsearch retrieves this metric from the node’s operating system (OS).
            The metric includes disk space for: Elasticsearch, including the translog and unassigned shards; the node’s operating system; any other applications or files on the node.
            Unlike `disk.indices`, this metric does not double-count disk space for hard-linked files.
          oneOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
          - nullable: true
            type: string
        disk.avail:
          description: |-
            Free disk space available to Elasticsearch.
            Elasticsearch retrieves this metric from the node’s operating system.
            Disk-based shard allocation uses this metric to assign shards to nodes based on available disk space.
          oneOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
          - nullable: true
            type: string
        disk.total:
          description: Total disk space for the node, including in-use and available
            space.
          oneOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
          - nullable: true
            type: string
        disk.percent:
          description: Total percentage of disk space in use. Calculated as `disk.used
            / disk.total`.
          oneOf:
          - "$ref": "#/components/schemas/_types.Percentage"
          - nullable: true
            type: string
        host:
          description: Network host for the node. Set using the `network.host` setting.
          oneOf:
          - "$ref": "#/components/schemas/_types.Host"
          - nullable: true
            type: string
        ip:
          description: IP address and port for the node.
          oneOf:
          - "$ref": "#/components/schemas/_types.Ip"
          - nullable: true
            type: string
        node:
          description: Name for the node. Set using the `node.name` setting.
          type: string
        node.role:
          description: Node roles
          oneOf:
          - type: string
          - nullable: true
            type: string
    _spec_utils.Stringifieddouble:
      description: |-
        Some APIs will return values such as numbers also as a string (notably epoch timestamps). This behavior
        is used to capture this behavior while keeping the semantics of the field type.

        Depending on the target language, code generators can keep the union or remove it and leniently parse
        strings to the target type.
      oneOf:
      - type: number
      - type: string
    _types.ByteSize:
      oneOf:
      - type: number
      - type: string
    _types.Percentage:
      oneOf:
      - type: string
      - type: number
    _types.Host:
      type: string
    _types.Ip:
      type: string
    cat._types.CatCircuitBreakerColumns:
      oneOf:
      - "$ref": "#/components/schemas/cat._types.CatCircuitBreakerColumn"
      - type: array
        items:
          "$ref": "#/components/schemas/cat._types.CatCircuitBreakerColumn"
    cat._types.CatCircuitBreakerColumn:
      anyOf:
      - type: string
        enum:
        - node_id
        - id
        - node_name
        - nn
        - breaker
        - br
        - limit
        - l
        - limit_bytes
        - lb
        - estimated
        - e
        - estimated_bytes
        - eb
        - tripped
        - t
        - overhead
        - o
      - type: string
    cat.circuit_breaker.CircuitBreakerRecord:
      type: object
      properties:
        node_id:
          description: Persistent node ID
          allOf:
          - "$ref": "#/components/schemas/_types.NodeId"
        node_name:
          description: Node name
          type: string
        breaker:
          description: Breaker name
          type: string
        limit:
          description: Limit size
          type: string
        limit_bytes:
          description: Limit size in bytes
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        estimated:
          description: Estimated size
          type: string
        estimated_bytes:
          description: Estimated size in bytes
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        tripped:
          description: Tripped count
          type: string
        overhead:
          description: Overhead
          type: string
    cat._types.CatComponentColumns:
      oneOf:
      - "$ref": "#/components/schemas/cat._types.CatComponentColumn"
      - type: array
        items:
          "$ref": "#/components/schemas/cat._types.CatComponentColumn"
    cat._types.CatComponentColumn:
      anyOf:
      - type: string
        enum:
        - name
        - "n"
        - version
        - v
        - alias_count
        - a
        - mapping_count
        - m
        - settings_count
        - s
        - metadata_count
        - me
        - included_in
        - i
      - type: string
    cat.component_templates.ComponentTemplate:
      type: object
      properties:
        name:
          type: string
        version:
          oneOf:
          - type: string
          - nullable: true
            type: string
        alias_count:
          type: string
        mapping_count:
          type: string
        settings_count:
          type: string
        metadata_count:
          type: string
        included_in:
          type: string
      required:
      - name
      - version
      - alias_count
      - mapping_count
      - settings_count
      - metadata_count
      - included_in
    cat._types.CatCountColumns:
      oneOf:
      - "$ref": "#/components/schemas/cat._types.CatCountColumn"
      - type: array
        items:
          "$ref": "#/components/schemas/cat._types.CatCountColumn"
    cat._types.CatCountColumn:
      anyOf:
      - type: string
        enum:
        - epoch
        - t
        - time
        - timestamp
        - ts
        - hms
        - hhmmss
        - count
        - dc
        - docs.count
        - docsCount
      - type: string
    cat.count.CountRecord:
      type: object
      properties:
        epoch:
          description: seconds since 1970-01-01 00:00:00
          allOf:
          - "$ref": "#/components/schemas/_spec_utils.StringifiedEpochTimeUnitSeconds"
        timestamp:
          description: time in HH:MM:SS
          allOf:
          - "$ref": "#/components/schemas/_types.TimeOfDay"
        count:
          description: the document count
          type: string
    _spec_utils.StringifiedEpochTimeUnitSeconds:
      description: |-
        Some APIs will return values such as numbers also as a string (notably epoch timestamps). This behavior
        is used to capture this behavior while keeping the semantics of the field type.

        Depending on the target language, code generators can keep the union or remove it and leniently parse
        strings to the target type.
      oneOf:
      - "$ref": "#/components/schemas/_types.EpochTimeUnitSeconds"
      - type: string
    _types.EpochTimeUnitSeconds:
      allOf:
      - "$ref": "#/components/schemas/_types.UnitSeconds"
    _types.UnitSeconds:
      description: Time unit for seconds
      type: number
    _types.TimeOfDay:
      description: Time of day, expressed as HH:MM:SS
      type: string
    cat._types.CatFieldDataColumns:
      oneOf:
      - "$ref": "#/components/schemas/cat._types.CatFieldDataColumn"
      - type: array
        items:
          "$ref": "#/components/schemas/cat._types.CatFieldDataColumn"
    cat._types.CatFieldDataColumn:
      anyOf:
      - type: string
        enum:
        - id
        - host
        - h
        - ip
        - node
        - "n"
        - field
        - f
        - size
        - s
      - type: string
    cat.fielddata.FielddataRecord:
      type: object
      properties:
        id:
          description: node id
          type: string
        host:
          description: host name
          type: string
        ip:
          description: ip address
          type: string
        node:
          description: node name
          type: string
        field:
          description: field name
          type: string
        size:
          description: field data usage
          type: string
    cat._types.CatHealthColumns:
      oneOf:
      - "$ref": "#/components/schemas/cat._types.CatHealthColumn"
      - type: array
        items:
          "$ref": "#/components/schemas/cat._types.CatHealthColumn"
    cat._types.CatHealthColumn:
      anyOf:
      - type: string
        enum:
        - epoch
        - t
        - time
        - timestamp
        - ts
        - hms
        - hhmmss
        - cluster
        - cl
        - status
        - st
        - node.total
        - nt
        - nodeTotal
        - node.data
        - nd
        - nodeData
        - shards
        - t
        - sh
        - shards.total
        - shardsTotal
        - pri
        - p
        - shards.primary
        - shardsPrimary
        - relo
        - r
        - shards.relocating
        - shardsRelocating
        - init
        - i
        - shards.initializing
        - shardsInitializing
        - unassign
        - u
        - shards.unassigned
        - shardsUnassigned
        - unassign.pri
        - up
        - shards.unassigned.primary
        - shardsUnassignedPrimary
        - pending_tasks
        - pt
        - pendingTasks
        - max_task_wait_time
        - mtwt
        - maxTaskWaitTime
        - active_shards_percent
        - asp
        - activeShardsPercent
      - type: string
    cat.health.HealthRecord:
      type: object
      properties:
        epoch:
          description: seconds since 1970-01-01 00:00:00
          allOf:
          - "$ref": "#/components/schemas/_spec_utils.StringifiedEpochTimeUnitSeconds"
        timestamp:
          description: time in HH:MM:SS
          allOf:
          - "$ref": "#/components/schemas/_types.TimeOfDay"
        cluster:
          description: cluster name
          type: string
        status:
          description: health status
          type: string
        node.total:
          description: total number of nodes
          type: string
        node.data:
          description: number of nodes that can store data
          type: string
        shards:
          description: total number of shards
          type: string
        pri:
          description: number of primary shards
          type: string
        relo:
          description: number of relocating nodes
          type: string
        init:
          description: number of initializing nodes
          type: string
        unassign.pri:
          description: number of unassigned primary shards
          type: string
        unassign:
          description: number of unassigned shards
          type: string
        pending_tasks:
          description: number of pending tasks
          type: string
        max_task_wait_time:
          description: wait time of longest task pending
          type: string
        active_shards_percent:
          description: active number of shards in percent
          type: string
    _types.HealthStatus:
      type: string
      enum:
      - green
      - GREEN
      - yellow
      - YELLOW
      - red
      - RED
      - unknown
      - unavailable
    cat._types.CatIndicesColumns:
      oneOf:
      - "$ref": "#/components/schemas/cat._types.CatIndicesColumn"
      - type: array
        items:
          "$ref": "#/components/schemas/cat._types.CatIndicesColumn"
    cat._types.CatIndicesColumn:
      anyOf:
      - type: string
        enum:
        - health
        - h
        - status
        - s
        - index
        - i
        - idx
        - uuid
        - id
        - uuid
        - pri
        - p
        - shards.primary
        - shardsPrimary
        - rep
        - r
        - shards.replica
        - shardsReplica
        - docs.count
        - dc
        - docsCount
        - docs.deleted
        - dd
        - docsDeleted
        - creation.date
        - cd
        - creation.date.string
        - cds
        - store.size
        - ss
        - storeSize
        - pri.store.size
        - dataset.size
        - completion.size
        - cs
        - completionSize
        - pri.completion.size
        - fielddata.memory_size
        - fm
        - fielddataMemory
        - pri.fielddata.memory_size
        - fielddata.evictions
        - fe
        - fielddataEvictions
        - pri.fielddata.evictions
        - query_cache.memory_size
        - qcm
        - queryCacheMemory
        - pri.query_cache.memory_size
        - query_cache.evictions
        - qce
        - queryCacheEvictions
        - pri.query_cache.evictions
        - request_cache.memory_size
        - rcm
        - requestCacheMemory
        - pri.request_cache.memory_size
        - request_cache.evictions
        - rce
        - requestCacheEvictions
        - pri.request_cache.evictions
        - request_cache.hit_count
        - rchc
        - requestCacheHitCount
        - pri.request_cache.hit_count
        - request_cache.miss_count
        - rcmc
        - requestCacheMissCount
        - pri.request_cache.miss_count
        - flush.total
        - ft
        - flushTotal
        - pri.flush.total
        - flush.total_time
        - ftt
        - flushTotalTime
        - pri.flush.total_time
        - get.current
        - gc
        - getCurrent
        - pri.get.current
        - get.time
        - gti
        - getTime
        - pri.get.time
        - get.total
        - gto
        - getTotal
        - pri.get.total
        - get.exists_time
        - geti
        - getExistsTime
        - pri.get.exists_time
        - get.exists_total
        - geto
        - getExistsTotal
        - pri.get.exists_total
        - get.missing_time
        - gmti
        - getMissingTime
        - pri.get.missing_time
        - get.missing_total
        - gmto
        - getMissingTotal
        - pri.get.missing_total
        - indexing.delete_current
        - idc
        - indexingDeleteCurrent
        - pri.indexing.delete_current
        - indexing.delete_time
        - idti
        - indexingDeleteTime
        - pri.indexing.delete_time
        - indexing.delete_total
        - idto
        - indexingDeleteTotal
        - pri.indexing.delete_total
        - indexing.index_current
        - iic
        - indexingIndexCurrent
        - pri.indexing.index_current
        - indexing.index_time
        - iiti
        - indexingIndexTime
        - pri.indexing.index_time
        - indexing.index_total
        - iito
        - indexingIndexTotal
        - pri.indexing.index_total
        - indexing.index_failed
        - iif
        - indexingIndexFailed
        - pri.indexing.index_failed
        - indexing.index_failed_due_to_version_conflict
        - iifvc
        - indexingIndexFailedDueToVersionConflict
        - pri.indexing.index_failed_due_to_version_conflict
        - merges.current
        - mc
        - mergesCurrent
        - pri.merges.current
        - merges.current_docs
        - mcd
        - mergesCurrentDocs
        - pri.merges.current_docs
        - merges.current_size
        - mcs
        - mergesCurrentSize
        - pri.merges.current_size
        - merges.total
        - mt
        - mergesTotal
        - pri.merges.total
        - merges.total_docs
        - mtd
        - mergesTotalDocs
        - pri.merges.total_docs
        - merges.total_size
        - mts
        - mergesTotalSize
        - pri.merges.total_size
        - merges.total_time
        - mtt
        - mergesTotalTime
        - pri.merges.total_time
        - refresh.total
        - rto
        - refreshTotal
        - pri.refresh.total
        - refresh.time
        - rti
        - refreshTime
        - pri.refresh.time
        - refresh.external_total
        - rto
        - refreshTotal
        - pri.refresh.external_total
        - refresh.external_time
        - rti
        - refreshTime
        - pri.refresh.external_time
        - refresh.listeners
        - rli
        - refreshListeners
        - pri.refresh.listeners
        - search.fetch_current
        - sfc
        - searchFetchCurrent
        - pri.search.fetch_current
        - search.fetch_time
        - sfti
        - searchFetchTime
        - pri.search.fetch_time
        - search.fetch_total
        - sfto
        - searchFetchTotal
        - pri.search.fetch_total
        - search.open_contexts
        - so
        - searchOpenContexts
        - pri.search.open_contexts
        - search.query_current
        - sqc
        - searchQueryCurrent
        - pri.search.query_current
        - search.query_time
        - sqti
        - searchQueryTime
        - pri.search.query_time
        - search.query_total
        - sqto
        - searchQueryTotal
        - pri.search.query_total
        - search.scroll_current
        - scc
        - searchScrollCurrent
        - pri.search.scroll_current
        - search.scroll_time
        - scti
        - searchScrollTime
        - pri.search.scroll_time
        - search.scroll_total
        - scto
        - searchScrollTotal
        - pri.search.scroll_total
        - segments.count
        - sc
        - segmentsCount
        - pri.segments.count
        - segments.memory
        - sm
        - segmentsMemory
        - pri.segments.memory
        - segments.index_writer_memory
        - siwm
        - segmentsIndexWriterMemory
        - pri.segments.index_writer_memory
        - segments.version_map_memory
        - svmm
        - segmentsVersionMapMemory
        - pri.segments.version_map_memory
        - segments.fixed_bitset_memory
        - sfbm
        - fixedBitsetMemory
        - pri.segments.fixed_bitset_memory
        - warmer.current
        - wc
        - warmerCurrent
        - pri.warmer.current
        - warmer.total
        - wto
        - warmerTotal
        - pri.warmer.total
        - warmer.total_time
        - wtt
        - warmerTotalTime
        - pri.warmer.total_time
        - suggest.current
        - suc
        - suggestCurrent
        - pri.suggest.current
        - suggest.time
        - suti
        - suggestTime
        - pri.suggest.time
        - suggest.total
        - suto
        - suggestTotal
        - pri.suggest.total
        - memory.total
        - tm
        - memoryTotal
        - pri.memory.total
        - bulk.total_operations
        - bto
        - bulkTotalOperation
        - pri.bulk.total_operations
        - bulk.total_time
        - btti
        - bulkTotalTime
        - pri.bulk.total_time
        - bulk.total_size_in_bytes
        - btsi
        - bulkTotalSizeInBytes
        - pri.bulk.total_size_in_bytes
        - bulk.avg_time
        - bati
        - bulkAvgTime
        - pri.bulk.avg_time
        - bulk.avg_size_in_bytes
        - basi
        - bulkAvgSizeInBytes
        - pri.bulk.avg_size_in_bytes
        - dense_vector.value_count
        - dvc
        - denseVectorCount
        - pri.dense_vector.value_count
        - sparse_vector.value_count
        - svc
        - sparseVectorCount
        - pri.sparse_vector.value_count
      - type: string
    cat.indices.IndicesRecord:
      type: object
      properties:
        health:
          description: current health status
          type: string
        status:
          description: open/close status
          type: string
        index:
          description: index name
          type: string
        uuid:
          description: index uuid
          type: string
        pri:
          description: number of primary shards
          type: string
        rep:
          description: number of replica shards
          type: string
        docs.count:
          description: |-
            The number of documents in the index, including hidden nested documents.
            For indices with `semantic_text` fields or other nested field types,
            this count includes the internal nested documents.
            To get the logical document count (excluding nested documents), use
            the `_count` API or `_cat/count` API instead.
          oneOf:
          - type: string
          - nullable: true
            type: string
        docs.deleted:
          description: deleted docs
          oneOf:
          - type: string
          - nullable: true
            type: string
        creation.date:
          description: index creation date (millisecond value)
          type: string
        creation.date.string:
          description: index creation date (as string)
          type: string
        store.size:
          description: store size of primaries & replicas
          oneOf:
          - type: string
          - nullable: true
            type: string
        pri.store.size:
          description: store size of primaries
          oneOf:
          - type: string
          - nullable: true
            type: string
        dataset.size:
          description: total size of dataset (including the cache for partially mounted
            indices)
          x-state: Generally available; Added in 8.11.0
          oneOf:
          - type: string
          - nullable: true
            type: string
        completion.size:
          description: size of completion
          type: string
        pri.completion.size:
          description: size of completion
          type: string
        fielddata.memory_size:
          description: used fielddata cache
          type: string
        pri.fielddata.memory_size:
          description: used fielddata cache
          type: string
        fielddata.evictions:
          description: fielddata evictions
          type: string
        pri.fielddata.evictions:
          description: fielddata evictions
          type: string
        query_cache.memory_size:
          description: used query cache
          type: string
        pri.query_cache.memory_size:
          description: used query cache
          type: string
        query_cache.evictions:
          description: query cache evictions
          type: string
        pri.query_cache.evictions:
          description: query cache evictions
          type: string
        request_cache.memory_size:
          description: used request cache
          type: string
        pri.request_cache.memory_size:
          description: used request cache
          type: string
        request_cache.evictions:
          description: request cache evictions
          type: string
        pri.request_cache.evictions:
          description: request cache evictions
          type: string
        request_cache.hit_count:
          description: request cache hit count
          type: string
        pri.request_cache.hit_count:
          description: request cache hit count
          type: string
        request_cache.miss_count:
          description: request cache miss count
          type: string
        pri.request_cache.miss_count:
          description: request cache miss count
          type: string
        flush.total:
          description: number of flushes
          type: string
        pri.flush.total:
          description: number of flushes
          type: string
        flush.total_time:
          description: time spent in flush
          type: string
        pri.flush.total_time:
          description: time spent in flush
          type: string
        get.current:
          description: number of current get ops
          type: string
        pri.get.current:
          description: number of current get ops
          type: string
        get.time:
          description: time spent in get
          type: string
        pri.get.time:
          description: time spent in get
          type: string
        get.total:
          description: number of get ops
          type: string
        pri.get.total:
          description: number of get ops
          type: string
        get.exists_time:
          description: time spent in successful gets
          type: string
        pri.get.exists_time:
          description: time spent in successful gets
          type: string
        get.exists_total:
          description: number of successful gets
          type: string
        pri.get.exists_total:
          description: number of successful gets
          type: string
        get.missing_time:
          description: time spent in failed gets
          type: string
        pri.get.missing_time:
          description: time spent in failed gets
          type: string
        get.missing_total:
          description: number of failed gets
          type: string
        pri.get.missing_total:
          description: number of failed gets
          type: string
        indexing.delete_current:
          description: number of current deletions
          type: string
        pri.indexing.delete_current:
          description: number of current deletions
          type: string
        indexing.delete_time:
          description: time spent in deletions
          type: string
        pri.indexing.delete_time:
          description: time spent in deletions
          type: string
        indexing.delete_total:
          description: number of delete ops
          type: string
        pri.indexing.delete_total:
          description: number of delete ops
          type: string
        indexing.index_current:
          description: number of current indexing ops
          type: string
        pri.indexing.index_current:
          description: number of current indexing ops
          type: string
        indexing.index_time:
          description: time spent in indexing
          type: string
        pri.indexing.index_time:
          description: time spent in indexing
          type: string
        indexing.index_total:
          description: number of indexing ops
          type: string
        pri.indexing.index_total:
          description: number of indexing ops
          type: string
        indexing.index_failed:
          description: number of failed indexing ops
          type: string
        pri.indexing.index_failed:
          description: number of failed indexing ops
          type: string
        merges.current:
          description: number of current merges
          type: string
        pri.merges.current:
          description: number of current merges
          type: string
        merges.current_docs:
          description: number of current merging docs
          type: string
        pri.merges.current_docs:
          description: number of current merging docs
          type: string
        merges.current_size:
          description: size of current merges
          type: string
        pri.merges.current_size:
          description: size of current merges
          type: string
        merges.total:
          description: number of completed merge ops
          type: string
        pri.merges.total:
          description: number of completed merge ops
          type: string
        merges.total_docs:
          description: docs merged
          type: string
        pri.merges.total_docs:
          description: docs merged
          type: string
        merges.total_size:
          description: size merged
          type: string
        pri.merges.total_size:
          description: size merged
          type: string
        merges.total_time:
          description: time spent in merges
          type: string
        pri.merges.total_time:
          description: time spent in merges
          type: string
        refresh.total:
          description: total refreshes
          type: string
        pri.refresh.total:
          description: total refreshes
          type: string
        refresh.time:
          description: time spent in refreshes
          type: string
        pri.refresh.time:
          description: time spent in refreshes
          type: string
        refresh.external_total:
          description: total external refreshes
          type: string
        pri.refresh.external_total:
          description: total external refreshes
          type: string
        refresh.external_time:
          description: time spent in external refreshes
          type: string
        pri.refresh.external_time:
          description: time spent in external refreshes
          type: string
        refresh.listeners:
          description: number of pending refresh listeners
          type: string
        pri.refresh.listeners:
          description: number of pending refresh listeners
          type: string
        search.fetch_current:
          description: current fetch phase ops
          type: string
        pri.search.fetch_current:
          description: current fetch phase ops
          type: string
        search.fetch_time:
          description: time spent in fetch phase
          type: string
        pri.search.fetch_time:
          description: time spent in fetch phase
          type: string
        search.fetch_total:
          description: total fetch ops
          type: string
        pri.search.fetch_total:
          description: total fetch ops
          type: string
        search.open_contexts:
          description: open search contexts
          type: string
        pri.search.open_contexts:
          description: open search contexts
          type: string
        search.query_current:
          description: current query phase ops
          type: string
        pri.search.query_current:
          description: current query phase ops
          type: string
        search.query_time:
          description: time spent in query phase
          type: string
        pri.search.query_time:
          description: time spent in query phase
          type: string
        search.query_total:
          description: total query phase ops
          type: string
        pri.search.query_total:
          description: total query phase ops
          type: string
        search.scroll_current:
          description: open scroll contexts
          type: string
        pri.search.scroll_current:
          description: open scroll contexts
          type: string
        search.scroll_time:
          description: time scroll contexts held open
          type: string
        pri.search.scroll_time:
          description: time scroll contexts held open
          type: string
        search.scroll_total:
          description: completed scroll contexts
          type: string
        pri.search.scroll_total:
          description: completed scroll contexts
          type: string
        segments.count:
          description: number of segments
          type: string
        pri.segments.count:
          description: number of segments
          type: string
        segments.memory:
          description: memory used by segments
          type: string
        pri.segments.memory:
          description: memory used by segments
          type: string
        segments.index_writer_memory:
          description: memory used by index writer
          type: string
        pri.segments.index_writer_memory:
          description: memory used by index writer
          type: string
        segments.version_map_memory:
          description: memory used by version map
          type: string
        pri.segments.version_map_memory:
          description: memory used by version map
          type: string
        segments.fixed_bitset_memory:
          description: memory used by fixed bit sets for nested object field types
            and export type filters for types referred in _parent fields
          type: string
        pri.segments.fixed_bitset_memory:
          description: memory used by fixed bit sets for nested object field types
            and export type filters for types referred in _parent fields
          type: string
        warmer.current:
          description: current warmer ops
          type: string
        pri.warmer.current:
          description: current warmer ops
          type: string
        warmer.total:
          description: total warmer ops
          type: string
        pri.warmer.total:
          description: total warmer ops
          type: string
        warmer.total_time:
          description: time spent in warmers
          type: string
        pri.warmer.total_time:
          description: time spent in warmers
          type: string
        suggest.current:
          description: number of current suggest ops
          type: string
        pri.suggest.current:
          description: number of current suggest ops
          type: string
        suggest.time:
          description: time spend in suggest
          type: string
        pri.suggest.time:
          description: time spend in suggest
          type: string
        suggest.total:
          description: number of suggest ops
          type: string
        pri.suggest.total:
          description: number of suggest ops
          type: string
        memory.total:
          description: total used memory
          type: string
        pri.memory.total:
          description: total user memory
          type: string
        search.throttled:
          description: indicates if the index is search throttled
          type: string
        bulk.total_operations:
          description: number of bulk shard ops
          type: string
        pri.bulk.total_operations:
          description: number of bulk shard ops
          type: string
        bulk.total_time:
          description: time spend in shard bulk
          type: string
        pri.bulk.total_time:
          description: time spend in shard bulk
          type: string
        bulk.total_size_in_bytes:
          description: total size in bytes of shard bulk
          type: string
        pri.bulk.total_size_in_bytes:
          description: total size in bytes of shard bulk
          type: string
        bulk.avg_time:
          description: average time spend in shard bulk
          type: string
        pri.bulk.avg_time:
          description: average time spend in shard bulk
          type: string
        bulk.avg_size_in_bytes:
          description: average size in bytes of shard bulk
          type: string
        pri.bulk.avg_size_in_bytes:
          description: average size in bytes of shard bulk
          type: string
    cat._types.CatMasterColumns:
      oneOf:
      - "$ref": "#/components/schemas/cat._types.CatMasterColumn"
      - type: array
        items:
          "$ref": "#/components/schemas/cat._types.CatMasterColumn"
    cat._types.CatMasterColumn:
      anyOf:
      - type: string
        enum:
        - id
        - host
        - h
        - ip
        - node
        - "n"
      - type: string
    cat.master.MasterRecord:
      type: object
      properties:
        id:
          description: node id
          type: string
        host:
          description: host name
          type: string
        ip:
          description: ip address
          type: string
        node:
          description: node name
          type: string
    cat._types.CatDfaColumns:
      oneOf:
      - "$ref": "#/components/schemas/cat._types.CatDfaColumn"
      - type: array
        items:
          "$ref": "#/components/schemas/cat._types.CatDfaColumn"
    cat._types.CatDfaColumn:
      type: string
    cat.ml_data_frame_analytics.DataFrameAnalyticsRecord:
      type: object
      properties:
        id:
          description: The identifier for the job.
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        type:
          description: The type of analysis that the job performs.
          type: string
        create_time:
          description: The time when the job was created.
          type: string
        version:
          description: The version of Elasticsearch when the job was created.
          allOf:
          - "$ref": "#/components/schemas/_types.VersionString"
        source_index:
          description: The name of the source index.
          allOf:
          - "$ref": "#/components/schemas/_types.IndexName"
        dest_index:
          description: The name of the destination index.
          allOf:
          - "$ref": "#/components/schemas/_types.IndexName"
        description:
          description: A description of the job.
          type: string
        model_memory_limit:
          description: The approximate maximum amount of memory resources that are
            permitted for the job.
          type: string
        state:
          description: The current status of the job.
          type: string
        failure_reason:
          description: Messages about the reason why the job failed.
          type: string
        progress:
          description: The progress report for the job by phase.
          type: string
        assignment_explanation:
          description: Messages related to the selection of a node.
          type: string
        node.id:
          description: The unique identifier of the assigned node.
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        node.name:
          description: The name of the assigned node.
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        node.ephemeral_id:
          description: The ephemeral identifier of the assigned node.
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        node.address:
          description: The network address of the assigned node.
          type: string
    _types.VersionString:
      type: string
    cat._types.CatDatafeedColumns:
      oneOf:
      - "$ref": "#/components/schemas/cat._types.CatDatafeedColumn"
      - type: array
        items:
          "$ref": "#/components/schemas/cat._types.CatDatafeedColumn"
    cat._types.CatDatafeedColumn:
      type: string
    cat.ml_datafeeds.DatafeedsRecord:
      type: object
      properties:
        id:
          description: The datafeed identifier.
          type: string
        state:
          description: The status of the datafeed.
          allOf:
          - "$ref": "#/components/schemas/ml._types.DatafeedState"
        assignment_explanation:
          description: For started datafeeds only, contains messages relating to the
            selection of a node.
          type: string
        buckets.count:
          description: The number of buckets processed.
          type: string
        search.count:
          description: The number of searches run by the datafeed.
          type: string
        search.time:
          description: The total time the datafeed spent searching, in milliseconds.
          type: string
        search.bucket_avg:
          description: The average search time per bucket, in milliseconds.
          type: string
        search.exp_avg_hour:
          description: The exponential average search time per hour, in milliseconds.
          type: string
        node.id:
          description: |-
            The unique identifier of the assigned node.
            For started datafeeds only, this information pertains to the node upon which the datafeed is started.
          type: string
        node.name:
          description: |-
            The name of the assigned node.
            For started datafeeds only, this information pertains to the node upon which the datafeed is started.
          type: string
        node.ephemeral_id:
          description: |-
            The ephemeral identifier of the assigned node.
            For started datafeeds only, this information pertains to the node upon which the datafeed is started.
          type: string
        node.address:
          description: |-
            The network address of the assigned node.
            For started datafeeds only, this information pertains to the node upon which the datafeed is started.
          type: string
    ml._types.DatafeedState:
      type: string
      enum:
      - started
      - stopped
      - starting
      - stopping
    cat._types.CatAnomalyDetectorColumns:
      oneOf:
      - "$ref": "#/components/schemas/cat._types.CatAnomalyDetectorColumn"
      - type: array
        items:
          "$ref": "#/components/schemas/cat._types.CatAnomalyDetectorColumn"
    cat._types.CatAnomalyDetectorColumn:
      type: string
    cat.ml_jobs.JobsRecord:
      type: object
      properties:
        id:
          description: The anomaly detection job identifier.
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        state:
          description: |+
            The status of the anomaly detection job.

            Supported values include:
              - `closing`: The job close action is in progress and has not yet completed. A closing job cannot accept further data.
              - `closed`: The job finished successfully with its model state persisted. The job must be opened before it can accept further data.
              - `opened`: The job is available to receive and process data.
              - `failed`: The job did not finish successfully due to an error.
            This situation can occur due to invalid input data, a fatal error occurring during the analysis, or an external interaction such as the process being killed by the Linux out of memory (OOM) killer.
            If the job had irrevocably failed, it must be force closed and then deleted.
            If the datafeed can be corrected, the job can be closed and then re-opened.
              - `opening`: The job open action is in progress and has not yet completed.

          allOf:
          - "$ref": "#/components/schemas/ml._types.JobState"
        opened_time:
          description: For open jobs only, the amount of time the job has been opened.
          type: string
        assignment_explanation:
          description: For open anomaly detection jobs only, contains messages relating
            to the selection of a node to run the job.
          type: string
        data.processed_records:
          description: |-
            The number of input documents that have been processed by the anomaly detection job.
            This value includes documents with missing fields, since they are nonetheless analyzed.
            If you use datafeeds and have aggregations in your search query, the `processed_record_count` is the number of aggregation results processed, not the number of Elasticsearch documents.
          type: string
        data.processed_fields:
          description: |-
            The total number of fields in all the documents that have been processed by the anomaly detection job.
            Only fields that are specified in the detector configuration object contribute to this count.
            The timestamp is not included in this count.
          type: string
        data.input_bytes:
          description: The number of bytes of input data posted to the anomaly detection
            job.
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        data.input_records:
          description: The number of input documents posted to the anomaly detection
            job.
          type: string
        data.input_fields:
          description: |-
            The total number of fields in input documents posted to the anomaly detection job.
            This count includes fields that are not used in the analysis.
            However, be aware that if you are using a datafeed, it extracts only the required fields from the documents it retrieves before posting them to the job.
          type: string
        data.invalid_dates:
          description: The number of input documents with either a missing date field
            or a date that could not be parsed.
          type: string
        data.missing_fields:
          description: |-
            The number of input documents that are missing a field that the anomaly detection job is configured to analyze.
            Input documents with missing fields are still processed because it is possible that not all fields are missing.
            If you are using datafeeds or posting data to the job in JSON format, a high `missing_field_count` is often not an indication of data issues.
            It is not necessarily a cause for concern.
          type: string
        data.out_of_order_timestamps:
          description: |-
            The number of input documents that have a timestamp chronologically preceding the start of the current anomaly detection bucket offset by the latency window.
            This information is applicable only when you provide data to the anomaly detection job by using the post data API.
            These out of order documents are discarded, since jobs require time series data to be in ascending chronological order.
          type: string
        data.empty_buckets:
          description: |-
            The number of buckets which did not contain any data.
            If your data contains many empty buckets, consider increasing your `bucket_span` or using functions that are tolerant to gaps in data such as mean, `non_null_sum` or `non_zero_count`.
          type: string
        data.sparse_buckets:
          description: |-
            The number of buckets that contained few data points compared to the expected number of data points.
            If your data contains many sparse buckets, consider using a longer `bucket_span`.
          type: string
        data.buckets:
          description: The total number of buckets processed.
          type: string
        data.earliest_record:
          description: The timestamp of the earliest chronologically input document.
          type: string
        data.latest_record:
          description: The timestamp of the latest chronologically input document.
          type: string
        data.last:
          description: The timestamp at which data was last analyzed, according to
            server time.
          type: string
        data.last_empty_bucket:
          description: The timestamp of the last bucket that did not contain any data.
          type: string
        data.last_sparse_bucket:
          description: The timestamp of the last bucket that was considered sparse.
          type: string
        model.bytes:
          description: |-
            The number of bytes of memory used by the models.
            This is the maximum value since the last time the model was persisted.
            If the job is closed, this value indicates the latest size.
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        model.memory_status:
          description: The status of the mathematical models.
          allOf:
          - "$ref": "#/components/schemas/ml._types.MemoryStatus"
        model.bytes_exceeded:
          description: The number of bytes over the high limit for memory usage at
            the last allocation failure.
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        model.memory_limit:
          description: The upper limit for model memory usage, checked on increasing
            values.
          type: string
        model.by_fields:
          description: |-
            The number of `by` field values that were analyzed by the models.
            This value is cumulative for all detectors in the job.
          type: string
        model.over_fields:
          description: |-
            The number of `over` field values that were analyzed by the models.
            This value is cumulative for all detectors in the job.
          type: string
        model.partition_fields:
          description: |-
            The number of `partition` field values that were analyzed by the models.
            This value is cumulative for all detectors in the job.
          type: string
        model.bucket_allocation_failures:
          description: |-
            The number of buckets for which new entities in incoming data were not processed due to insufficient model memory.
            This situation is also signified by a `hard_limit: memory_status` property value.
          type: string
        model.categorization_status:
          description: The status of categorization for the job.
          allOf:
          - "$ref": "#/components/schemas/ml._types.CategorizationStatus"
        model.categorized_doc_count:
          description: The number of documents that have had a field categorized.
          type: string
        model.total_category_count:
          description: The number of categories created by categorization.
          type: string
        model.frequent_category_count:
          description: The number of categories that match more than 1% of categorized
            documents.
          type: string
        model.rare_category_count:
          description: The number of categories that match just one categorized document.
          type: string
        model.dead_category_count:
          description: |-
            The number of categories created by categorization that will never be assigned again because another category’s definition makes it a superset of the dead category.
            Dead categories are a side effect of the way categorization has no prior training.
          type: string
        model.failed_category_count:
          description: |-
            The number of times that categorization wanted to create a new category but couldn’t because the job had hit its `model_memory_limit`.
            This count does not track which specific categories failed to be created.
            Therefore you cannot use this value to determine the number of unique categories that were missed.
          type: string
        model.log_time:
          description: The timestamp when the model stats were gathered, according
            to server time.
          type: string
        model.timestamp:
          description: The timestamp of the last record when the model stats were
            gathered.
          type: string
        forecasts.total:
          description: |-
            The number of individual forecasts currently available for the job.
            A value of one or more indicates that forecasts exist.
          type: string
        forecasts.memory.min:
          description: The minimum memory usage in bytes for forecasts related to
            the anomaly detection job.
          type: string
        forecasts.memory.max:
          description: The maximum memory usage in bytes for forecasts related to
            the anomaly detection job.
          type: string
        forecasts.memory.avg:
          description: The average memory usage in bytes for forecasts related to
            the anomaly detection job.
          type: string
        forecasts.memory.total:
          description: The total memory usage in bytes for forecasts related to the
            anomaly detection job.
          type: string
        forecasts.records.min:
          description: The minimum number of `model_forecast` documents written for
            forecasts related to the anomaly detection job.
          type: string
        forecasts.records.max:
          description: The maximum number of `model_forecast` documents written for
            forecasts related to the anomaly detection job.
          type: string
        forecasts.records.avg:
          description: The average number of `model_forecast` documents written for
            forecasts related to the anomaly detection job.
          type: string
        forecasts.records.total:
          description: The total number of `model_forecast` documents written for
            forecasts related to the anomaly detection job.
          type: string
        forecasts.time.min:
          description: The minimum runtime in milliseconds for forecasts related to
            the anomaly detection job.
          type: string
        forecasts.time.max:
          description: The maximum runtime in milliseconds for forecasts related to
            the anomaly detection job.
          type: string
        forecasts.time.avg:
          description: The average runtime in milliseconds for forecasts related to
            the anomaly detection job.
          type: string
        forecasts.time.total:
          description: The total runtime in milliseconds for forecasts related to
            the anomaly detection job.
          type: string
        node.id:
          description: The uniqe identifier of the assigned node.
          allOf:
          - "$ref": "#/components/schemas/_types.NodeId"
        node.name:
          description: The name of the assigned node.
          type: string
        node.ephemeral_id:
          description: The ephemeral identifier of the assigned node.
          allOf:
          - "$ref": "#/components/schemas/_types.NodeId"
        node.address:
          description: The network address of the assigned node.
          type: string
        buckets.count:
          description: The number of bucket results produced by the job.
          type: string
        buckets.time.total:
          description: The sum of all bucket processing times, in milliseconds.
          type: string
        buckets.time.min:
          description: The minimum of all bucket processing times, in milliseconds.
          type: string
        buckets.time.max:
          description: The maximum of all bucket processing times, in milliseconds.
          type: string
        buckets.time.exp_avg:
          description: The exponential moving average of all bucket processing times,
            in milliseconds.
          type: string
        buckets.time.exp_avg_hour:
          description: The exponential moving average of bucket processing times calculated
            in a one hour time window, in milliseconds.
          type: string
    ml._types.JobState:
      type: string
      enum:
      - closing
      - closed
      - opened
      - failed
      - opening
    ml._types.MemoryStatus:
      type: string
      enum:
      - ok
      - soft_limit
      - hard_limit
    ml._types.CategorizationStatus:
      type: string
      enum:
      - ok
      - warn
    cat._types.CatTrainedModelsColumns:
      oneOf:
      - "$ref": "#/components/schemas/cat._types.CatTrainedModelsColumn"
      - type: array
        items:
          "$ref": "#/components/schemas/cat._types.CatTrainedModelsColumn"
    cat._types.CatTrainedModelsColumn:
      type: string
    cat.ml_trained_models.TrainedModelsRecord:
      type: object
      properties:
        id:
          description: The model identifier.
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        created_by:
          description: Information about the creator of the model.
          type: string
        heap_size:
          description: The estimated heap size to keep the model in memory.
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        operations:
          description: |-
            The estimated number of operations to use the model.
            This number helps to measure the computational complexity of the model.
          type: string
        license:
          description: The license level of the model.
          type: string
        create_time:
          description: The time the model was created.
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
        version:
          description: The version of Elasticsearch when the model was created.
          allOf:
          - "$ref": "#/components/schemas/_types.VersionString"
        description:
          description: A description of the model.
          type: string
        ingest.pipelines:
          description: The number of pipelines that are referencing the model.
          type: string
        ingest.count:
          description: The total number of documents that are processed by the model.
          type: string
        ingest.time:
          description: The total time spent processing documents with thie model.
          type: string
        ingest.current:
          description: The total number of documents that are currently being handled
            by the model.
          type: string
        ingest.failed:
          description: The total number of failed ingest attempts with the model.
          type: string
        data_frame.id:
          description: |-
            The identifier for the data frame analytics job that created the model.
            Only displayed if the job is still available.
          type: string
        data_frame.create_time:
          description: The time the data frame analytics job was created.
          type: string
        data_frame.source_index:
          description: The source index used to train in the data frame analysis.
          type: string
        data_frame.analysis:
          description: The analysis used by the data frame to build the model.
          type: string
        type:
          x-state: Generally available; Added in 8.0.0
          type: string
    cat._types.CatNodeattrsColumns:
      oneOf:
      - "$ref": "#/components/schemas/cat._types.CatNodeattrsColumn"
      - type: array
        items:
          "$ref": "#/components/schemas/cat._types.CatNodeattrsColumn"
    cat._types.CatNodeattrsColumn:
      anyOf:
      - type: string
        enum:
        - node
        - id
        - id
        - nodeId
        - pid
        - p
        - host
        - h
        - ip
        - i
        - port
        - po
        - attr
        - attr.name
        - value
        - attr.value
      - type: string
    cat.nodeattrs.NodeAttributesRecord:
      type: object
      properties:
        node:
          description: The node name.
          type: string
        id:
          description: The unique node identifier.
          type: string
        pid:
          description: The process identifier.
          type: string
        host:
          description: The host name.
          type: string
        ip:
          description: The IP address.
          type: string
        port:
          description: The bound transport port.
          type: string
        attr:
          description: The attribute name.
          type: string
        value:
          description: The attribute value.
          type: string
    cat._types.CatNodeColumns:
      oneOf:
      - "$ref": "#/components/schemas/cat._types.CatNodeColumn"
      - type: array
        items:
          "$ref": "#/components/schemas/cat._types.CatNodeColumn"
    cat._types.CatNodeColumn:
      type: string
    cat.nodes.NodesRecord:
      type: object
      properties:
        id:
          description: The unique node identifier.
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        pid:
          description: The process identifier.
          type: string
        ip:
          description: The IP address.
          type: string
        port:
          description: The bound transport port.
          type: string
        http_address:
          description: The bound HTTP address.
          type: string
        version:
          description: The Elasticsearch version.
          allOf:
          - "$ref": "#/components/schemas/_types.VersionString"
        flavor:
          description: The Elasticsearch distribution flavor.
          type: string
        type:
          description: The Elasticsearch distribution type.
          type: string
        build:
          description: The Elasticsearch build hash.
          type: string
        jdk:
          description: The Java version.
          type: string
        disk.total:
          description: The total disk space.
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        disk.used:
          description: The used disk space.
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        disk.avail:
          description: The available disk space.
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        disk.used_percent:
          description: The used disk space percentage.
          allOf:
          - "$ref": "#/components/schemas/_types.Percentage"
        heap.current:
          description: The used heap.
          type: string
        heap.percent:
          description: The used heap ratio.
          allOf:
          - "$ref": "#/components/schemas/_types.Percentage"
        heap.max:
          description: The maximum configured heap.
          type: string
        ram.current:
          description: The used machine memory.
          type: string
        ram.percent:
          description: The used machine memory ratio.
          allOf:
          - "$ref": "#/components/schemas/_types.Percentage"
        ram.max:
          description: The total machine memory.
          type: string
        file_desc.current:
          description: The used file descriptors.
          type: string
        file_desc.percent:
          description: The used file descriptor ratio.
          allOf:
          - "$ref": "#/components/schemas/_types.Percentage"
        file_desc.max:
          description: The maximum number of file descriptors.
          type: string
        cpu:
          description: The recent system CPU usage as a percentage.
          type: string
        load_1m:
          description: The load average for the most recent minute.
          type: string
        load_5m:
          description: The load average for the last five minutes.
          type: string
        load_15m:
          description: The load average for the last fifteen minutes.
          type: string
        available_processors:
          description: The number of available processors (logical CPU cores available
            to the JVM).
          type: string
        uptime:
          description: The node uptime.
          type: string
        node.role:
          description: |-
            The roles of the node.
            Returned values include `c`(cold node), `d`(data node), `f`(frozen node), `h`(hot node), `i`(ingest node), `l`(machine learning node), `m` (master eligible node), `r`(remote cluster client node), `s`(content node), `t`(transform node), `v`(voting-only node), `w`(warm node),and `-`(coordinating node only).
          type: string
        master:
          description: |-
            Indicates whether the node is the elected master node.
            Returned values include `*`(elected master) and `-`(not elected master).
          type: string
        name:
          description: The node name.
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        completion.size:
          description: The size of completion.
          type: string
        fielddata.memory_size:
          description: The used fielddata cache.
          type: string
        fielddata.evictions:
          description: The fielddata evictions.
          type: string
        query_cache.memory_size:
          description: The used query cache.
          type: string
        query_cache.evictions:
          description: The query cache evictions.
          type: string
        query_cache.hit_count:
          description: The query cache hit counts.
          type: string
        query_cache.miss_count:
          description: The query cache miss counts.
          type: string
        request_cache.memory_size:
          description: The used request cache.
          type: string
        request_cache.evictions:
          description: The request cache evictions.
          type: string
        request_cache.hit_count:
          description: The request cache hit counts.
          type: string
        request_cache.miss_count:
          description: The request cache miss counts.
          type: string
        flush.total:
          description: The number of flushes.
          type: string
        flush.total_time:
          description: The time spent in flush.
          type: string
        get.current:
          description: The number of current get ops.
          type: string
        get.time:
          description: The time spent in get.
          type: string
        get.total:
          description: The number of get ops.
          type: string
        get.exists_time:
          description: The time spent in successful gets.
          type: string
        get.exists_total:
          description: The number of successful get operations.
          type: string
        get.missing_time:
          description: The time spent in failed gets.
          type: string
        get.missing_total:
          description: The number of failed gets.
          type: string
        indexing.delete_current:
          description: The number of current deletions.
          type: string
        indexing.delete_time:
          description: The time spent in deletions.
          type: string
        indexing.delete_total:
          description: The number of delete operations.
          type: string
        indexing.index_current:
          description: The number of current indexing operations.
          type: string
        indexing.index_time:
          description: The time spent in indexing.
          type: string
        indexing.index_total:
          description: The number of indexing operations.
          type: string
        indexing.index_failed:
          description: The number of failed indexing operations.
          type: string
        merges.current:
          description: The number of current merges.
          type: string
        merges.current_docs:
          description: The number of current merging docs.
          type: string
        merges.current_size:
          description: The size of current merges.
          type: string
        merges.total:
          description: The number of completed merge operations.
          type: string
        merges.total_docs:
          description: The docs merged.
          type: string
        merges.total_size:
          description: The size merged.
          type: string
        merges.total_time:
          description: The time spent in merges.
          type: string
        refresh.total:
          description: The total refreshes.
          type: string
        refresh.time:
          description: The time spent in refreshes.
          type: string
        refresh.external_total:
          description: The total external refreshes.
          type: string
        refresh.external_time:
          description: The time spent in external refreshes.
          type: string
        refresh.listeners:
          description: The number of pending refresh listeners.
          type: string
        script.compilations:
          description: The total script compilations.
          type: string
        script.cache_evictions:
          description: The total compiled scripts evicted from the cache.
          type: string
        script.compilation_limit_triggered:
          description: The script cache compilation limit triggered.
          type: string
        search.fetch_current:
          description: The current fetch phase operations.
          type: string
        search.fetch_time:
          description: The time spent in fetch phase.
          type: string
        search.fetch_total:
          description: The total fetch operations.
          type: string
        search.open_contexts:
          description: The open search contexts.
          type: string
        search.query_current:
          description: The current query phase operations.
          type: string
        search.query_time:
          description: The time spent in query phase.
          type: string
        search.query_total:
          description: The total query phase operations.
          type: string
        search.scroll_current:
          description: The open scroll contexts.
          type: string
        search.scroll_time:
          description: The time scroll contexts held open.
          type: string
        search.scroll_total:
          description: The completed scroll contexts.
          type: string
        segments.count:
          description: The number of segments.
          type: string
        segments.memory:
          description: The memory used by segments.
          type: string
        segments.index_writer_memory:
          description: The memory used by the index writer.
          type: string
        segments.version_map_memory:
          description: The memory used by the version map.
          type: string
        segments.fixed_bitset_memory:
          description: The memory used by fixed bit sets for nested object field types
            and export type filters for types referred in _parent fields.
          type: string
        suggest.current:
          description: The number of current suggest operations.
          type: string
        suggest.time:
          description: The time spend in suggest.
          type: string
        suggest.total:
          description: The number of suggest operations.
          type: string
        bulk.total_operations:
          description: The number of bulk shard operations.
          type: string
        bulk.total_time:
          description: The time spend in shard bulk.
          type: string
        bulk.total_size_in_bytes:
          description: The total size in bytes of shard bulk.
          type: string
        bulk.avg_time:
          description: The average time spend in shard bulk.
          type: string
        bulk.avg_size_in_bytes:
          description: The average size in bytes of shard bulk.
          type: string
    cat._types.CatPendingTasksColumns:
      oneOf:
      - "$ref": "#/components/schemas/cat._types.CatPendingTasksColumn"
      - type: array
        items:
          "$ref": "#/components/schemas/cat._types.CatPendingTasksColumn"
    cat._types.CatPendingTasksColumn:
      anyOf:
      - type: string
        enum:
        - insertOrder
        - o
        - timeInQueue
        - t
        - priority
        - p
        - source
        - s
      - type: string
    cat.pending_tasks.PendingTasksRecord:
      type: object
      properties:
        insertOrder:
          description: The task insertion order.
          type: string
        timeInQueue:
          description: Indicates how long the task has been in queue.
          type: string
        priority:
          description: The task priority.
          type: string
        source:
          description: The task source.
          type: string
    cat._types.CatPluginsColumns:
      oneOf:
      - "$ref": "#/components/schemas/cat._types.CatPluginsColumn"
      - type: array
        items:
          "$ref": "#/components/schemas/cat._types.CatPluginsColumn"
    cat._types.CatPluginsColumn:
      anyOf:
      - type: string
        enum:
        - id
        - name
        - "n"
        - component
        - c
        - version
        - v
        - description
        - d
      - type: string
    cat.plugins.PluginsRecord:
      type: object
      properties:
        id:
          description: The unique node identifier.
          allOf:
          - "$ref": "#/components/schemas/_types.NodeId"
        name:
          description: The node name.
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        component:
          description: The component name.
          type: string
        version:
          description: The component version.
          allOf:
          - "$ref": "#/components/schemas/_types.VersionString"
        description:
          description: The plugin details.
          type: string
        type:
          description: The plugin type.
          type: string
    cat._types.CatRecoveryColumns:
      oneOf:
      - "$ref": "#/components/schemas/cat._types.CatRecoveryColumn"
      - type: array
        items:
          "$ref": "#/components/schemas/cat._types.CatRecoveryColumn"
    cat._types.CatRecoveryColumn:
      anyOf:
      - type: string
        enum:
        - index
        - i
        - idx
        - shard
        - s
        - sh
        - start_time
        - start
        - start_time_millis
        - start_millis
        - stop_time
        - stop
        - stop_time_millis
        - stop_millis
        - time
        - t
        - ti
        - type
        - ty
        - stage
        - st
        - source_host
        - shost
        - source_node
        - snode
        - target_host
        - thost
        - target_node
        - tnode
        - repository
        - rep
        - snapshot
        - snap
        - files
        - f
        - files_recovered
        - fr
        - files_percent
        - fp
        - files_total
        - tf
        - bytes
        - b
        - bytes_recovered
        - br
        - bytes_percent
        - bp
        - bytes_total
        - tb
        - translog_ops
        - to
        - translog_ops_recovered
        - tor
        - translog_ops_percent
        - top
      - type: string
    cat.recovery.RecoveryRecord:
      type: object
      properties:
        index:
          description: The index name.
          allOf:
          - "$ref": "#/components/schemas/_types.IndexName"
        shard:
          description: The shard name.
          type: string
        start_time:
          description: The recovery start time.
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
        start_time_millis:
          description: The recovery start time in epoch milliseconds.
          allOf:
          - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
        stop_time:
          description: The recovery stop time.
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
        stop_time_millis:
          description: The recovery stop time in epoch milliseconds.
          allOf:
          - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
        time:
          description: The recovery time.
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        type:
          description: The recovery type.
          type: string
        stage:
          description: The recovery stage.
          type: string
        source_host:
          description: The source host.
          type: string
        source_node:
          description: The source node name.
          type: string
        target_host:
          description: The target host.
          type: string
        target_node:
          description: The target node name.
          type: string
        repository:
          description: The repository name.
          type: string
        snapshot:
          description: The snapshot name.
          type: string
        files:
          description: The number of files to recover.
          type: string
        files_recovered:
          description: The files recovered.
          type: string
        files_percent:
          description: The ratio of files recovered.
          allOf:
          - "$ref": "#/components/schemas/_types.Percentage"
        files_total:
          description: The total number of files.
          type: string
        bytes:
          description: The number of bytes to recover.
          type: string
        bytes_recovered:
          description: The bytes recovered.
          type: string
        bytes_percent:
          description: The ratio of bytes recovered.
          allOf:
          - "$ref": "#/components/schemas/_types.Percentage"
        bytes_total:
          description: The total number of bytes.
          type: string
        translog_ops:
          description: The number of translog operations to recover.
          type: string
        translog_ops_recovered:
          description: The translog operations recovered.
          type: string
        translog_ops_percent:
          description: The ratio of translog operations recovered.
          allOf:
          - "$ref": "#/components/schemas/_types.Percentage"
    cat.repositories.RepositoriesRecord:
      type: object
      properties:
        id:
          description: The unique repository identifier.
          type: string
        type:
          description: The repository type.
          type: string
    cat._types.CatSegmentsColumns:
      oneOf:
      - "$ref": "#/components/schemas/cat._types.CatSegmentsColumn"
      - type: array
        items:
          "$ref": "#/components/schemas/cat._types.CatSegmentsColumn"
    cat._types.CatSegmentsColumn:
      anyOf:
      - type: string
        enum:
        - index
        - i
        - idx
        - shard
        - s
        - sh
        - prirep
        - p
        - pr
        - primaryOrReplica
        - ip
        - segment
        - generation
        - docs.count
        - docs.deleted
        - size
        - size.memory
        - committed
        - searchable
        - version
        - compound
        - id
      - type: string
    cat.segments.SegmentsRecord:
      type: object
      properties:
        index:
          description: The index name.
          allOf:
          - "$ref": "#/components/schemas/_types.IndexName"
        shard:
          description: The shard name.
          type: string
        prirep:
          description: 'The shard type: `primary` or `replica`.'
          type: string
        ip:
          description: The IP address of the node where it lives.
          type: string
        id:
          description: The unique identifier of the node where it lives.
          allOf:
          - "$ref": "#/components/schemas/_types.NodeId"
        segment:
          description: The segment name, which is derived from the segment generation
            and used internally to create file names in the directory of the shard.
          type: string
        generation:
          description: |-
            The segment generation number.
            Elasticsearch increments this generation number for each segment written then uses this number to derive the segment name.
          type: string
        docs.count:
          description: |-
            The number of documents in the segment.
            This excludes deleted documents and counts any nested documents separately from their parents.
            It also excludes documents which were indexed recently and do not yet belong to a segment.
          type: string
        docs.deleted:
          description: |-
            The number of deleted documents in the segment, which might be higher or lower than the number of delete operations you have performed.
            This number excludes deletes that were performed recently and do not yet belong to a segment.
            Deleted documents are cleaned up by the automatic merge process if it makes sense to do so.
            Also, Elasticsearch creates extra deleted documents to internally track the recent history of operations on a shard.
          type: string
        size:
          description: The segment size in bytes.
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        size.memory:
          description: |-
            The segment memory in bytes.
            A value of `-1` indicates Elasticsearch was unable to compute this number.
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        committed:
          description: |-
            If `true`, the segment is synced to disk.
            Segments that are synced can survive a hard reboot.
            If `false`, the data from uncommitted segments is also stored in the transaction log so that Elasticsearch is able to replay changes on the next start.
          type: string
        searchable:
          description: |-
            If `true`, the segment is searchable.
            If `false`, the segment has most likely been written to disk but needs a refresh to be searchable.
          type: string
        version:
          description: The version of Lucene used to write the segment.
          allOf:
          - "$ref": "#/components/schemas/_types.VersionString"
        compound:
          description: |-
            If `true`, the segment is stored in a compound file.
            This means Lucene merged all files from the segment in a single file to save file descriptors.
          type: string
    cat._types.CatShardColumns:
      oneOf:
      - "$ref": "#/components/schemas/cat._types.CatShardColumn"
      - type: array
        items:
          "$ref": "#/components/schemas/cat._types.CatShardColumn"
    cat._types.CatShardColumn:
      anyOf:
      - type: string
        enum:
        - completion.size
        - cs
        - completionSize
        - dataset.size
        - dense_vector.value_count
        - dvc
        - denseVectorCount
        - docs
        - d
        - dc
        - fielddata.evictions
        - fe
        - fielddataEvictions
        - fielddata.memory_size
        - fm
        - fielddataMemory
        - flush.total
        - ft
        - flushTotal
        - flush.total_time
        - ftt
        - flushTotalTime
        - get.current
        - gc
        - getCurrent
        - get.exists_time
        - geti
        - getExistsTime
        - get.exists_total
        - geto
        - getExistsTotal
        - get.missing_time
        - gmti
        - getMissingTime
        - get.missing_total
        - gmto
        - getMissingTotal
        - get.time
        - gti
        - getTime
        - get.total
        - gto
        - getTotal
        - id
        - index
        - i
        - idx
        - indexing.delete_current
        - idc
        - indexingDeleteCurrent
        - indexing.delete_time
        - idti
        - indexingDeleteTime
        - indexing.delete_total
        - idto
        - indexingDeleteTotal
        - indexing.index_current
        - iic
        - indexingIndexCurrent
        - indexing.index_failed_due_to_version_conflict
        - iifvc
        - indexingIndexFailedDueToVersionConflict
        - indexing.index_failed
        - iif
        - indexingIndexFailed
        - indexing.index_time
        - iiti
        - indexingIndexTime
        - indexing.index_total
        - iito
        - indexingIndexTotal
        - ip
        - merges.current
        - mc
        - mergesCurrent
        - merges.current_docs
        - mcd
        - mergesCurrentDocs
        - merges.current_size
        - mcs
        - mergesCurrentSize
        - merges.total
        - mt
        - mergesTotal
        - merges.total_docs
        - mtd
        - mergesTotalDocs
        - merges.total_size
        - mts
        - mergesTotalSize
        - merges.total_time
        - mtt
        - mergesTotalTime
        - node
        - "n"
        - prirep
        - p
        - pr
        - primaryOrReplica
        - query_cache.evictions
        - qce
        - queryCacheEvictions
        - query_cache.memory_size
        - qcm
        - queryCacheMemory
        - recoverysource.type
        - rs
        - refresh.time
        - rti
        - refreshTime
        - refresh.total
        - rto
        - refreshTotal
        - search.fetch_current
        - sfc
        - searchFetchCurrent
        - search.fetch_time
        - sfti
        - searchFetchTime
        - search.fetch_total
        - sfto
        - searchFetchTotal
        - search.open_contexts
        - so
        - searchOpenContexts
        - search.query_current
        - sqc
        - searchQueryCurrent
        - search.query_time
        - sqti
        - searchQueryTime
        - search.query_total
        - sqto
        - searchQueryTotal
        - search.scroll_current
        - scc
        - searchScrollCurrent
        - search.scroll_time
        - scti
        - searchScrollTime
        - search.scroll_total
        - scto
        - searchScrollTotal
        - segments.count
        - sc
        - segmentsCount
        - segments.fixed_bitset_memory
        - sfbm
        - fixedBitsetMemory
        - segments.index_writer_memory
        - siwm
        - segmentsIndexWriterMemory
        - segments.memory
        - sm
        - segmentsMemory
        - segments.version_map_memory
        - svmm
        - segmentsVersionMapMemory
        - seq_no.global_checkpoint
        - sqg
        - globalCheckpoint
        - seq_no.local_checkpoint
        - sql
        - localCheckpoint
        - seq_no.max
        - sqm
        - maxSeqNo
        - shard
        - s
        - sh
        - dsparse_vector.value_count
        - svc
        - sparseVectorCount
        - state
        - st
        - store
        - sto
        - suggest.current
        - suc
        - suggestCurrent
        - suggest.time
        - suti
        - suggestTime
        - suggest.total
        - suto
        - suggestTotal
        - sync_id
        - unassigned.at
        - ua
        - unassigned.details
        - ud
        - unassigned.for
        - uf
        - unassigned.reason
        - ur
      - type: string
    cat.shards.ShardsRecord:
      type: object
      properties:
        index:
          description: The index name.
          type: string
        shard:
          description: The shard name.
          type: string
        prirep:
          description: 'The shard type: `primary` or `replica`.'
          type: string
        state:
          description: |-
            The shard state.
            Returned values include:
            `INITIALIZING`: The shard is recovering from a peer shard or gateway.
            `RELOCATING`: The shard is relocating.
            `STARTED`: The shard has started.
            `UNASSIGNED`: The shard is not assigned to any node.
          type: string
        docs:
          description: The number of documents in the shard.
          oneOf:
          - type: string
          - nullable: true
            type: string
        store:
          description: The disk space used by the shard.
          oneOf:
          - type: string
          - nullable: true
            type: string
        dataset:
          description: total size of dataset (including the cache for partially mounted
            indices)
          x-state: Generally available; Added in 8.11.0
          oneOf:
          - type: string
          - nullable: true
            type: string
        ip:
          description: The IP address of the node.
          oneOf:
          - type: string
          - nullable: true
            type: string
        id:
          description: The unique identifier for the node.
          type: string
        node:
          description: The name of node.
          oneOf:
          - type: string
          - nullable: true
            type: string
        sync_id:
          description: The sync identifier.
          type: string
        unassigned.reason:
          description: |-
            The reason for the last change to the state of an unassigned shard.
            It does not explain why the shard is currently unassigned; use the cluster allocation explain API for that information.
            Returned values include:
            `ALLOCATION_FAILED`: Unassigned as a result of a failed allocation of the shard.
            `CLUSTER_RECOVERED`: Unassigned as a result of a full cluster recovery.
            `DANGLING_INDEX_IMPORTED`: Unassigned as a result of importing a dangling index.
            `EXISTING_INDEX_RESTORED`: Unassigned as a result of restoring into a closed index.
            `FORCED_EMPTY_PRIMARY`: The shard’s allocation was last modified by forcing an empty primary using the cluster reroute API.
            `INDEX_CLOSED`: Unassigned because the index was closed.
            `INDEX_CREATED`: Unassigned as a result of an API creation of an index.
            `INDEX_REOPENED`: Unassigned as a result of opening a closed index.
            `MANUAL_ALLOCATION`: The shard’s allocation was last modified by the cluster reroute API.
            `NEW_INDEX_RESTORED`: Unassigned as a result of restoring into a new index.
            `NODE_LEFT`: Unassigned as a result of the node hosting it leaving the cluster.
            `NODE_RESTARTING`: Similar to `NODE_LEFT`, except that the node was registered as restarting using the node shutdown API.
            `PRIMARY_FAILED`: The shard was initializing as a replica, but the primary shard failed before the initialization completed.
            `REALLOCATED_REPLICA`: A better replica location is identified and causes the existing replica allocation to be cancelled.
            `REINITIALIZED`: When a shard moves from started back to initializing.
            `REPLICA_ADDED`: Unassigned as a result of explicit addition of a replica.
            `REROUTE_CANCELLED`: Unassigned as a result of explicit cancel reroute command.
          type: string
        unassigned.at:
          description: The time at which the shard became unassigned in Coordinated
            Universal Time (UTC).
          type: string
        unassigned.for:
          description: The time at which the shard was requested to be unassigned
            in Coordinated Universal Time (UTC).
          type: string
        unassigned.details:
          description: |-
            Additional details as to why the shard became unassigned.
            It does not explain why the shard is not assigned; use the cluster allocation explain API for that information.
          type: string
        recoverysource.type:
          description: The type of recovery source.
          type: string
        completion.size:
          description: The size of completion.
          type: string
        fielddata.memory_size:
          description: The used fielddata cache memory.
          type: string
        fielddata.evictions:
          description: The fielddata cache evictions.
          type: string
        query_cache.memory_size:
          description: The used query cache memory.
          type: string
        query_cache.evictions:
          description: The query cache evictions.
          type: string
        flush.total:
          description: The number of flushes.
          type: string
        flush.total_time:
          description: The time spent in flush.
          type: string
        get.current:
          description: The number of current get operations.
          type: string
        get.time:
          description: The time spent in get operations.
          type: string
        get.total:
          description: The number of get operations.
          type: string
        get.exists_time:
          description: The time spent in successful get operations.
          type: string
        get.exists_total:
          description: The number of successful get operations.
          type: string
        get.missing_time:
          description: The time spent in failed get operations.
          type: string
        get.missing_total:
          description: The number of failed get operations.
          type: string
        indexing.delete_current:
          description: The number of current deletion operations.
          type: string
        indexing.delete_time:
          description: The time spent in deletion operations.
          type: string
        indexing.delete_total:
          description: The number of delete operations.
          type: string
        indexing.index_current:
          description: The number of current indexing operations.
          type: string
        indexing.index_time:
          description: The time spent in indexing operations.
          type: string
        indexing.index_total:
          description: The number of indexing operations.
          type: string
        indexing.index_failed:
          description: The number of failed indexing operations.
          type: string
        merges.current:
          description: The number of current merge operations.
          type: string
        merges.current_docs:
          description: The number of current merging documents.
          type: string
        merges.current_size:
          description: The size of current merge operations.
          type: string
        merges.total:
          description: The number of completed merge operations.
          type: string
        merges.total_docs:
          description: The nuber of merged documents.
          type: string
        merges.total_size:
          description: The size of current merges.
          type: string
        merges.total_time:
          description: The time spent merging documents.
          type: string
        refresh.total:
          description: The total number of refreshes.
          type: string
        refresh.time:
          description: The time spent in refreshes.
          type: string
        refresh.external_total:
          description: The total nunber of external refreshes.
          type: string
        refresh.external_time:
          description: The time spent in external refreshes.
          type: string
        refresh.listeners:
          description: The number of pending refresh listeners.
          type: string
        search.fetch_current:
          description: The current fetch phase operations.
          type: string
        search.fetch_time:
          description: The time spent in fetch phase.
          type: string
        search.fetch_total:
          description: The total number of fetch operations.
          type: string
        search.open_contexts:
          description: The number of open search contexts.
          type: string
        search.query_current:
          description: The current query phase operations.
          type: string
        search.query_time:
          description: The time spent in query phase.
          type: string
        search.query_total:
          description: The total number of query phase operations.
          type: string
        search.scroll_current:
          description: The open scroll contexts.
          type: string
        search.scroll_time:
          description: The time scroll contexts were held open.
          type: string
        search.scroll_total:
          description: The number of completed scroll contexts.
          type: string
        segments.count:
          description: The number of segments.
          type: string
        segments.memory:
          description: The memory used by segments.
          type: string
        segments.index_writer_memory:
          description: The memory used by the index writer.
          type: string
        segments.version_map_memory:
          description: The memory used by the version map.
          type: string
        segments.fixed_bitset_memory:
          description: The memory used by fixed bit sets for nested object field types
            and export type filters for types referred in `_parent` fields.
          type: string
        seq_no.max:
          description: The maximum sequence number.
          type: string
        seq_no.local_checkpoint:
          description: The local checkpoint.
          type: string
        seq_no.global_checkpoint:
          description: The global checkpoint.
          type: string
        warmer.current:
          description: The number of current warmer operations.
          type: string
        warmer.total:
          description: The total number of warmer operations.
          type: string
        warmer.total_time:
          description: The time spent in warmer operations.
          type: string
        path.data:
          description: The shard data path.
          type: string
        path.state:
          description: The shard state path.
          type: string
        bulk.total_operations:
          description: The number of bulk shard operations.
          type: string
        bulk.total_time:
          description: The time spent in shard bulk operations.
          type: string
        bulk.total_size_in_bytes:
          description: The total size in bytes of shard bulk operations.
          type: string
        bulk.avg_time:
          description: The average time spent in shard bulk operations.
          type: string
        bulk.avg_size_in_bytes:
          description: The average size in bytes of shard bulk operations.
          type: string
    cat._types.CatSnapshotsColumns:
      oneOf:
      - "$ref": "#/components/schemas/cat._types.CatSnapshotsColumn"
      - type: array
        items:
          "$ref": "#/components/schemas/cat._types.CatSnapshotsColumn"
    cat._types.CatSnapshotsColumn:
      anyOf:
      - type: string
        enum:
        - id
        - snapshot
        - repository
        - re
        - repo
        - status
        - s
        - start_epoch
        - ste
        - startEpoch
        - start_time
        - sti
        - startTime
        - end_epoch
        - ete
        - endEpoch
        - end_time
        - eti
        - endTime
        - duration
        - dur
        - indices
        - i
        - successful_shards
        - ss
        - failed_shards
        - fs
        - total_shards
        - ts
        - reason
        - r
      - type: string
    cat.snapshots.SnapshotsRecord:
      type: object
      properties:
        id:
          description: The unique identifier for the snapshot.
          type: string
        repository:
          description: The repository name.
          type: string
        status:
          description: |-
            The state of the snapshot process.
            Returned values include:
            `FAILED`: The snapshot process failed.
            `INCOMPATIBLE`: The snapshot process is incompatible with the current cluster version.
            `IN_PROGRESS`: The snapshot process started but has not completed.
            `PARTIAL`: The snapshot process completed with a partial success.
            `SUCCESS`: The snapshot process completed with a full success.
          type: string
        start_epoch:
          description: The Unix epoch time (seconds since 1970-01-01 00:00:00) at
            which the snapshot process started.
          allOf:
          - "$ref": "#/components/schemas/_spec_utils.StringifiedEpochTimeUnitSeconds"
        start_time:
          description: The time (HH:MM:SS) at which the snapshot process started.
          allOf:
          - "$ref": "#/components/schemas/watcher._types.ScheduleTimeOfDay"
        end_epoch:
          description: The Unix epoch time (seconds since 1970-01-01 00:00:00) at
            which the snapshot process ended.
          allOf:
          - "$ref": "#/components/schemas/_spec_utils.StringifiedEpochTimeUnitSeconds"
        end_time:
          description: The time (HH:MM:SS) at which the snapshot process ended.
          allOf:
          - "$ref": "#/components/schemas/_types.TimeOfDay"
        duration:
          description: The time it took the snapshot process to complete, in time
            units.
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        indices:
          description: The number of indices in the snapshot.
          type: string
        successful_shards:
          description: The number of successful shards in the snapshot.
          type: string
        failed_shards:
          description: The number of failed shards in the snapshot.
          type: string
        total_shards:
          description: The total number of shards in the snapshot.
          type: string
        reason:
          description: The reason for any snapshot failures.
          type: string
    watcher._types.ScheduleTimeOfDay:
      description: A time of day, expressed either as `hh:mm`, `noon`, `midnight`,
        or an hour/minutes structure.
      oneOf:
      - type: string
      - "$ref": "#/components/schemas/watcher._types.HourAndMinute"
    watcher._types.HourAndMinute:
      type: object
      properties:
        hour:
          type: array
          items:
            type: number
        minute:
          type: array
          items:
            type: number
      required:
      - hour
      - minute
    cat._types.CatTasksColumns:
      oneOf:
      - "$ref": "#/components/schemas/cat._types.CatTasksColumn"
      - type: array
        items:
          "$ref": "#/components/schemas/cat._types.CatTasksColumn"
    cat._types.CatTasksColumn:
      anyOf:
      - type: string
        enum:
        - id
        - action
        - ac
        - task_id
        - ti
        - parent_task_id
        - pti
        - type
        - ty
        - start_time
        - start
        - timestamp
        - ts
        - hms
        - hhmmss
        - running_time_ns
        - time
        - running_time
        - time
        - node_id
        - ni
        - ip
        - i
        - port
        - po
        - node
        - "n"
        - version
        - v
        - x_opaque_id
        - x
      - type: string
    cat.tasks.TasksRecord:
      type: object
      properties:
        id:
          description: The identifier of the task with the node.
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        action:
          description: The task action.
          type: string
        task_id:
          description: The unique task identifier.
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        parent_task_id:
          description: The parent task identifier.
          type: string
        type:
          description: The task type.
          type: string
        start_time:
          description: The start time in milliseconds.
          type: string
        timestamp:
          description: The start time in `HH:MM:SS` format.
          type: string
        running_time_ns:
          description: The running time in nanoseconds.
          type: string
        running_time:
          description: The running time.
          type: string
        node_id:
          description: The unique node identifier.
          allOf:
          - "$ref": "#/components/schemas/_types.NodeId"
        ip:
          description: The IP address for the node.
          type: string
        port:
          description: The bound transport port for the node.
          type: string
        node:
          description: The node name.
          type: string
        version:
          description: The Elasticsearch version.
          allOf:
          - "$ref": "#/components/schemas/_types.VersionString"
        x_opaque_id:
          description: The X-Opaque-ID header.
          type: string
        description:
          description: The task action description.
          type: string
    cat._types.CatTemplatesColumns:
      oneOf:
      - "$ref": "#/components/schemas/cat._types.CatTemplatesColumn"
      - type: array
        items:
          "$ref": "#/components/schemas/cat._types.CatTemplatesColumn"
    cat._types.CatTemplatesColumn:
      anyOf:
      - type: string
        enum:
        - name
        - "n"
        - index_patterns
        - t
        - order
        - o
        - p
        - version
        - v
        - composed_of
        - c
      - type: string
    cat.templates.TemplatesRecord:
      type: object
      properties:
        name:
          description: The template name.
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        index_patterns:
          description: The template index patterns.
          type: string
        order:
          description: The template application order or priority number.
          type: string
        version:
          description: The template version.
          oneOf:
          - "$ref": "#/components/schemas/_types.VersionString"
          - nullable: true
            type: string
        composed_of:
          description: The component templates that comprise the index template.
          type: string
    cat._types.CatThreadPoolColumns:
      oneOf:
      - "$ref": "#/components/schemas/cat._types.CatThreadPoolColumn"
      - type: array
        items:
          "$ref": "#/components/schemas/cat._types.CatThreadPoolColumn"
    cat._types.CatThreadPoolColumn:
      anyOf:
      - type: string
        enum:
        - active
        - a
        - completed
        - c
        - core
        - cr
        - ephemeral_id
        - eid
        - host
        - h
        - ip
        - i
        - keep_alive
        - k
        - largest
        - l
        - max
        - mx
        - name
        - node_id
        - id
        - node_name
        - pid
        - p
        - pool_size
        - psz
        - port
        - po
        - queue
        - q
        - queue_size
        - qs
        - rejected
        - r
        - size
        - sz
        - type
        - t
      - type: string
    cat.thread_pool.ThreadPoolRecord:
      type: object
      properties:
        node_name:
          description: The node name.
          type: string
        node_id:
          description: The persistent node identifier.
          allOf:
          - "$ref": "#/components/schemas/_types.NodeId"
        ephemeral_node_id:
          description: The ephemeral node identifier.
          type: string
        pid:
          description: The process identifier.
          type: string
        host:
          description: The host name for the current node.
          type: string
        ip:
          description: The IP address for the current node.
          type: string
        port:
          description: The bound transport port for the current node.
          type: string
        name:
          description: The thread pool name.
          type: string
        type:
          description: |-
            The thread pool type.
            Returned values include `fixed`, `fixed_auto_queue_size`, `direct`, and `scaling`.
          type: string
        active:
          description: The number of active threads in the current thread pool.
          type: string
        pool_size:
          description: The number of threads in the current thread pool.
          type: string
        queue:
          description: The number of tasks currently in queue.
          type: string
        queue_size:
          description: The maximum number of tasks permitted in the queue.
          type: string
        rejected:
          description: The number of rejected tasks.
          type: string
        largest:
          description: The highest number of active threads in the current thread
            pool.
          type: string
        completed:
          description: The number of completed tasks.
          type: string
        core:
          description: The core number of active threads allowed in a scaling thread
            pool.
          oneOf:
          - type: string
          - nullable: true
            type: string
        max:
          description: The maximum number of active threads allowed in a scaling thread
            pool.
          oneOf:
          - type: string
          - nullable: true
            type: string
        size:
          description: The number of active threads allowed in a fixed thread pool.
          oneOf:
          - type: string
          - nullable: true
            type: string
        keep_alive:
          description: The thread keep alive time.
          oneOf:
          - type: string
          - nullable: true
            type: string
    cat._types.CatTransformColumns:
      oneOf:
      - "$ref": "#/components/schemas/cat._types.CatTransformColumn"
      - type: array
        items:
          "$ref": "#/components/schemas/cat._types.CatTransformColumn"
    cat._types.CatTransformColumn:
      type: string
    cat.transforms.TransformsRecord:
      type: object
      properties:
        id:
          description: The transform identifier.
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        state:
          description: |-
            The status of the transform.
            Returned values include:
            `aborting`: The transform is aborting.
            `failed: The transform failed. For more information about the failure, check the `reason` field.
            `indexing`: The transform is actively processing data and creating new documents.
            `started`: The transform is running but not actively indexing data.
            `stopped`: The transform is stopped.
            `stopping`: The transform is stopping.
          type: string
        checkpoint:
          description: The sequence number for the checkpoint.
          type: string
        documents_processed:
          description: The number of documents that have been processed from the source
            index of the transform.
          type: string
        checkpoint_progress:
          description: The progress of the next checkpoint that is currently in progress.
          oneOf:
          - type: string
          - nullable: true
            type: string
        last_search_time:
          description: |-
            The timestamp of the last search in the source indices.
            This field is shown only if the transform is running.
          oneOf:
          - type: string
          - nullable: true
            type: string
        changes_last_detection_time:
          description: The timestamp when changes were last detected in the source
            indices.
          oneOf:
          - type: string
          - nullable: true
            type: string
        create_time:
          description: The time the transform was created.
          type: string
        version:
          description: The version of Elasticsearch that existed on the node when
            the transform was created.
          allOf:
          - "$ref": "#/components/schemas/_types.VersionString"
        source_index:
          description: The source indices for the transform.
          type: string
        dest_index:
          description: The destination index for the transform.
          type: string
        pipeline:
          description: The unique identifier for the ingest pipeline.
          type: string
        description:
          description: The description of the transform.
          type: string
        transform_type:
          description: 'The type of transform: `batch` or `continuous`.'
          type: string
        frequency:
          description: The interval between checks for changes in the source indices
            when the transform is running continuously.
          type: string
        max_page_search_size:
          description: The initial page size that is used for the composite aggregation
            for each checkpoint.
          type: string
        docs_per_second:
          description: The number of input documents per second.
          type: string
        reason:
          description: If a transform has a `failed` state, these details describe
            the reason for failure.
          type: string
        search_total:
          description: The total number of search operations on the source index for
            the transform.
          type: string
        search_failure:
          description: The total number of search failures.
          type: string
        search_time:
          description: The total amount of search time, in milliseconds.
          type: string
        index_total:
          description: The total number of index operations done by the transform.
          type: string
        index_failure:
          description: The total number of indexing failures.
          type: string
        index_time:
          description: The total time spent indexing documents, in milliseconds.
          type: string
        documents_indexed:
          description: The number of documents that have been indexed into the destination
            index for the transform.
          type: string
        delete_time:
          description: The total time spent deleting documents, in milliseconds.
          type: string
        documents_deleted:
          description: The number of documents deleted from the destination index
            due to the retention policy for the transform.
          type: string
        trigger_count:
          description: |-
            The number of times the transform has been triggered by the scheduler.
            For example, the scheduler triggers the transform indexer to check for updates or ingest new data at an interval specified in the `frequency` property.
          type: string
        pages_processed:
          description: |-
            The number of search or bulk index operations processed.
            Documents are processed in batches instead of individually.
          type: string
        processing_time:
          description: The total time spent processing results, in milliseconds.
          type: string
        checkpoint_duration_time_exp_avg:
          description: The exponential moving average of the duration of the checkpoint,
            in milliseconds.
          type: string
        indexed_documents_exp_avg:
          description: The exponential moving average of the number of new documents
            that have been indexed.
          type: string
        processed_documents_exp_avg:
          description: The exponential moving average of the number of documents that
            have been processed.
          type: string
    indices._types.IndexSettings:
      type: object
      x-model: true
      externalDocs:
        description: Index settings
        url: https://www.elastic.co/docs/reference/elasticsearch/index-settings/
    indices._types.SoftDeletes:
      type: object
      properties:
        enabled:
          description: Indicates whether soft deletes are enabled on the index.
          default: true
          type: boolean
        retention_lease:
          description: |-
            The maximum period to retain a shard history retention lease before it is considered expired.
            Shard history retention leases ensure that soft deletes are retained during merges on the Lucene
            index. If a soft delete is merged away before it can be replicated to a follower the following
            process will fail due to incomplete history on the leader.
          allOf:
          - "$ref": "#/components/schemas/indices._types.RetentionLease"
    indices._types.RetentionLease:
      type: object
      properties:
        period:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
      required:
      - period
    indices._types.IndexSegmentSort:
      type: object
      properties:
        field:
          allOf:
          - "$ref": "#/components/schemas/_types.Fields"
        order:
          description: |2+


            Supported values include: `asc` (or `ASC`), `desc` (or `DESC`)

          oneOf:
          - "$ref": "#/components/schemas/indices._types.SegmentSortOrder"
          - type: array
            items:
              "$ref": "#/components/schemas/indices._types.SegmentSortOrder"
        mode:
          description: |2+


            Supported values include: `min` (or `MIN`), `max` (or `MAX`)

          oneOf:
          - "$ref": "#/components/schemas/indices._types.SegmentSortMode"
          - type: array
            items:
              "$ref": "#/components/schemas/indices._types.SegmentSortMode"
        missing:
          description: |2+


            Supported values include: `_last`, `_first`

          oneOf:
          - "$ref": "#/components/schemas/indices._types.SegmentSortMissing"
          - type: array
            items:
              "$ref": "#/components/schemas/indices._types.SegmentSortMissing"
    indices._types.SegmentSortOrder:
      type: string
      enum:
      - asc
      - ASC
      - desc
      - DESC
    indices._types.SegmentSortMode:
      type: string
      enum:
      - min
      - MIN
      - max
      - MAX
    indices._types.SegmentSortMissing:
      type: string
      enum:
      - _last
      - _first
    indices._types.IndexCheckOnStartup:
      type: string
      enum:
      - 'true'
      - 'false'
      - checksum
    _spec_utils.Stringifiedinteger:
      description: |-
        Some APIs will return values such as numbers also as a string (notably epoch timestamps). This behavior
        is used to capture this behavior while keeping the semantics of the field type.

        Depending on the target language, code generators can keep the union or remove it and leniently parse
        strings to the target type.
      oneOf:
      - type: number
      - type: string
    _spec_utils.NullValue:
      nullable: true
      description: |-
        A `null` value that is to be interpreted as an actual value, unless other uses of `null` that are equivalent
        to a missing value. It is used for exemple in settings, where using the `NullValue` for a setting will reset
        it to its default value.
      type: string
    indices._types.Merge:
      type: object
      properties:
        scheduler:
          allOf:
          - "$ref": "#/components/schemas/indices._types.MergeScheduler"
    indices._types.MergeScheduler:
      type: object
      properties:
        max_thread_count:
          allOf:
          - "$ref": "#/components/schemas/_spec_utils.Stringifiedinteger"
        max_merge_count:
          allOf:
          - "$ref": "#/components/schemas/_spec_utils.Stringifiedinteger"
    indices._types.SettingsSearch:
      type: object
      properties:
        idle:
          allOf:
          - "$ref": "#/components/schemas/indices._types.SearchIdle"
        slowlog:
          allOf:
          - "$ref": "#/components/schemas/indices._types.SlowlogSettings"
    indices._types.SearchIdle:
      type: object
      properties:
        after:
          default: 30s
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
    indices._types.SlowlogSettings:
      type: object
      properties:
        level:
          type: string
        source:
          type: number
        reformat:
          type: boolean
        threshold:
          allOf:
          - "$ref": "#/components/schemas/indices._types.SlowlogTresholds"
    indices._types.SlowlogTresholds:
      type: object
      properties:
        query:
          allOf:
          - "$ref": "#/components/schemas/indices._types.SlowlogTresholdLevels"
        fetch:
          allOf:
          - "$ref": "#/components/schemas/indices._types.SlowlogTresholdLevels"
    indices._types.SlowlogTresholdLevels:
      type: object
      properties:
        warn:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        info:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        debug:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        trace:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
    indices._types.IndexSettingBlocks:
      type: object
      properties:
        read_only:
          allOf:
          - "$ref": "#/components/schemas/_spec_utils.Stringifiedboolean"
        read_only_allow_delete:
          allOf:
          - "$ref": "#/components/schemas/_spec_utils.Stringifiedboolean"
        read:
          allOf:
          - "$ref": "#/components/schemas/_spec_utils.Stringifiedboolean"
        write:
          allOf:
          - "$ref": "#/components/schemas/_spec_utils.Stringifiedboolean"
        metadata:
          allOf:
          - "$ref": "#/components/schemas/_spec_utils.Stringifiedboolean"
    _spec_utils.Stringifiedboolean:
      description: |-
        Some APIs will return values such as numbers also as a string (notably epoch timestamps). This behavior
        is used to capture this behavior while keeping the semantics of the field type.

        Depending on the target language, code generators can keep the union or remove it and leniently parse
        strings to the target type.
      oneOf:
      - type: boolean
      - type: string
    indices._types.SettingsAnalyze:
      type: object
      properties:
        max_token_count:
          default: '10000'
          allOf:
          - "$ref": "#/components/schemas/_spec_utils.Stringifiedinteger"
    indices._types.SettingsHighlight:
      type: object
      properties:
        max_analyzed_offset:
          default: 1000000
          type: number
    indices._types.IndexRouting:
      type: object
      properties:
        allocation:
          allOf:
          - "$ref": "#/components/schemas/indices._types.IndexRoutingAllocation"
        rebalance:
          allOf:
          - "$ref": "#/components/schemas/indices._types.IndexRoutingRebalance"
    indices._types.IndexRoutingAllocation:
      type: object
      properties:
        enable:
          allOf:
          - "$ref": "#/components/schemas/indices._types.IndexRoutingAllocationOptions"
        include:
          allOf:
          - "$ref": "#/components/schemas/indices._types.IndexRoutingAllocationInclude"
        initial_recovery:
          allOf:
          - "$ref": "#/components/schemas/indices._types.IndexRoutingAllocationInitialRecovery"
        disk:
          allOf:
          - "$ref": "#/components/schemas/indices._types.IndexRoutingAllocationDisk"
    indices._types.IndexRoutingAllocationOptions:
      type: string
      enum:
      - all
      - primaries
      - new_primaries
      - none
    indices._types.IndexRoutingAllocationInclude:
      type: object
      properties:
        _tier_preference:
          type: string
        _id:
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
    indices._types.IndexRoutingAllocationInitialRecovery:
      type: object
      properties:
        _id:
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
    indices._types.IndexRoutingAllocationDisk:
      type: object
      properties:
        threshold_enabled:
          oneOf:
          - type: boolean
          - type: string
    indices._types.IndexRoutingRebalance:
      type: object
      properties:
        enable:
          allOf:
          - "$ref": "#/components/schemas/indices._types.IndexRoutingRebalanceOptions"
      required:
      - enable
    indices._types.IndexRoutingRebalanceOptions:
      type: string
      enum:
      - all
      - primaries
      - replicas
      - none
    _types.PipelineName:
      type: string
    indices._types.IndexSettingsLifecycle:
      type: object
      properties:
        name:
          description: The name of the policy to use to manage the index. For information
            about how Elasticsearch applies policy changes, see Policy updates.
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        indexing_complete:
          description: |-
            Indicates whether or not the index has been rolled over. Automatically set to true when ILM completes the rollover action.
            You can explicitly set it to skip rollover.
          default: 'false'
          allOf:
          - "$ref": "#/components/schemas/_spec_utils.Stringifiedboolean"
        origination_date:
          description: |-
            If specified, this is the timestamp used to calculate the index age for its phase transitions. Use this setting
            if you create a new index that contains old data and want to use the original creation date to calculate the index
            age. Specified as a Unix epoch value in milliseconds.
          default: 0
          type: number
        parse_origination_date:
          description: |-
            Set to true to parse the origination date from the index name. This origination date is used to calculate the index age
            for its phase transitions. The index name must match the pattern ^.*-{date_format}-\\d+, where the date_format is
            yyyy.MM.dd and the trailing digits are optional. An index that was rolled over would normally match the full format,
            for example logs-2016.10.31-000002). If the index name doesn’t match the pattern, index creation fails.
          type: boolean
        step:
          allOf:
          - "$ref": "#/components/schemas/indices._types.IndexSettingsLifecycleStep"
        rollover_alias:
          description: |-
            The index alias to update when the index rolls over. Specify when using a policy that contains a rollover action.
            When the index rolls over, the alias is updated to reflect that the index is no longer the write index. For more
            information about rolling indices, see Rollover.
          default: ''
          type: string
        prefer_ilm:
          description: |-
            Preference for the system that manages a data stream backing index (preferring ILM when both ILM and DLM are
            applicable for an index).
          default: 'true'
          oneOf:
          - type: boolean
          - type: string
    indices._types.IndexSettingsLifecycleStep:
      type: object
      properties:
        wait_time_threshold:
          description: |-
            Time to wait for the cluster to resolve allocation issues during an ILM shrink action. Must be greater than 1h (1 hour).
            See Shard allocation for shrink.
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
    _spec_utils.StringifiedEpochTimeUnitMillis:
      description: |-
        Some APIs will return values such as numbers also as a string (notably epoch timestamps). This behavior
        is used to capture this behavior while keeping the semantics of the field type.

        Depending on the target language, code generators can keep the union or remove it and leniently parse
        strings to the target type.
      oneOf:
      - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
      - type: string
    _types.Uuid:
      type: string
    indices._types.IndexVersioning:
      type: object
      properties:
        created:
          allOf:
          - "$ref": "#/components/schemas/_types.VersionString"
        created_string:
          type: string
    indices._types.Translog:
      type: object
      properties:
        sync_interval:
          description: |-
            How often the translog is fsynced to disk and committed, regardless of write operations.
            Values less than 100ms are not allowed.
          default: 5s
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        durability:
          description: |+
            Whether or not to `fsync` and commit the translog after every index, delete, update, or bulk request.

            Supported values include:
              - `request` (or `REQUEST`): (default) fsync and commit after every request. In the event of hardware failure, all acknowledged writes
            will already have been committed to disk.
              - `async` (or `ASYNC`): fsync and commit in the background every sync_interval. In the event of a failure, all acknowledged writes
            since the last automatic commit will be discarded.

          default: string
          allOf:
          - "$ref": "#/components/schemas/indices._types.TranslogDurability"
        flush_threshold_size:
          description: |-
            The translog stores all operations that are not yet safely persisted in Lucene (i.e., are not
            part of a Lucene commit point). Although these operations are available for reads, they will need
            to be replayed if the shard was stopped and had to be recovered. This setting controls the
            maximum total size of these operations, to prevent recoveries from taking too long. Once the
            maximum size has been reached a flush will happen, generating a new Lucene commit point.
          default: 512mb
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        retention:
          allOf:
          - "$ref": "#/components/schemas/indices._types.TranslogRetention"
    indices._types.TranslogDurability:
      type: string
      enum:
      - request
      - REQUEST
      - async
      - ASYNC
    indices._types.TranslogRetention:
      type: object
      properties:
        size:
          description: |-
            This controls the total size of translog files to keep for each shard. Keeping more translog files increases
            the chance of performing an operation based sync when recovering a replica. If the translog files are not
            sufficient, replica recovery will fall back to a file based sync. This setting is ignored, and should not be
            set, if soft deletes are enabled. Soft deletes are enabled by default in indices created in Elasticsearch
            versions 7.0.0 and later.
          default: 512mb
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        age:
          description: |-
            This controls the maximum duration for which translog files are kept by each shard. Keeping more
            translog files increases the chance of performing an operation based sync when recovering replicas. If
            the translog files are not sufficient, replica recovery will fall back to a file based sync. This setting
            is ignored, and should not be set, if soft deletes are enabled. Soft deletes are enabled by default in
            indices created in Elasticsearch versions 7.0.0 and later.
          default: 12h
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
    indices._types.SettingsQueryString:
      type: object
      properties:
        lenient:
          allOf:
          - "$ref": "#/components/schemas/_spec_utils.Stringifiedboolean"
      required:
      - lenient
    indices._types.IndexSettingsAnalysis:
      type: object
      properties:
        analyzer:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/_types.analysis.Analyzer"
        char_filter:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/_types.analysis.CharFilter"
        filter:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/_types.analysis.TokenFilter"
        normalizer:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/_types.analysis.Normalizer"
        tokenizer:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/_types.analysis.Tokenizer"
    _types.analysis.Analyzer:
      discriminator:
        propertyName: type
        mapping:
          arabic: "#/components/schemas/_types.analysis.ArabicAnalyzer"
          armenian: "#/components/schemas/_types.analysis.ArmenianAnalyzer"
          basque: "#/components/schemas/_types.analysis.BasqueAnalyzer"
          bengali: "#/components/schemas/_types.analysis.BengaliAnalyzer"
          brazilian: "#/components/schemas/_types.analysis.BrazilianAnalyzer"
          bulgarian: "#/components/schemas/_types.analysis.BulgarianAnalyzer"
          catalan: "#/components/schemas/_types.analysis.CatalanAnalyzer"
          chinese: "#/components/schemas/_types.analysis.ChineseAnalyzer"
          cjk: "#/components/schemas/_types.analysis.CjkAnalyzer"
          custom: "#/components/schemas/_types.analysis.CustomAnalyzer"
          czech: "#/components/schemas/_types.analysis.CzechAnalyzer"
          danish: "#/components/schemas/_types.analysis.DanishAnalyzer"
          dutch: "#/components/schemas/_types.analysis.DutchAnalyzer"
          english: "#/components/schemas/_types.analysis.EnglishAnalyzer"
          estonian: "#/components/schemas/_types.analysis.EstonianAnalyzer"
          fingerprint: "#/components/schemas/_types.analysis.FingerprintAnalyzer"
          finnish: "#/components/schemas/_types.analysis.FinnishAnalyzer"
          french: "#/components/schemas/_types.analysis.FrenchAnalyzer"
          galician: "#/components/schemas/_types.analysis.GalicianAnalyzer"
          german: "#/components/schemas/_types.analysis.GermanAnalyzer"
          greek: "#/components/schemas/_types.analysis.GreekAnalyzer"
          hindi: "#/components/schemas/_types.analysis.HindiAnalyzer"
          hungarian: "#/components/schemas/_types.analysis.HungarianAnalyzer"
          icu_analyzer: "#/components/schemas/_types.analysis.IcuAnalyzer"
          indonesian: "#/components/schemas/_types.analysis.IndonesianAnalyzer"
          irish: "#/components/schemas/_types.analysis.IrishAnalyzer"
          italian: "#/components/schemas/_types.analysis.ItalianAnalyzer"
          keyword: "#/components/schemas/_types.analysis.KeywordAnalyzer"
          kuromoji: "#/components/schemas/_types.analysis.KuromojiAnalyzer"
          latvian: "#/components/schemas/_types.analysis.LatvianAnalyzer"
          lithuanian: "#/components/schemas/_types.analysis.LithuanianAnalyzer"
          nori: "#/components/schemas/_types.analysis.NoriAnalyzer"
          norwegian: "#/components/schemas/_types.analysis.NorwegianAnalyzer"
          pattern: "#/components/schemas/_types.analysis.PatternAnalyzer"
          persian: "#/components/schemas/_types.analysis.PersianAnalyzer"
          portuguese: "#/components/schemas/_types.analysis.PortugueseAnalyzer"
          romanian: "#/components/schemas/_types.analysis.RomanianAnalyzer"
          russian: "#/components/schemas/_types.analysis.RussianAnalyzer"
          serbian: "#/components/schemas/_types.analysis.SerbianAnalyzer"
          simple: "#/components/schemas/_types.analysis.SimpleAnalyzer"
          snowball: "#/components/schemas/_types.analysis.SnowballAnalyzer"
          sorani: "#/components/schemas/_types.analysis.SoraniAnalyzer"
          spanish: "#/components/schemas/_types.analysis.SpanishAnalyzer"
          standard: "#/components/schemas/_types.analysis.StandardAnalyzer"
          stop: "#/components/schemas/_types.analysis.StopAnalyzer"
          swedish: "#/components/schemas/_types.analysis.SwedishAnalyzer"
          thai: "#/components/schemas/_types.analysis.ThaiAnalyzer"
          turkish: "#/components/schemas/_types.analysis.TurkishAnalyzer"
          whitespace: "#/components/schemas/_types.analysis.WhitespaceAnalyzer"
      oneOf:
      - "$ref": "#/components/schemas/_types.analysis.CustomAnalyzer"
      - "$ref": "#/components/schemas/_types.analysis.FingerprintAnalyzer"
      - "$ref": "#/components/schemas/_types.analysis.KeywordAnalyzer"
      - "$ref": "#/components/schemas/_types.analysis.NoriAnalyzer"
      - "$ref": "#/components/schemas/_types.analysis.PatternAnalyzer"
      - "$ref": "#/components/schemas/_types.analysis.SimpleAnalyzer"
      - "$ref": "#/components/schemas/_types.analysis.StandardAnalyzer"
      - "$ref": "#/components/schemas/_types.analysis.StopAnalyzer"
      - "$ref": "#/components/schemas/_types.analysis.WhitespaceAnalyzer"
      - "$ref": "#/components/schemas/_types.analysis.IcuAnalyzer"
      - "$ref": "#/components/schemas/_types.analysis.KuromojiAnalyzer"
      - "$ref": "#/components/schemas/_types.analysis.SnowballAnalyzer"
      - "$ref": "#/components/schemas/_types.analysis.ArabicAnalyzer"
      - "$ref": "#/components/schemas/_types.analysis.ArmenianAnalyzer"
      - "$ref": "#/components/schemas/_types.analysis.BasqueAnalyzer"
      - "$ref": "#/components/schemas/_types.analysis.BengaliAnalyzer"
      - "$ref": "#/components/schemas/_types.analysis.BrazilianAnalyzer"
      - "$ref": "#/components/schemas/_types.analysis.BulgarianAnalyzer"
      - "$ref": "#/components/schemas/_types.analysis.CatalanAnalyzer"
      - "$ref": "#/components/schemas/_types.analysis.ChineseAnalyzer"
      - "$ref": "#/components/schemas/_types.analysis.CjkAnalyzer"
      - "$ref": "#/components/schemas/_types.analysis.CzechAnalyzer"
      - "$ref": "#/components/schemas/_types.analysis.DanishAnalyzer"
      - "$ref": "#/components/schemas/_types.analysis.DutchAnalyzer"
      - "$ref": "#/components/schemas/_types.analysis.EnglishAnalyzer"
      - "$ref": "#/components/schemas/_types.analysis.EstonianAnalyzer"
      - "$ref": "#/components/schemas/_types.analysis.FinnishAnalyzer"
      - "$ref": "#/components/schemas/_types.analysis.FrenchAnalyzer"
      - "$ref": "#/components/schemas/_types.analysis.GalicianAnalyzer"
      - "$ref": "#/components/schemas/_types.analysis.GermanAnalyzer"
      - "$ref": "#/components/schemas/_types.analysis.GreekAnalyzer"
      - "$ref": "#/components/schemas/_types.analysis.HindiAnalyzer"
      - "$ref": "#/components/schemas/_types.analysis.HungarianAnalyzer"
      - "$ref": "#/components/schemas/_types.analysis.IndonesianAnalyzer"
      - "$ref": "#/components/schemas/_types.analysis.IrishAnalyzer"
      - "$ref": "#/components/schemas/_types.analysis.ItalianAnalyzer"
      - "$ref": "#/components/schemas/_types.analysis.LatvianAnalyzer"
      - "$ref": "#/components/schemas/_types.analysis.LithuanianAnalyzer"
      - "$ref": "#/components/schemas/_types.analysis.NorwegianAnalyzer"
      - "$ref": "#/components/schemas/_types.analysis.PersianAnalyzer"
      - "$ref": "#/components/schemas/_types.analysis.PortugueseAnalyzer"
      - "$ref": "#/components/schemas/_types.analysis.RomanianAnalyzer"
      - "$ref": "#/components/schemas/_types.analysis.RussianAnalyzer"
      - "$ref": "#/components/schemas/_types.analysis.SerbianAnalyzer"
      - "$ref": "#/components/schemas/_types.analysis.SoraniAnalyzer"
      - "$ref": "#/components/schemas/_types.analysis.SpanishAnalyzer"
      - "$ref": "#/components/schemas/_types.analysis.SwedishAnalyzer"
      - "$ref": "#/components/schemas/_types.analysis.TurkishAnalyzer"
      - "$ref": "#/components/schemas/_types.analysis.ThaiAnalyzer"
    _types.analysis.CustomAnalyzer:
      type: object
      properties:
        type:
          type: string
          enum:
          - custom
        char_filter:
          oneOf:
          - type: string
          - type: array
            items:
              type: string
        filter:
          oneOf:
          - type: string
          - type: array
            items:
              type: string
        position_increment_gap:
          type: number
        position_offset_gap:
          type: number
        tokenizer:
          type: string
      required:
      - type
      - tokenizer
    _types.analysis.FingerprintAnalyzer:
      type: object
      properties:
        type:
          type: string
          enum:
          - fingerprint
        version:
          deprecated: true
          allOf:
          - "$ref": "#/components/schemas/_types.VersionString"
        max_output_size:
          description: |-
            The maximum token size to emit. Tokens larger than this size will be discarded.
            Defaults to `255`
          default: 255
          type: number
        separator:
          description: |-
            The character to use to concatenate the terms.
            Defaults to a space.
          type: string
        stopwords:
          description: |-
            A pre-defined stop words list like `_english_` or an array containing a list of stop words.
            Defaults to `_none_`.
          default: _none_
          allOf:
          - "$ref": "#/components/schemas/_types.analysis.StopWords"
        stopwords_path:
          description: The path to a file containing stop words.
          type: string
      required:
      - type
    _types.analysis.KeywordAnalyzer:
      type: object
      properties:
        type:
          type: string
          enum:
          - keyword
        version:
          deprecated: true
          allOf:
          - "$ref": "#/components/schemas/_types.VersionString"
      required:
      - type
    _types.analysis.NoriAnalyzer:
      type: object
      properties:
        type:
          type: string
          enum:
          - nori
        version:
          deprecated: true
          allOf:
          - "$ref": "#/components/schemas/_types.VersionString"
        decompound_mode:
          allOf:
          - "$ref": "#/components/schemas/_types.analysis.NoriDecompoundMode"
        stoptags:
          type: array
          items:
            type: string
        user_dictionary:
          type: string
      required:
      - type
    _types.analysis.NoriDecompoundMode:
      type: string
      enum:
      - discard
      - none
      - mixed
    _types.analysis.PatternAnalyzer:
      type: object
      properties:
        type:
          type: string
          enum:
          - pattern
        version:
          deprecated: true
          allOf:
          - "$ref": "#/components/schemas/_types.VersionString"
        flags:
          description: Java regular expression flags. Flags should be pipe-separated,
            eg "CASE_INSENSITIVE|COMMENTS".
          type: string
        lowercase:
          description: |-
            Should terms be lowercased or not.
            Defaults to `true`.
          default: true
          type: boolean
        pattern:
          description: |-
            A Java regular expression.
            Defaults to `\W+`.
          default: "\\W+"
          type: string
        stopwords:
          description: |-
            A pre-defined stop words list like `_english_` or an array containing a list of stop words.
            Defaults to `_none_`.
          default: _none_
          allOf:
          - "$ref": "#/components/schemas/_types.analysis.StopWords"
        stopwords_path:
          description: The path to a file containing stop words.
          type: string
      required:
      - type
    _types.analysis.SimpleAnalyzer:
      type: object
      properties:
        type:
          type: string
          enum:
          - simple
        version:
          deprecated: true
          allOf:
          - "$ref": "#/components/schemas/_types.VersionString"
      required:
      - type
    _types.analysis.StandardAnalyzer:
      type: object
      properties:
        type:
          type: string
          enum:
          - standard
        max_token_length:
          description: |-
            The maximum token length. If a token is seen that exceeds this length then it is split at `max_token_length` intervals.
            Defaults to `255`.
          default: 255
          type: number
        stopwords:
          description: |-
            A pre-defined stop words list like `_english_` or an array containing a list of stop words.
            Defaults to `_none_`.
          default: _none_
          allOf:
          - "$ref": "#/components/schemas/_types.analysis.StopWords"
        stopwords_path:
          description: The path to a file containing stop words.
          type: string
      required:
      - type
    _types.analysis.StopAnalyzer:
      type: object
      properties:
        type:
          type: string
          enum:
          - stop
        version:
          deprecated: true
          allOf:
          - "$ref": "#/components/schemas/_types.VersionString"
        stopwords:
          description: |-
            A pre-defined stop words list like `_english_` or an array containing a list of stop words.
            Defaults to `_none_`.
          default: _none_
          allOf:
          - "$ref": "#/components/schemas/_types.analysis.StopWords"
        stopwords_path:
          description: The path to a file containing stop words.
          type: string
      required:
      - type
    _types.analysis.WhitespaceAnalyzer:
      type: object
      properties:
        type:
          type: string
          enum:
          - whitespace
        version:
          deprecated: true
          allOf:
          - "$ref": "#/components/schemas/_types.VersionString"
      required:
      - type
    _types.analysis.IcuAnalyzer:
      type: object
      properties:
        type:
          type: string
          enum:
          - icu_analyzer
        method:
          allOf:
          - "$ref": "#/components/schemas/_types.analysis.IcuNormalizationType"
        mode:
          allOf:
          - "$ref": "#/components/schemas/_types.analysis.IcuNormalizationMode"
      required:
      - type
      - method
      - mode
    _types.analysis.IcuNormalizationType:
      type: string
      enum:
      - nfc
      - nfkc
      - nfkc_cf
    _types.analysis.IcuNormalizationMode:
      type: string
      enum:
      - decompose
      - compose
    _types.analysis.KuromojiAnalyzer:
      type: object
      properties:
        type:
          type: string
          enum:
          - kuromoji
        mode:
          allOf:
          - "$ref": "#/components/schemas/_types.analysis.KuromojiTokenizationMode"
        user_dictionary:
          type: string
      required:
      - type
    _types.analysis.KuromojiTokenizationMode:
      type: string
      enum:
      - normal
      - search
      - extended
    _types.analysis.SnowballAnalyzer:
      type: object
      properties:
        type:
          type: string
          enum:
          - snowball
        version:
          deprecated: true
          allOf:
          - "$ref": "#/components/schemas/_types.VersionString"
        language:
          allOf:
          - "$ref": "#/components/schemas/_types.analysis.SnowballLanguage"
        stopwords:
          allOf:
          - "$ref": "#/components/schemas/_types.analysis.StopWords"
      required:
      - type
      - language
    _types.analysis.SnowballLanguage:
      type: string
      enum:
      - Arabic
      - Armenian
      - Basque
      - Catalan
      - Danish
      - Dutch
      - English
      - Estonian
      - Finnish
      - French
      - German
      - German2
      - Hungarian
      - Italian
      - Irish
      - Kp
      - Lithuanian
      - Lovins
      - Norwegian
      - Porter
      - Portuguese
      - Romanian
      - Russian
      - Serbian
      - Spanish
      - Swedish
      - Turkish
    _types.analysis.ArabicAnalyzer:
      type: object
      properties:
        type:
          type: string
          enum:
          - arabic
        stopwords:
          allOf:
          - "$ref": "#/components/schemas/_types.analysis.StopWords"
        stopwords_path:
          type: string
        stem_exclusion:
          type: array
          items:
            type: string
      required:
      - type
    _types.analysis.ArmenianAnalyzer:
      type: object
      properties:
        type:
          type: string
          enum:
          - armenian
        stopwords:
          allOf:
          - "$ref": "#/components/schemas/_types.analysis.StopWords"
        stopwords_path:
          type: string
        stem_exclusion:
          type: array
          items:
            type: string
      required:
      - type
    _types.analysis.BasqueAnalyzer:
      type: object
      properties:
        type:
          type: string
          enum:
          - basque
        stopwords:
          allOf:
          - "$ref": "#/components/schemas/_types.analysis.StopWords"
        stopwords_path:
          type: string
        stem_exclusion:
          type: array
          items:
            type: string
      required:
      - type
    _types.analysis.BengaliAnalyzer:
      type: object
      properties:
        type:
          type: string
          enum:
          - bengali
        stopwords:
          allOf:
          - "$ref": "#/components/schemas/_types.analysis.StopWords"
        stopwords_path:
          type: string
        stem_exclusion:
          type: array
          items:
            type: string
      required:
      - type
    _types.analysis.BrazilianAnalyzer:
      type: object
      properties:
        type:
          type: string
          enum:
          - brazilian
        stopwords:
          allOf:
          - "$ref": "#/components/schemas/_types.analysis.StopWords"
        stopwords_path:
          type: string
      required:
      - type
    _types.analysis.BulgarianAnalyzer:
      type: object
      properties:
        type:
          type: string
          enum:
          - bulgarian
        stopwords:
          allOf:
          - "$ref": "#/components/schemas/_types.analysis.StopWords"
        stopwords_path:
          type: string
        stem_exclusion:
          type: array
          items:
            type: string
      required:
      - type
    _types.analysis.CatalanAnalyzer:
      type: object
      properties:
        type:
          type: string
          enum:
          - catalan
        stopwords:
          allOf:
          - "$ref": "#/components/schemas/_types.analysis.StopWords"
        stopwords_path:
          type: string
        stem_exclusion:
          type: array
          items:
            type: string
      required:
      - type
    _types.analysis.ChineseAnalyzer:
      type: object
      properties:
        type:
          type: string
          enum:
          - chinese
        stopwords:
          allOf:
          - "$ref": "#/components/schemas/_types.analysis.StopWords"
        stopwords_path:
          type: string
      required:
      - type
    _types.analysis.CjkAnalyzer:
      type: object
      properties:
        type:
          type: string
          enum:
          - cjk
        stopwords:
          allOf:
          - "$ref": "#/components/schemas/_types.analysis.StopWords"
        stopwords_path:
          type: string
      required:
      - type
    _types.analysis.CzechAnalyzer:
      type: object
      properties:
        type:
          type: string
          enum:
          - czech
        stopwords:
          allOf:
          - "$ref": "#/components/schemas/_types.analysis.StopWords"
        stopwords_path:
          type: string
        stem_exclusion:
          type: array
          items:
            type: string
      required:
      - type
    _types.analysis.DanishAnalyzer:
      type: object
      properties:
        type:
          type: string
          enum:
          - danish
        stopwords:
          allOf:
          - "$ref": "#/components/schemas/_types.analysis.StopWords"
        stopwords_path:
          type: string
      required:
      - type
    _types.analysis.DutchAnalyzer:
      type: object
      properties:
        type:
          type: string
          enum:
          - dutch
        stopwords:
          allOf:
          - "$ref": "#/components/schemas/_types.analysis.StopWords"
        stopwords_path:
          type: string
        stem_exclusion:
          type: array
          items:
            type: string
      required:
      - type
    _types.analysis.EnglishAnalyzer:
      type: object
      properties:
        type:
          type: string
          enum:
          - english
        stopwords:
          allOf:
          - "$ref": "#/components/schemas/_types.analysis.StopWords"
        stopwords_path:
          type: string
        stem_exclusion:
          type: array
          items:
            type: string
      required:
      - type
    _types.analysis.EstonianAnalyzer:
      type: object
      properties:
        type:
          type: string
          enum:
          - estonian
        stopwords:
          allOf:
          - "$ref": "#/components/schemas/_types.analysis.StopWords"
        stopwords_path:
          type: string
      required:
      - type
    _types.analysis.FinnishAnalyzer:
      type: object
      properties:
        type:
          type: string
          enum:
          - finnish
        stopwords:
          allOf:
          - "$ref": "#/components/schemas/_types.analysis.StopWords"
        stopwords_path:
          type: string
        stem_exclusion:
          type: array
          items:
            type: string
      required:
      - type
    _types.analysis.FrenchAnalyzer:
      type: object
      properties:
        type:
          type: string
          enum:
          - french
        stopwords:
          allOf:
          - "$ref": "#/components/schemas/_types.analysis.StopWords"
        stopwords_path:
          type: string
        stem_exclusion:
          type: array
          items:
            type: string
      required:
      - type
    _types.analysis.GalicianAnalyzer:
      type: object
      properties:
        type:
          type: string
          enum:
          - galician
        stopwords:
          allOf:
          - "$ref": "#/components/schemas/_types.analysis.StopWords"
        stopwords_path:
          type: string
        stem_exclusion:
          type: array
          items:
            type: string
      required:
      - type
    _types.analysis.GermanAnalyzer:
      type: object
      properties:
        type:
          type: string
          enum:
          - german
        stopwords:
          allOf:
          - "$ref": "#/components/schemas/_types.analysis.StopWords"
        stopwords_path:
          type: string
        stem_exclusion:
          type: array
          items:
            type: string
      required:
      - type
    _types.analysis.GreekAnalyzer:
      type: object
      properties:
        type:
          type: string
          enum:
          - greek
        stopwords:
          allOf:
          - "$ref": "#/components/schemas/_types.analysis.StopWords"
        stopwords_path:
          type: string
      required:
      - type
    _types.analysis.HindiAnalyzer:
      type: object
      properties:
        type:
          type: string
          enum:
          - hindi
        stopwords:
          allOf:
          - "$ref": "#/components/schemas/_types.analysis.StopWords"
        stopwords_path:
          type: string
        stem_exclusion:
          type: array
          items:
            type: string
      required:
      - type
    _types.analysis.HungarianAnalyzer:
      type: object
      properties:
        type:
          type: string
          enum:
          - hungarian
        stopwords:
          allOf:
          - "$ref": "#/components/schemas/_types.analysis.StopWords"
        stopwords_path:
          type: string
        stem_exclusion:
          type: array
          items:
            type: string
      required:
      - type
    _types.analysis.IndonesianAnalyzer:
      type: object
      properties:
        type:
          type: string
          enum:
          - indonesian
        stopwords:
          allOf:
          - "$ref": "#/components/schemas/_types.analysis.StopWords"
        stopwords_path:
          type: string
        stem_exclusion:
          type: array
          items:
            type: string
      required:
      - type
    _types.analysis.IrishAnalyzer:
      type: object
      properties:
        type:
          type: string
          enum:
          - irish
        stopwords:
          allOf:
          - "$ref": "#/components/schemas/_types.analysis.StopWords"
        stopwords_path:
          type: string
        stem_exclusion:
          type: array
          items:
            type: string
      required:
      - type
    _types.analysis.ItalianAnalyzer:
      type: object
      properties:
        type:
          type: string
          enum:
          - italian
        stopwords:
          allOf:
          - "$ref": "#/components/schemas/_types.analysis.StopWords"
        stopwords_path:
          type: string
        stem_exclusion:
          type: array
          items:
            type: string
      required:
      - type
    _types.analysis.LatvianAnalyzer:
      type: object
      properties:
        type:
          type: string
          enum:
          - latvian
        stopwords:
          allOf:
          - "$ref": "#/components/schemas/_types.analysis.StopWords"
        stopwords_path:
          type: string
        stem_exclusion:
          type: array
          items:
            type: string
      required:
      - type
    _types.analysis.LithuanianAnalyzer:
      type: object
      properties:
        type:
          type: string
          enum:
          - lithuanian
        stopwords:
          allOf:
          - "$ref": "#/components/schemas/_types.analysis.StopWords"
        stopwords_path:
          type: string
        stem_exclusion:
          type: array
          items:
            type: string
      required:
      - type
    _types.analysis.NorwegianAnalyzer:
      type: object
      properties:
        type:
          type: string
          enum:
          - norwegian
        stopwords:
          allOf:
          - "$ref": "#/components/schemas/_types.analysis.StopWords"
        stopwords_path:
          type: string
        stem_exclusion:
          type: array
          items:
            type: string
      required:
      - type
    _types.analysis.PersianAnalyzer:
      type: object
      properties:
        type:
          type: string
          enum:
          - persian
        stopwords:
          allOf:
          - "$ref": "#/components/schemas/_types.analysis.StopWords"
        stopwords_path:
          type: string
      required:
      - type
    _types.analysis.PortugueseAnalyzer:
      type: object
      properties:
        type:
          type: string
          enum:
          - portuguese
        stopwords:
          allOf:
          - "$ref": "#/components/schemas/_types.analysis.StopWords"
        stopwords_path:
          type: string
        stem_exclusion:
          type: array
          items:
            type: string
      required:
      - type
    _types.analysis.RomanianAnalyzer:
      type: object
      properties:
        type:
          type: string
          enum:
          - romanian
        stopwords:
          allOf:
          - "$ref": "#/components/schemas/_types.analysis.StopWords"
        stopwords_path:
          type: string
        stem_exclusion:
          type: array
          items:
            type: string
      required:
      - type
    _types.analysis.RussianAnalyzer:
      type: object
      properties:
        type:
          type: string
          enum:
          - russian
        stopwords:
          allOf:
          - "$ref": "#/components/schemas/_types.analysis.StopWords"
        stopwords_path:
          type: string
        stem_exclusion:
          type: array
          items:
            type: string
      required:
      - type
    _types.analysis.SerbianAnalyzer:
      type: object
      properties:
        type:
          type: string
          enum:
          - serbian
        stopwords:
          allOf:
          - "$ref": "#/components/schemas/_types.analysis.StopWords"
        stopwords_path:
          type: string
        stem_exclusion:
          type: array
          items:
            type: string
      required:
      - type
    _types.analysis.SoraniAnalyzer:
      type: object
      properties:
        type:
          type: string
          enum:
          - sorani
        stopwords:
          allOf:
          - "$ref": "#/components/schemas/_types.analysis.StopWords"
        stopwords_path:
          type: string
        stem_exclusion:
          type: array
          items:
            type: string
      required:
      - type
    _types.analysis.SpanishAnalyzer:
      type: object
      properties:
        type:
          type: string
          enum:
          - spanish
        stopwords:
          allOf:
          - "$ref": "#/components/schemas/_types.analysis.StopWords"
        stopwords_path:
          type: string
        stem_exclusion:
          type: array
          items:
            type: string
      required:
      - type
    _types.analysis.SwedishAnalyzer:
      type: object
      properties:
        type:
          type: string
          enum:
          - swedish
        stopwords:
          allOf:
          - "$ref": "#/components/schemas/_types.analysis.StopWords"
        stopwords_path:
          type: string
        stem_exclusion:
          type: array
          items:
            type: string
      required:
      - type
    _types.analysis.TurkishAnalyzer:
      type: object
      properties:
        type:
          type: string
          enum:
          - turkish
        stopwords:
          allOf:
          - "$ref": "#/components/schemas/_types.analysis.StopWords"
        stopwords_path:
          type: string
        stem_exclusion:
          type: array
          items:
            type: string
      required:
      - type
    _types.analysis.ThaiAnalyzer:
      type: object
      properties:
        type:
          type: string
          enum:
          - thai
        stopwords:
          allOf:
          - "$ref": "#/components/schemas/_types.analysis.StopWords"
        stopwords_path:
          type: string
      required:
      - type
    _types.analysis.CharFilter:
      externalDocs:
        url: https://www.elastic.co/docs/reference/text-analysis/character-filter-reference
      x-model: true
    _types.analysis.CharFilterDefinition:
      discriminator:
        propertyName: type
        mapping:
          html_strip: "#/components/schemas/_types.analysis.HtmlStripCharFilter"
          icu_normalizer: "#/components/schemas/_types.analysis.IcuNormalizationCharFilter"
          kuromoji_iteration_mark: "#/components/schemas/_types.analysis.KuromojiIterationMarkCharFilter"
          mapping: "#/components/schemas/_types.analysis.MappingCharFilter"
          pattern_replace: "#/components/schemas/_types.analysis.PatternReplaceCharFilter"
      oneOf:
      - "$ref": "#/components/schemas/_types.analysis.HtmlStripCharFilter"
      - "$ref": "#/components/schemas/_types.analysis.MappingCharFilter"
      - "$ref": "#/components/schemas/_types.analysis.PatternReplaceCharFilter"
      - "$ref": "#/components/schemas/_types.analysis.IcuNormalizationCharFilter"
      - "$ref": "#/components/schemas/_types.analysis.KuromojiIterationMarkCharFilter"
    _types.analysis.HtmlStripCharFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.CharFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - html_strip
          escaped_tags:
            type: array
            items:
              type: string
        required:
        - type
    _types.analysis.CharFilterBase:
      type: object
      properties:
        version:
          allOf:
          - "$ref": "#/components/schemas/_types.VersionString"
    _types.analysis.MappingCharFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.CharFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - mapping
          mappings:
            type: array
            items:
              type: string
          mappings_path:
            type: string
        required:
        - type
    _types.analysis.PatternReplaceCharFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.CharFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - pattern_replace
          flags:
            type: string
          pattern:
            type: string
          replacement:
            type: string
        required:
        - type
        - pattern
    _types.analysis.IcuNormalizationCharFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.CharFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - icu_normalizer
          mode:
            allOf:
            - "$ref": "#/components/schemas/_types.analysis.IcuNormalizationMode"
          name:
            allOf:
            - "$ref": "#/components/schemas/_types.analysis.IcuNormalizationType"
          unicode_set_filter:
            type: string
        required:
        - type
    _types.analysis.KuromojiIterationMarkCharFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.CharFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - kuromoji_iteration_mark
          normalize_kana:
            type: boolean
          normalize_kanji:
            type: boolean
        required:
        - type
        - normalize_kana
        - normalize_kanji
    _types.analysis.TokenFilter:
      externalDocs:
        url: https://www.elastic.co/docs/reference/text-analysis/token-filter-reference
      x-model: true
    _types.analysis.TokenFilterDefinition:
      discriminator:
        propertyName: type
        mapping:
          apostrophe: "#/components/schemas/_types.analysis.ApostropheTokenFilter"
          arabic_normalization: "#/components/schemas/_types.analysis.ArabicNormalizationTokenFilter"
          arabic_stem: "#/components/schemas/_types.analysis.ArabicStemTokenFilter"
          asciifolding: "#/components/schemas/_types.analysis.AsciiFoldingTokenFilter"
          bengali_normalization: "#/components/schemas/_types.analysis.BengaliNormalizationTokenFilter"
          brazilian_stem: "#/components/schemas/_types.analysis.BrazilianStemTokenFilter"
          cjk_bigram: "#/components/schemas/_types.analysis.CjkBigramTokenFilter"
          cjk_width: "#/components/schemas/_types.analysis.CjkWidthTokenFilter"
          classic: "#/components/schemas/_types.analysis.ClassicTokenFilter"
          common_grams: "#/components/schemas/_types.analysis.CommonGramsTokenFilter"
          condition: "#/components/schemas/_types.analysis.ConditionTokenFilter"
          czech_stem: "#/components/schemas/_types.analysis.CzechStemTokenFilter"
          decimal_digit: "#/components/schemas/_types.analysis.DecimalDigitTokenFilter"
          delimited_payload: "#/components/schemas/_types.analysis.DelimitedPayloadTokenFilter"
          dictionary_decompounder: "#/components/schemas/_types.analysis.DictionaryDecompounderTokenFilter"
          dutch_stem: "#/components/schemas/_types.analysis.DutchStemTokenFilter"
          edge_ngram: "#/components/schemas/_types.analysis.EdgeNGramTokenFilter"
          elision: "#/components/schemas/_types.analysis.ElisionTokenFilter"
          fingerprint: "#/components/schemas/_types.analysis.FingerprintTokenFilter"
          flatten_graph: "#/components/schemas/_types.analysis.FlattenGraphTokenFilter"
          french_stem: "#/components/schemas/_types.analysis.FrenchStemTokenFilter"
          german_normalization: "#/components/schemas/_types.analysis.GermanNormalizationTokenFilter"
          german_stem: "#/components/schemas/_types.analysis.GermanStemTokenFilter"
          hindi_normalization: "#/components/schemas/_types.analysis.HindiNormalizationTokenFilter"
          hunspell: "#/components/schemas/_types.analysis.HunspellTokenFilter"
          hyphenation_decompounder: "#/components/schemas/_types.analysis.HyphenationDecompounderTokenFilter"
          icu_collation: "#/components/schemas/_types.analysis.IcuCollationTokenFilter"
          icu_folding: "#/components/schemas/_types.analysis.IcuFoldingTokenFilter"
          icu_normalizer: "#/components/schemas/_types.analysis.IcuNormalizationTokenFilter"
          icu_transform: "#/components/schemas/_types.analysis.IcuTransformTokenFilter"
          indic_normalization: "#/components/schemas/_types.analysis.IndicNormalizationTokenFilter"
          ja_stop: "#/components/schemas/_types.analysis.JaStopTokenFilter"
          keep: "#/components/schemas/_types.analysis.KeepWordsTokenFilter"
          keep_types: "#/components/schemas/_types.analysis.KeepTypesTokenFilter"
          keyword_marker: "#/components/schemas/_types.analysis.KeywordMarkerTokenFilter"
          keyword_repeat: "#/components/schemas/_types.analysis.KeywordRepeatTokenFilter"
          kstem: "#/components/schemas/_types.analysis.KStemTokenFilter"
          kuromoji_part_of_speech: "#/components/schemas/_types.analysis.KuromojiPartOfSpeechTokenFilter"
          kuromoji_readingform: "#/components/schemas/_types.analysis.KuromojiReadingFormTokenFilter"
          kuromoji_stemmer: "#/components/schemas/_types.analysis.KuromojiStemmerTokenFilter"
          length: "#/components/schemas/_types.analysis.LengthTokenFilter"
          limit: "#/components/schemas/_types.analysis.LimitTokenCountTokenFilter"
          lowercase: "#/components/schemas/_types.analysis.LowercaseTokenFilter"
          min_hash: "#/components/schemas/_types.analysis.MinHashTokenFilter"
          multiplexer: "#/components/schemas/_types.analysis.MultiplexerTokenFilter"
          ngram: "#/components/schemas/_types.analysis.NGramTokenFilter"
          nori_part_of_speech: "#/components/schemas/_types.analysis.NoriPartOfSpeechTokenFilter"
          pattern_capture: "#/components/schemas/_types.analysis.PatternCaptureTokenFilter"
          pattern_replace: "#/components/schemas/_types.analysis.PatternReplaceTokenFilter"
          persian_normalization: "#/components/schemas/_types.analysis.PersianNormalizationTokenFilter"
          persian_stem: "#/components/schemas/_types.analysis.PersianStemTokenFilter"
          phonetic: "#/components/schemas/_types.analysis.PhoneticTokenFilter"
          porter_stem: "#/components/schemas/_types.analysis.PorterStemTokenFilter"
          predicate_token_filter: "#/components/schemas/_types.analysis.PredicateTokenFilter"
          remove_duplicates: "#/components/schemas/_types.analysis.RemoveDuplicatesTokenFilter"
          reverse: "#/components/schemas/_types.analysis.ReverseTokenFilter"
          russian_stem: "#/components/schemas/_types.analysis.RussianStemTokenFilter"
          scandinavian_folding: "#/components/schemas/_types.analysis.ScandinavianFoldingTokenFilter"
          scandinavian_normalization: "#/components/schemas/_types.analysis.ScandinavianNormalizationTokenFilter"
          serbian_normalization: "#/components/schemas/_types.analysis.SerbianNormalizationTokenFilter"
          shingle: "#/components/schemas/_types.analysis.ShingleTokenFilter"
          snowball: "#/components/schemas/_types.analysis.SnowballTokenFilter"
          sorani_normalization: "#/components/schemas/_types.analysis.SoraniNormalizationTokenFilter"
          stemmer: "#/components/schemas/_types.analysis.StemmerTokenFilter"
          stemmer_override: "#/components/schemas/_types.analysis.StemmerOverrideTokenFilter"
          stop: "#/components/schemas/_types.analysis.StopTokenFilter"
          synonym: "#/components/schemas/_types.analysis.SynonymTokenFilter"
          synonym_graph: "#/components/schemas/_types.analysis.SynonymGraphTokenFilter"
          trim: "#/components/schemas/_types.analysis.TrimTokenFilter"
          truncate: "#/components/schemas/_types.analysis.TruncateTokenFilter"
          unique: "#/components/schemas/_types.analysis.UniqueTokenFilter"
          uppercase: "#/components/schemas/_types.analysis.UppercaseTokenFilter"
          word_delimiter: "#/components/schemas/_types.analysis.WordDelimiterTokenFilter"
          word_delimiter_graph: "#/components/schemas/_types.analysis.WordDelimiterGraphTokenFilter"
      oneOf:
      - "$ref": "#/components/schemas/_types.analysis.ApostropheTokenFilter"
      - "$ref": "#/components/schemas/_types.analysis.ArabicStemTokenFilter"
      - "$ref": "#/components/schemas/_types.analysis.ArabicNormalizationTokenFilter"
      - "$ref": "#/components/schemas/_types.analysis.AsciiFoldingTokenFilter"
      - "$ref": "#/components/schemas/_types.analysis.BengaliNormalizationTokenFilter"
      - "$ref": "#/components/schemas/_types.analysis.BrazilianStemTokenFilter"
      - "$ref": "#/components/schemas/_types.analysis.CjkBigramTokenFilter"
      - "$ref": "#/components/schemas/_types.analysis.CjkWidthTokenFilter"
      - "$ref": "#/components/schemas/_types.analysis.ClassicTokenFilter"
      - "$ref": "#/components/schemas/_types.analysis.CommonGramsTokenFilter"
      - "$ref": "#/components/schemas/_types.analysis.ConditionTokenFilter"
      - "$ref": "#/components/schemas/_types.analysis.CzechStemTokenFilter"
      - "$ref": "#/components/schemas/_types.analysis.DecimalDigitTokenFilter"
      - "$ref": "#/components/schemas/_types.analysis.DelimitedPayloadTokenFilter"
      - "$ref": "#/components/schemas/_types.analysis.DutchStemTokenFilter"
      - "$ref": "#/components/schemas/_types.analysis.EdgeNGramTokenFilter"
      - "$ref": "#/components/schemas/_types.analysis.ElisionTokenFilter"
      - "$ref": "#/components/schemas/_types.analysis.FingerprintTokenFilter"
      - "$ref": "#/components/schemas/_types.analysis.FlattenGraphTokenFilter"
      - "$ref": "#/components/schemas/_types.analysis.FrenchStemTokenFilter"
      - "$ref": "#/components/schemas/_types.analysis.GermanNormalizationTokenFilter"
      - "$ref": "#/components/schemas/_types.analysis.GermanStemTokenFilter"
      - "$ref": "#/components/schemas/_types.analysis.HindiNormalizationTokenFilter"
      - "$ref": "#/components/schemas/_types.analysis.HunspellTokenFilter"
      - "$ref": "#/components/schemas/_types.analysis.HyphenationDecompounderTokenFilter"
      - "$ref": "#/components/schemas/_types.analysis.IndicNormalizationTokenFilter"
      - "$ref": "#/components/schemas/_types.analysis.KeepTypesTokenFilter"
      - "$ref": "#/components/schemas/_types.analysis.KeepWordsTokenFilter"
      - "$ref": "#/components/schemas/_types.analysis.KeywordMarkerTokenFilter"
      - "$ref": "#/components/schemas/_types.analysis.KeywordRepeatTokenFilter"
      - "$ref": "#/components/schemas/_types.analysis.KStemTokenFilter"
      - "$ref": "#/components/schemas/_types.analysis.LengthTokenFilter"
      - "$ref": "#/components/schemas/_types.analysis.LimitTokenCountTokenFilter"
      - "$ref": "#/components/schemas/_types.analysis.LowercaseTokenFilter"
      - "$ref": "#/components/schemas/_types.analysis.MinHashTokenFilter"
      - "$ref": "#/components/schemas/_types.analysis.MultiplexerTokenFilter"
      - "$ref": "#/components/schemas/_types.analysis.NGramTokenFilter"
      - "$ref": "#/components/schemas/_types.analysis.NoriPartOfSpeechTokenFilter"
      - "$ref": "#/components/schemas/_types.analysis.PatternCaptureTokenFilter"
      - "$ref": "#/components/schemas/_types.analysis.PatternReplaceTokenFilter"
      - "$ref": "#/components/schemas/_types.analysis.PersianNormalizationTokenFilter"
      - "$ref": "#/components/schemas/_types.analysis.PersianStemTokenFilter"
      - "$ref": "#/components/schemas/_types.analysis.PorterStemTokenFilter"
      - "$ref": "#/components/schemas/_types.analysis.PredicateTokenFilter"
      - "$ref": "#/components/schemas/_types.analysis.RemoveDuplicatesTokenFilter"
      - "$ref": "#/components/schemas/_types.analysis.ReverseTokenFilter"
      - "$ref": "#/components/schemas/_types.analysis.RussianStemTokenFilter"
      - "$ref": "#/components/schemas/_types.analysis.ScandinavianFoldingTokenFilter"
      - "$ref": "#/components/schemas/_types.analysis.ScandinavianNormalizationTokenFilter"
      - "$ref": "#/components/schemas/_types.analysis.SerbianNormalizationTokenFilter"
      - "$ref": "#/components/schemas/_types.analysis.ShingleTokenFilter"
      - "$ref": "#/components/schemas/_types.analysis.SnowballTokenFilter"
      - "$ref": "#/components/schemas/_types.analysis.SoraniNormalizationTokenFilter"
      - "$ref": "#/components/schemas/_types.analysis.StemmerOverrideTokenFilter"
      - "$ref": "#/components/schemas/_types.analysis.StemmerTokenFilter"
      - "$ref": "#/components/schemas/_types.analysis.StopTokenFilter"
      - "$ref": "#/components/schemas/_types.analysis.SynonymGraphTokenFilter"
      - "$ref": "#/components/schemas/_types.analysis.SynonymTokenFilter"
      - "$ref": "#/components/schemas/_types.analysis.TrimTokenFilter"
      - "$ref": "#/components/schemas/_types.analysis.TruncateTokenFilter"
      - "$ref": "#/components/schemas/_types.analysis.UniqueTokenFilter"
      - "$ref": "#/components/schemas/_types.analysis.UppercaseTokenFilter"
      - "$ref": "#/components/schemas/_types.analysis.WordDelimiterGraphTokenFilter"
      - "$ref": "#/components/schemas/_types.analysis.WordDelimiterTokenFilter"
      - "$ref": "#/components/schemas/_types.analysis.JaStopTokenFilter"
      - "$ref": "#/components/schemas/_types.analysis.KuromojiStemmerTokenFilter"
      - "$ref": "#/components/schemas/_types.analysis.KuromojiReadingFormTokenFilter"
      - "$ref": "#/components/schemas/_types.analysis.KuromojiPartOfSpeechTokenFilter"
      - "$ref": "#/components/schemas/_types.analysis.IcuCollationTokenFilter"
      - "$ref": "#/components/schemas/_types.analysis.IcuFoldingTokenFilter"
      - "$ref": "#/components/schemas/_types.analysis.IcuNormalizationTokenFilter"
      - "$ref": "#/components/schemas/_types.analysis.IcuTransformTokenFilter"
      - "$ref": "#/components/schemas/_types.analysis.PhoneticTokenFilter"
      - "$ref": "#/components/schemas/_types.analysis.DictionaryDecompounderTokenFilter"
    _types.analysis.ApostropheTokenFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - apostrophe
        required:
        - type
    _types.analysis.TokenFilterBase:
      type: object
      properties:
        version:
          allOf:
          - "$ref": "#/components/schemas/_types.VersionString"
    _types.analysis.ArabicStemTokenFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - arabic_stem
        required:
        - type
    _types.analysis.ArabicNormalizationTokenFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - arabic_normalization
        required:
        - type
    _types.analysis.AsciiFoldingTokenFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - asciifolding
          preserve_original:
            description: If `true`, emit both original tokens and folded tokens. Defaults
              to `false`.
            allOf:
            - "$ref": "#/components/schemas/_spec_utils.Stringifiedboolean"
        required:
        - type
    _types.analysis.BengaliNormalizationTokenFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - bengali_normalization
        required:
        - type
    _types.analysis.BrazilianStemTokenFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - brazilian_stem
        required:
        - type
    _types.analysis.CjkBigramTokenFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - cjk_bigram
          ignored_scripts:
            description: Array of character scripts for which to disable bigrams.
            type: array
            items:
              "$ref": "#/components/schemas/_types.analysis.CjkBigramIgnoredScript"
          output_unigrams:
            description: If `true`, emit tokens in both bigram and unigram form. If
              `false`, a CJK character is output in unigram form when it has no adjacent
              characters. Defaults to `false`.
            type: boolean
        required:
        - type
    _types.analysis.CjkBigramIgnoredScript:
      type: string
      enum:
      - han
      - hangul
      - hiragana
      - katakana
    _types.analysis.CjkWidthTokenFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - cjk_width
        required:
        - type
    _types.analysis.ClassicTokenFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - classic
        required:
        - type
    _types.analysis.CommonGramsTokenFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - common_grams
          common_words:
            description: |-
              A list of tokens. The filter generates bigrams for these tokens.
              Either this or the `common_words_path` parameter is required.
            type: array
            items:
              type: string
          common_words_path:
            description: |-
              Path to a file containing a list of tokens. The filter generates bigrams for these tokens.
              This path must be absolute or relative to the `config` location. The file must be UTF-8 encoded. Each token in the file must be separated by a line break.
              Either this or the `common_words` parameter is required.
            type: string
          ignore_case:
            description: If `true`, matches for common words matching are case-insensitive.
              Defaults to `false`.
            type: boolean
          query_mode:
            description: |-
              If `true`, the filter excludes the following tokens from the output:
              - Unigrams for common words
              - Unigrams for terms followed by common words
              Defaults to `false`. We recommend enabling this parameter for search analyzers.
            type: boolean
        required:
        - type
    _types.analysis.ConditionTokenFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - condition
          filter:
            description: Array of token filters. If a token matches the predicate
              script in the `script` parameter, these filters are applied to the token
              in the order provided.
            type: array
            items:
              type: string
          script:
            description: Predicate script used to apply token filters. If a token
              matches this script, the filters in the `filter` parameter are applied
              to the token.
            allOf:
            - "$ref": "#/components/schemas/_types.Script"
        required:
        - type
        - filter
        - script
    _types.analysis.CzechStemTokenFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - czech_stem
        required:
        - type
    _types.analysis.DecimalDigitTokenFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - decimal_digit
        required:
        - type
    _types.analysis.DelimitedPayloadTokenFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - delimited_payload
          delimiter:
            description: Character used to separate tokens from payloads. Defaults
              to `|`.
            type: string
          encoding:
            description: Data type for the stored payload.
            allOf:
            - "$ref": "#/components/schemas/_types.analysis.DelimitedPayloadEncoding"
        required:
        - type
    _types.analysis.DelimitedPayloadEncoding:
      type: string
      enum:
      - int
      - float
      - identity
    _types.analysis.DutchStemTokenFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - dutch_stem
        required:
        - type
    _types.analysis.EdgeNGramTokenFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - edge_ngram
          max_gram:
            description: Maximum character length of a gram. For custom token filters,
              defaults to `2`. For the built-in edge_ngram filter, defaults to `1`.
            type: number
          min_gram:
            description: Minimum character length of a gram. Defaults to `1`.
            type: number
          side:
            description: Indicates whether to truncate tokens from the `front` or
              `back`. Defaults to `front`.
            allOf:
            - "$ref": "#/components/schemas/_types.analysis.EdgeNGramSide"
          preserve_original:
            description: Emits original token when set to `true`. Defaults to `false`.
            allOf:
            - "$ref": "#/components/schemas/_spec_utils.Stringifiedboolean"
        required:
        - type
    _types.analysis.EdgeNGramSide:
      type: string
      enum:
      - front
      - back
    _types.analysis.ElisionTokenFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - elision
          articles:
            description: |-
              List of elisions to remove.
              To be removed, the elision must be at the beginning of a token and be immediately followed by an apostrophe. Both the elision and apostrophe are removed.
              For custom `elision` filters, either this parameter or `articles_path` must be specified.
            type: array
            items:
              type: string
          articles_path:
            description: |-
              Path to a file that contains a list of elisions to remove.
              This path must be absolute or relative to the `config` location, and the file must be UTF-8 encoded. Each elision in the file must be separated by a line break.
              To be removed, the elision must be at the beginning of a token and be immediately followed by an apostrophe. Both the elision and apostrophe are removed.
              For custom `elision` filters, either this parameter or `articles` must be specified.
            type: string
          articles_case:
            description: If `true`, elision matching is case insensitive. If `false`,
              elision matching is case sensitive. Defaults to `false`.
            allOf:
            - "$ref": "#/components/schemas/_spec_utils.Stringifiedboolean"
        required:
        - type
    _types.analysis.FingerprintTokenFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - fingerprint
          max_output_size:
            description: Maximum character length, including whitespace, of the output
              token. Defaults to `255`. Concatenated tokens longer than this will
              result in no token output.
            type: number
          separator:
            description: Character to use to concatenate the token stream input. Defaults
              to a space.
            type: string
        required:
        - type
    _types.analysis.FlattenGraphTokenFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - flatten_graph
        required:
        - type
    _types.analysis.FrenchStemTokenFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - french_stem
        required:
        - type
    _types.analysis.GermanNormalizationTokenFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - german_normalization
        required:
        - type
    _types.analysis.GermanStemTokenFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - german_stem
        required:
        - type
    _types.analysis.HindiNormalizationTokenFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - hindi_normalization
        required:
        - type
    _types.analysis.HunspellTokenFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - hunspell
          dedup:
            description: If `true`, duplicate tokens are removed from the filter’s
              output. Defaults to `true`.
            type: boolean
          dictionary:
            description: |-
              One or more `.dic` files (e.g, `en_US.dic`, my_custom.dic) to use for the Hunspell dictionary.
              By default, the `hunspell` filter uses all `.dic` files in the `<$ES_PATH_CONF>/hunspell/<locale>` directory specified using the `lang`, `language`, or `locale` parameter.
            type: string
          locale:
            description: Locale directory used to specify the `.aff` and `.dic` files
              for a Hunspell dictionary.
            type: string
          longest_only:
            description: If `true`, only the longest stemmed version of each token
              is included in the output. If `false`, all stemmed versions of the token
              are included. Defaults to `false`.
            type: boolean
        required:
        - type
        - locale
    _types.analysis.HyphenationDecompounderTokenFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.CompoundWordTokenFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - hyphenation_decompounder
          hyphenation_patterns_path:
            description: |-
              Path to an Apache FOP (Formatting Objects Processor) XML hyphenation pattern file.
              This path must be absolute or relative to the `config` location. Only FOP v1.2 compatible files are supported.
            type: string
          no_sub_matches:
            description: If `true`, do not match sub tokens in tokens that are in
              the word list. Defaults to `false`.
            type: boolean
          no_overlapping_matches:
            description: If `true`, do not allow overlapping tokens. Defaults to `false`.
            type: boolean
        required:
        - type
        - hyphenation_patterns_path
    _types.analysis.CompoundWordTokenFilterBase:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenFilterBase"
      - type: object
        properties:
          max_subword_size:
            description: Maximum subword character length. Longer subword tokens are
              excluded from the output. Defaults to `15`.
            type: number
          min_subword_size:
            description: Minimum subword character length. Shorter subword tokens
              are excluded from the output. Defaults to `2`.
            type: number
          min_word_size:
            description: Minimum word character length. Shorter word tokens are excluded
              from the output. Defaults to `5`.
            type: number
          only_longest_match:
            description: If `true`, only include the longest matching subword. Defaults
              to `false`.
            type: boolean
          word_list:
            description: |-
              A list of subwords to look for in the token stream. If found, the subword is included in the token output.
              Either this parameter or `word_list_path` must be specified.
            type: array
            items:
              type: string
          word_list_path:
            description: |-
              Path to a file that contains a list of subwords to find in the token stream. If found, the subword is included in the token output.
              This path must be absolute or relative to the config location, and the file must be UTF-8 encoded. Each token in the file must be separated by a line break.
              Either this parameter or `word_list` must be specified.
            type: string
    _types.analysis.IndicNormalizationTokenFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - indic_normalization
        required:
        - type
    _types.analysis.KeepTypesTokenFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - keep_types
          mode:
            description: Indicates whether to keep or remove the specified token types.
            allOf:
            - "$ref": "#/components/schemas/_types.analysis.KeepTypesMode"
          types:
            description: List of token types to keep or remove.
            type: array
            items:
              type: string
        required:
        - type
        - types
    _types.analysis.KeepTypesMode:
      type: string
      enum:
      - include
      - exclude
    _types.analysis.KeepWordsTokenFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - keep
          keep_words:
            description: |-
              List of words to keep. Only tokens that match words in this list are included in the output.
              Either this parameter or `keep_words_path` must be specified.
            type: array
            items:
              type: string
          keep_words_case:
            description: If `true`, lowercase all keep words. Defaults to `false`.
            type: boolean
          keep_words_path:
            description: |-
              Path to a file that contains a list of words to keep. Only tokens that match words in this list are included in the output.
              This path must be absolute or relative to the `config` location, and the file must be UTF-8 encoded. Each word in the file must be separated by a line break.
              Either this parameter or `keep_words` must be specified.
            type: string
        required:
        - type
    _types.analysis.KeywordMarkerTokenFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - keyword_marker
          ignore_case:
            description: If `true`, matching for the `keywords` and `keywords_path`
              parameters ignores letter case. Defaults to `false`.
            type: boolean
          keywords:
            description: |-
              Array of keywords. Tokens that match these keywords are not stemmed.
              This parameter, `keywords_path`, or `keywords_pattern` must be specified. You cannot specify this parameter and `keywords_pattern`.
            oneOf:
            - type: string
            - type: array
              items:
                type: string
          keywords_path:
            description: |-
              Path to a file that contains a list of keywords. Tokens that match these keywords are not stemmed.
              This path must be absolute or relative to the `config` location, and the file must be UTF-8 encoded. Each word in the file must be separated by a line break.
              This parameter, `keywords`, or `keywords_pattern` must be specified. You cannot specify this parameter and `keywords_pattern`.
            type: string
          keywords_pattern:
            description: |-
              Java regular expression used to match tokens. Tokens that match this expression are marked as keywords and not stemmed.
              This parameter, `keywords`, or `keywords_path` must be specified. You cannot specify this parameter and `keywords` or `keywords_pattern`.
            type: string
        required:
        - type
    _types.analysis.KeywordRepeatTokenFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - keyword_repeat
        required:
        - type
    _types.analysis.KStemTokenFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - kstem
        required:
        - type
    _types.analysis.LengthTokenFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - length
          max:
            description: Maximum character length of a token. Longer tokens are excluded
              from the output. Defaults to `Integer.MAX_VALUE`, which is `2^31-1`
              or `2147483647`.
            type: number
          min:
            description: Minimum character length of a token. Shorter tokens are excluded
              from the output. Defaults to `0`.
            type: number
        required:
        - type
    _types.analysis.LimitTokenCountTokenFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - limit
          consume_all_tokens:
            description: If `true`, the limit filter exhausts the token stream, even
              if the `max_token_count` has already been reached. Defaults to `false`.
            type: boolean
          max_token_count:
            description: Maximum number of tokens to keep. Once this limit is reached,
              any remaining tokens are excluded from the output. Defaults to `1`.
            allOf:
            - "$ref": "#/components/schemas/_spec_utils.Stringifiedinteger"
        required:
        - type
    _types.analysis.LowercaseTokenFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - lowercase
          language:
            description: Language-specific lowercase token filter to use.
            allOf:
            - "$ref": "#/components/schemas/_types.analysis.LowercaseTokenFilterLanguages"
        required:
        - type
    _types.analysis.LowercaseTokenFilterLanguages:
      type: string
      enum:
      - greek
      - irish
      - turkish
    _types.analysis.MinHashTokenFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - min_hash
          bucket_count:
            description: Number of buckets to which hashes are assigned. Defaults
              to `512`.
            type: number
          hash_count:
            description: Number of ways to hash each token in the stream. Defaults
              to `1`.
            type: number
          hash_set_size:
            description: |-
              Number of hashes to keep from each bucket. Defaults to `1`.
              Hashes are retained by ascending size, starting with the bucket’s smallest hash first.
            type: number
          with_rotation:
            description: If `true`, the filter fills empty buckets with the value
              of the first non-empty bucket to its circular right if the `hash_set_size`
              is `1`. If the `bucket_count` argument is greater than 1, this parameter
              defaults to `true`. Otherwise, this parameter defaults to `false`.
            type: boolean
        required:
        - type
    _types.analysis.MultiplexerTokenFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - multiplexer
          filters:
            description: A list of token filters to apply to incoming tokens.
            type: array
            items:
              type: string
          preserve_original:
            description: If `true` (the default) then emit the original token in addition
              to the filtered tokens.
            allOf:
            - "$ref": "#/components/schemas/_spec_utils.Stringifiedboolean"
        required:
        - type
        - filters
    _types.analysis.NGramTokenFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - ngram
          max_gram:
            description: Maximum length of characters in a gram. Defaults to `2`.
            type: number
          min_gram:
            description: Minimum length of characters in a gram. Defaults to `1`.
            type: number
          preserve_original:
            description: Emits original token when set to `true`. Defaults to `false`.
            allOf:
            - "$ref": "#/components/schemas/_spec_utils.Stringifiedboolean"
        required:
        - type
    _types.analysis.NoriPartOfSpeechTokenFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - nori_part_of_speech
          stoptags:
            description: An array of part-of-speech tags that should be removed.
            type: array
            items:
              type: string
        required:
        - type
    _types.analysis.PatternCaptureTokenFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - pattern_capture
          patterns:
            description: A list of regular expressions to match.
            type: array
            items:
              type: string
          preserve_original:
            description: If set to `true` (the default) it will emit the original
              token.
            allOf:
            - "$ref": "#/components/schemas/_spec_utils.Stringifiedboolean"
        required:
        - type
        - patterns
    _types.analysis.PatternReplaceTokenFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - pattern_replace
          all:
            description: If `true`, all substrings matching the pattern parameter’s
              regular expression are replaced. If `false`, the filter replaces only
              the first matching substring in each token. Defaults to `true`.
            type: boolean
          flags:
            type: string
          pattern:
            description: Regular expression, written in Java’s regular expression
              syntax. The filter replaces token substrings matching this pattern with
              the substring in the `replacement` parameter.
            type: string
          replacement:
            description: Replacement substring. Defaults to an empty substring (`""`).
            type: string
        required:
        - type
        - pattern
    _types.analysis.PersianNormalizationTokenFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - persian_normalization
        required:
        - type
    _types.analysis.PersianStemTokenFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - persian_stem
        required:
        - type
    _types.analysis.PorterStemTokenFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - porter_stem
        required:
        - type
    _types.analysis.PredicateTokenFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - predicate_token_filter
          script:
            description: Script containing a condition used to filter incoming tokens.
              Only tokens that match this script are included in the output.
            allOf:
            - "$ref": "#/components/schemas/_types.Script"
        required:
        - type
        - script
    _types.analysis.RemoveDuplicatesTokenFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - remove_duplicates
        required:
        - type
    _types.analysis.ReverseTokenFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - reverse
        required:
        - type
    _types.analysis.RussianStemTokenFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - russian_stem
        required:
        - type
    _types.analysis.ScandinavianFoldingTokenFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - scandinavian_folding
        required:
        - type
    _types.analysis.ScandinavianNormalizationTokenFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - scandinavian_normalization
        required:
        - type
    _types.analysis.SerbianNormalizationTokenFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - serbian_normalization
        required:
        - type
    _types.analysis.ShingleTokenFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - shingle
          filler_token:
            description: String used in shingles as a replacement for empty positions
              that do not contain a token. This filler token is only used in shingles,
              not original unigrams. Defaults to an underscore (`_`).
            type: string
          max_shingle_size:
            description: Maximum number of tokens to concatenate when creating shingles.
              Defaults to `2`.
            allOf:
            - "$ref": "#/components/schemas/_spec_utils.Stringifiedinteger"
          min_shingle_size:
            description: Minimum number of tokens to concatenate when creating shingles.
              Defaults to `2`.
            allOf:
            - "$ref": "#/components/schemas/_spec_utils.Stringifiedinteger"
          output_unigrams:
            description: If `true`, the output includes the original input tokens.
              If `false`, the output only includes shingles; the original input tokens
              are removed. Defaults to `true`.
            type: boolean
          output_unigrams_if_no_shingles:
            description: If `true`, the output includes the original input tokens
              only if no shingles are produced; if shingles are produced, the output
              only includes shingles. Defaults to `false`.
            type: boolean
          token_separator:
            description: Separator used to concatenate adjacent tokens to form a shingle.
              Defaults to a space (`" "`).
            type: string
        required:
        - type
    _types.analysis.SnowballTokenFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - snowball
          language:
            description: Controls the language used by the stemmer.
            allOf:
            - "$ref": "#/components/schemas/_types.analysis.SnowballLanguage"
        required:
        - type
    _types.analysis.SoraniNormalizationTokenFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - sorani_normalization
        required:
        - type
    _types.analysis.StemmerOverrideTokenFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - stemmer_override
          rules:
            description: A list of mapping rules to use.
            type: array
            items:
              type: string
          rules_path:
            description: A path (either relative to `config` location, or absolute)
              to a list of mappings.
            type: string
        required:
        - type
    _types.analysis.StemmerTokenFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - stemmer
          language:
            type: string
        required:
        - type
    _types.analysis.StopTokenFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - stop
          ignore_case:
            description: If `true`, stop word matching is case insensitive. For example,
              if `true`, a stop word of the matches and removes `The`, `THE`, or `the`.
              Defaults to `false`.
            type: boolean
          remove_trailing:
            description: If `true`, the last token of a stream is removed if it’s
              a stop word. Defaults to `true`.
            type: boolean
          stopwords:
            description: Language value, such as `_arabic_` or `_thai_`. Defaults
              to `_english_`.
            allOf:
            - "$ref": "#/components/schemas/_types.analysis.StopWords"
          stopwords_path:
            description: |-
              Path to a file that contains a list of stop words to remove.
              This path must be absolute or relative to the `config` location, and the file must be UTF-8 encoded. Each stop word in the file must be separated by a line break.
            type: string
        required:
        - type
    _types.analysis.SynonymGraphTokenFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.SynonymTokenFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - synonym_graph
        required:
        - type
    _types.analysis.SynonymTokenFilterBase:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenFilterBase"
      - type: object
        properties:
          expand:
            description: Expands definitions for equivalent synonym rules. Defaults
              to `true`.
            type: boolean
          format:
            description: Sets the synonym rules format.
            allOf:
            - "$ref": "#/components/schemas/_types.analysis.SynonymFormat"
          lenient:
            description: If `true` ignores errors while parsing the synonym rules.
              It is important to note that only those synonym rules which cannot get
              parsed are ignored. Defaults to the value of the `updateable` setting.
            type: boolean
          synonyms:
            description: Used to define inline synonyms.
            type: array
            items:
              type: string
          synonyms_path:
            description: Used to provide a synonym file. This path must be absolute
              or relative to the `config` location.
            type: string
          synonyms_set:
            description: Provide a synonym set created via Synonyms Management APIs.
            type: string
          tokenizer:
            deprecated: true
            description: Controls the tokenizers that will be used to tokenize the
              synonym, this parameter is for backwards compatibility for indices that
              created before 6.0.
            type: string
          updateable:
            description: If `true` allows reloading search analyzers to pick up changes
              to synonym files. Only to be used for search analyzers. Defaults to
              `false`.
            type: boolean
    _types.analysis.SynonymFormat:
      type: string
      enum:
      - solr
      - wordnet
    _types.analysis.SynonymTokenFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.SynonymTokenFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - synonym
        required:
        - type
    _types.analysis.TrimTokenFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - trim
        required:
        - type
    _types.analysis.TruncateTokenFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - truncate
          length:
            description: Character limit for each token. Tokens exceeding this limit
              are truncated. Defaults to `10`.
            type: number
        required:
        - type
    _types.analysis.UniqueTokenFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - unique
          only_on_same_position:
            description: If `true`, only remove duplicate tokens in the same position.
              Defaults to `false`.
            type: boolean
        required:
        - type
    _types.analysis.UppercaseTokenFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - uppercase
        required:
        - type
    _types.analysis.WordDelimiterGraphTokenFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.WordDelimiterTokenFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - word_delimiter_graph
          adjust_offsets:
            description: If `true`, the filter adjusts the offsets of split or catenated
              tokens to better reflect their actual position in the token stream.
              Defaults to `true`.
            type: boolean
          ignore_keywords:
            description: If `true`, the filter skips tokens with a keyword attribute
              of true. Defaults to `false`.
            type: boolean
        required:
        - type
    _types.analysis.WordDelimiterTokenFilterBase:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenFilterBase"
      - type: object
        properties:
          catenate_all:
            description: If `true`, the filter produces catenated tokens for chains
              of alphanumeric characters separated by non-alphabetic delimiters. Defaults
              to `false`.
            type: boolean
          catenate_numbers:
            description: If `true`, the filter produces catenated tokens for chains
              of numeric characters separated by non-alphabetic delimiters. Defaults
              to `false`.
            type: boolean
          catenate_words:
            description: If `true`, the filter produces catenated tokens for chains
              of alphabetical characters separated by non-alphabetic delimiters. Defaults
              to `false`.
            type: boolean
          generate_number_parts:
            description: If `true`, the filter includes tokens consisting of only
              numeric characters in the output. If `false`, the filter excludes these
              tokens from the output. Defaults to `true`.
            type: boolean
          generate_word_parts:
            description: If `true`, the filter includes tokens consisting of only
              alphabetical characters in the output. If `false`, the filter excludes
              these tokens from the output. Defaults to `true`.
            type: boolean
          preserve_original:
            description: If `true`, the filter includes the original version of any
              split tokens in the output. This original version includes non-alphanumeric
              delimiters. Defaults to `false`.
            allOf:
            - "$ref": "#/components/schemas/_spec_utils.Stringifiedboolean"
          protected_words:
            description: Array of tokens the filter won’t split.
            type: array
            items:
              type: string
          protected_words_path:
            description: |-
              Path to a file that contains a list of tokens the filter won’t split.
              This path must be absolute or relative to the `config` location, and the file must be UTF-8 encoded. Each token in the file must be separated by a line break.
            type: string
          split_on_case_change:
            description: 'If `true`, the filter splits tokens at letter case transitions.
              For example: camelCase -> [ camel, Case ]. Defaults to `true`.'
            type: boolean
          split_on_numerics:
            description: 'If `true`, the filter splits tokens at letter-number transitions.
              For example: j2se -> [ j, 2, se ]. Defaults to `true`.'
            type: boolean
          stem_english_possessive:
            description: 'If `true`, the filter removes the English possessive (`''s`)
              from the end of each token. For example: O''Neil''s -> [ O, Neil ].
              Defaults to `true`.'
            type: boolean
          type_table:
            description: Array of custom type mappings for characters. This allows
              you to map non-alphanumeric characters as numeric or alphanumeric to
              avoid splitting on those characters.
            type: array
            items:
              type: string
          type_table_path:
            description: Path to a file that contains custom type mappings for characters.
              This allows you to map non-alphanumeric characters as numeric or alphanumeric
              to avoid splitting on those characters.
            type: string
    _types.analysis.WordDelimiterTokenFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.WordDelimiterTokenFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - word_delimiter
        required:
        - type
    _types.analysis.JaStopTokenFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - ja_stop
          stopwords:
            allOf:
            - "$ref": "#/components/schemas/_types.analysis.StopWords"
        required:
        - type
    _types.analysis.KuromojiStemmerTokenFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - kuromoji_stemmer
          minimum_length:
            type: number
        required:
        - type
        - minimum_length
    _types.analysis.KuromojiReadingFormTokenFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - kuromoji_readingform
          use_romaji:
            type: boolean
        required:
        - type
        - use_romaji
    _types.analysis.KuromojiPartOfSpeechTokenFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - kuromoji_part_of_speech
          stoptags:
            type: array
            items:
              type: string
        required:
        - type
        - stoptags
    _types.analysis.IcuCollationTokenFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - icu_collation
          alternate:
            allOf:
            - "$ref": "#/components/schemas/_types.analysis.IcuCollationAlternate"
          caseFirst:
            allOf:
            - "$ref": "#/components/schemas/_types.analysis.IcuCollationCaseFirst"
          caseLevel:
            type: boolean
          country:
            type: string
          decomposition:
            allOf:
            - "$ref": "#/components/schemas/_types.analysis.IcuCollationDecomposition"
          hiraganaQuaternaryMode:
            type: boolean
          language:
            type: string
          numeric:
            type: boolean
          rules:
            type: string
          strength:
            allOf:
            - "$ref": "#/components/schemas/_types.analysis.IcuCollationStrength"
          variableTop:
            type: string
          variant:
            type: string
        required:
        - type
    _types.analysis.IcuCollationAlternate:
      type: string
      enum:
      - shifted
      - non-ignorable
    _types.analysis.IcuCollationCaseFirst:
      type: string
      enum:
      - lower
      - upper
    _types.analysis.IcuCollationDecomposition:
      type: string
      enum:
      - 'no'
      - identical
    _types.analysis.IcuCollationStrength:
      type: string
      enum:
      - primary
      - secondary
      - tertiary
      - quaternary
      - identical
    _types.analysis.IcuFoldingTokenFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - icu_folding
          unicode_set_filter:
            type: string
        required:
        - type
        - unicode_set_filter
    _types.analysis.IcuNormalizationTokenFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - icu_normalizer
          name:
            allOf:
            - "$ref": "#/components/schemas/_types.analysis.IcuNormalizationType"
        required:
        - type
        - name
    _types.analysis.IcuTransformTokenFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - icu_transform
          dir:
            allOf:
            - "$ref": "#/components/schemas/_types.analysis.IcuTransformDirection"
          id:
            type: string
        required:
        - type
        - id
    _types.analysis.IcuTransformDirection:
      type: string
      enum:
      - forward
      - reverse
    _types.analysis.PhoneticTokenFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - phonetic
          encoder:
            allOf:
            - "$ref": "#/components/schemas/_types.analysis.PhoneticEncoder"
          languageset:
            description: |2+


              Supported values include: `any`, `common`, `cyrillic`, `english`, `french`, `german`, `hebrew`, `hungarian`, `polish`, `romanian`, `russian`, `spanish`

            oneOf:
            - "$ref": "#/components/schemas/_types.analysis.PhoneticLanguage"
            - type: array
              items:
                "$ref": "#/components/schemas/_types.analysis.PhoneticLanguage"
          max_code_len:
            type: number
          name_type:
            allOf:
            - "$ref": "#/components/schemas/_types.analysis.PhoneticNameType"
          replace:
            type: boolean
          rule_type:
            allOf:
            - "$ref": "#/components/schemas/_types.analysis.PhoneticRuleType"
        required:
        - type
        - encoder
    _types.analysis.PhoneticEncoder:
      type: string
      enum:
      - metaphone
      - double_metaphone
      - soundex
      - refined_soundex
      - caverphone1
      - caverphone2
      - cologne
      - nysiis
      - koelnerphonetik
      - haasephonetik
      - beider_morse
      - daitch_mokotoff
    _types.analysis.PhoneticLanguage:
      type: string
      enum:
      - any
      - common
      - cyrillic
      - english
      - french
      - german
      - hebrew
      - hungarian
      - polish
      - romanian
      - russian
      - spanish
    _types.analysis.PhoneticNameType:
      type: string
      enum:
      - generic
      - ashkenazi
      - sephardic
    _types.analysis.PhoneticRuleType:
      type: string
      enum:
      - approx
      - exact
    _types.analysis.DictionaryDecompounderTokenFilter:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.CompoundWordTokenFilterBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - dictionary_decompounder
        required:
        - type
    _types.analysis.Normalizer:
      discriminator:
        propertyName: type
        mapping:
          custom: "#/components/schemas/_types.analysis.CustomNormalizer"
          lowercase: "#/components/schemas/_types.analysis.LowercaseNormalizer"
      oneOf:
      - "$ref": "#/components/schemas/_types.analysis.LowercaseNormalizer"
      - "$ref": "#/components/schemas/_types.analysis.CustomNormalizer"
    _types.analysis.LowercaseNormalizer:
      type: object
      properties:
        type:
          type: string
          enum:
          - lowercase
      required:
      - type
    _types.analysis.CustomNormalizer:
      type: object
      properties:
        type:
          type: string
          enum:
          - custom
        char_filter:
          type: array
          items:
            type: string
        filter:
          type: array
          items:
            type: string
      required:
      - type
    _types.analysis.Tokenizer:
      externalDocs:
        url: https://www.elastic.co/docs/reference/text-analysis/tokenizer-reference
      x-model: true
    _types.analysis.TokenizerDefinition:
      discriminator:
        propertyName: type
        mapping:
          char_group: "#/components/schemas/_types.analysis.CharGroupTokenizer"
          classic: "#/components/schemas/_types.analysis.ClassicTokenizer"
          edge_ngram: "#/components/schemas/_types.analysis.EdgeNGramTokenizer"
          icu_tokenizer: "#/components/schemas/_types.analysis.IcuTokenizer"
          keyword: "#/components/schemas/_types.analysis.KeywordTokenizer"
          kuromoji_tokenizer: "#/components/schemas/_types.analysis.KuromojiTokenizer"
          letter: "#/components/schemas/_types.analysis.LetterTokenizer"
          lowercase: "#/components/schemas/_types.analysis.LowercaseTokenizer"
          ngram: "#/components/schemas/_types.analysis.NGramTokenizer"
          nori_tokenizer: "#/components/schemas/_types.analysis.NoriTokenizer"
          path_hierarchy: "#/components/schemas/_types.analysis.PathHierarchyTokenizer"
          pattern: "#/components/schemas/_types.analysis.PatternTokenizer"
          simple_pattern: "#/components/schemas/_types.analysis.SimplePatternTokenizer"
          simple_pattern_split: "#/components/schemas/_types.analysis.SimplePatternSplitTokenizer"
          standard: "#/components/schemas/_types.analysis.StandardTokenizer"
          thai: "#/components/schemas/_types.analysis.ThaiTokenizer"
          uax_url_email: "#/components/schemas/_types.analysis.UaxEmailUrlTokenizer"
          whitespace: "#/components/schemas/_types.analysis.WhitespaceTokenizer"
      oneOf:
      - "$ref": "#/components/schemas/_types.analysis.CharGroupTokenizer"
      - "$ref": "#/components/schemas/_types.analysis.ClassicTokenizer"
      - "$ref": "#/components/schemas/_types.analysis.EdgeNGramTokenizer"
      - "$ref": "#/components/schemas/_types.analysis.KeywordTokenizer"
      - "$ref": "#/components/schemas/_types.analysis.LetterTokenizer"
      - "$ref": "#/components/schemas/_types.analysis.LowercaseTokenizer"
      - "$ref": "#/components/schemas/_types.analysis.NGramTokenizer"
      - "$ref": "#/components/schemas/_types.analysis.PathHierarchyTokenizer"
      - "$ref": "#/components/schemas/_types.analysis.PatternTokenizer"
      - "$ref": "#/components/schemas/_types.analysis.SimplePatternTokenizer"
      - "$ref": "#/components/schemas/_types.analysis.SimplePatternSplitTokenizer"
      - "$ref": "#/components/schemas/_types.analysis.StandardTokenizer"
      - "$ref": "#/components/schemas/_types.analysis.ThaiTokenizer"
      - "$ref": "#/components/schemas/_types.analysis.UaxEmailUrlTokenizer"
      - "$ref": "#/components/schemas/_types.analysis.WhitespaceTokenizer"
      - "$ref": "#/components/schemas/_types.analysis.IcuTokenizer"
      - "$ref": "#/components/schemas/_types.analysis.KuromojiTokenizer"
      - "$ref": "#/components/schemas/_types.analysis.NoriTokenizer"
    _types.analysis.CharGroupTokenizer:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenizerBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - char_group
          tokenize_on_chars:
            type: array
            items:
              type: string
          max_token_length:
            type: number
        required:
        - type
        - tokenize_on_chars
    _types.analysis.TokenizerBase:
      type: object
      properties:
        version:
          allOf:
          - "$ref": "#/components/schemas/_types.VersionString"
    _types.analysis.ClassicTokenizer:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenizerBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - classic
          max_token_length:
            type: number
        required:
        - type
    _types.analysis.EdgeNGramTokenizer:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenizerBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - edge_ngram
          custom_token_chars:
            type: string
          max_gram:
            type: number
          min_gram:
            type: number
          token_chars:
            default: []
            type: array
            items:
              "$ref": "#/components/schemas/_types.analysis.TokenChar"
        required:
        - type
    _types.analysis.TokenChar:
      type: string
      enum:
      - letter
      - digit
      - whitespace
      - punctuation
      - symbol
      - custom
    _types.analysis.KeywordTokenizer:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenizerBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - keyword
          buffer_size:
            default: 256
            type: number
        required:
        - type
    _types.analysis.LetterTokenizer:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenizerBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - letter
        required:
        - type
    _types.analysis.LowercaseTokenizer:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenizerBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - lowercase
        required:
        - type
    _types.analysis.NGramTokenizer:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenizerBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - ngram
          custom_token_chars:
            type: string
          max_gram:
            type: number
          min_gram:
            type: number
          token_chars:
            default: []
            type: array
            items:
              "$ref": "#/components/schemas/_types.analysis.TokenChar"
        required:
        - type
    _types.analysis.PathHierarchyTokenizer:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenizerBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - path_hierarchy
          buffer_size:
            allOf:
            - "$ref": "#/components/schemas/_spec_utils.Stringifiedinteger"
          delimiter:
            type: string
          replacement:
            type: string
          reverse:
            allOf:
            - "$ref": "#/components/schemas/_spec_utils.Stringifiedboolean"
          skip:
            allOf:
            - "$ref": "#/components/schemas/_spec_utils.Stringifiedinteger"
        required:
        - type
    _types.analysis.PatternTokenizer:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenizerBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - pattern
          flags:
            type: string
          group:
            type: number
          pattern:
            type: string
        required:
        - type
    _types.analysis.SimplePatternTokenizer:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenizerBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - simple_pattern
          pattern:
            type: string
        required:
        - type
    _types.analysis.SimplePatternSplitTokenizer:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenizerBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - simple_pattern_split
          pattern:
            type: string
        required:
        - type
    _types.analysis.StandardTokenizer:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenizerBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - standard
          max_token_length:
            type: number
        required:
        - type
    _types.analysis.ThaiTokenizer:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenizerBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - thai
        required:
        - type
    _types.analysis.UaxEmailUrlTokenizer:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenizerBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - uax_url_email
          max_token_length:
            type: number
        required:
        - type
    _types.analysis.WhitespaceTokenizer:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenizerBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - whitespace
          max_token_length:
            type: number
        required:
        - type
    _types.analysis.IcuTokenizer:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenizerBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - icu_tokenizer
          rule_files:
            type: string
        required:
        - type
        - rule_files
    _types.analysis.KuromojiTokenizer:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenizerBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - kuromoji_tokenizer
          discard_punctuation:
            type: boolean
          mode:
            allOf:
            - "$ref": "#/components/schemas/_types.analysis.KuromojiTokenizationMode"
          nbest_cost:
            type: number
          nbest_examples:
            type: string
          user_dictionary:
            type: string
          user_dictionary_rules:
            type: array
            items:
              type: string
          discard_compound_token:
            type: boolean
        required:
        - type
        - mode
    _types.analysis.NoriTokenizer:
      allOf:
      - "$ref": "#/components/schemas/_types.analysis.TokenizerBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - nori_tokenizer
          decompound_mode:
            allOf:
            - "$ref": "#/components/schemas/_types.analysis.NoriDecompoundMode"
          discard_punctuation:
            type: boolean
          user_dictionary:
            type: string
          user_dictionary_rules:
            type: array
            items:
              type: string
        required:
        - type
    indices._types.IndexSettingsTimeSeries:
      type: object
      properties:
        end_time:
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
        start_time:
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
    indices._types.Queries:
      type: object
      properties:
        cache:
          allOf:
          - "$ref": "#/components/schemas/indices._types.CacheQueries"
    indices._types.CacheQueries:
      type: object
      properties:
        enabled:
          type: boolean
      required:
      - enabled
    indices._types.SettingsSimilarity:
      discriminator:
        propertyName: type
        mapping:
          BM25: "#/components/schemas/indices._types.SettingsSimilarityBm25"
          DFI: "#/components/schemas/indices._types.SettingsSimilarityDfi"
          DFR: "#/components/schemas/indices._types.SettingsSimilarityDfr"
          IB: "#/components/schemas/indices._types.SettingsSimilarityIb"
          LMDirichlet: "#/components/schemas/indices._types.SettingsSimilarityLmd"
          LMJelinekMercer: "#/components/schemas/indices._types.SettingsSimilarityLmj"
          boolean: "#/components/schemas/indices._types.SettingsSimilarityBoolean"
          scripted: "#/components/schemas/indices._types.SettingsSimilarityScripted"
      oneOf:
      - "$ref": "#/components/schemas/indices._types.SettingsSimilarityBm25"
      - "$ref": "#/components/schemas/indices._types.SettingsSimilarityBoolean"
      - "$ref": "#/components/schemas/indices._types.SettingsSimilarityDfi"
      - "$ref": "#/components/schemas/indices._types.SettingsSimilarityDfr"
      - "$ref": "#/components/schemas/indices._types.SettingsSimilarityIb"
      - "$ref": "#/components/schemas/indices._types.SettingsSimilarityLmd"
      - "$ref": "#/components/schemas/indices._types.SettingsSimilarityLmj"
      - "$ref": "#/components/schemas/indices._types.SettingsSimilarityScripted"
    indices._types.SettingsSimilarityBm25:
      type: object
      properties:
        type:
          type: string
          enum:
          - BM25
        b:
          type: number
        discount_overlaps:
          type: boolean
        k1:
          type: number
      required:
      - type
    indices._types.SettingsSimilarityBoolean:
      type: object
      properties:
        type:
          type: string
          enum:
          - boolean
      required:
      - type
    indices._types.SettingsSimilarityDfi:
      type: object
      properties:
        type:
          type: string
          enum:
          - DFI
        independence_measure:
          allOf:
          - "$ref": "#/components/schemas/_types.DFIIndependenceMeasure"
      required:
      - type
      - independence_measure
    _types.DFIIndependenceMeasure:
      type: string
      enum:
      - standardized
      - saturated
      - chisquared
    indices._types.SettingsSimilarityDfr:
      type: object
      properties:
        type:
          type: string
          enum:
          - DFR
        after_effect:
          allOf:
          - "$ref": "#/components/schemas/_types.DFRAfterEffect"
        basic_model:
          allOf:
          - "$ref": "#/components/schemas/_types.DFRBasicModel"
        normalization:
          allOf:
          - "$ref": "#/components/schemas/_types.Normalization"
      required:
      - type
      - after_effect
      - basic_model
      - normalization
    _types.DFRAfterEffect:
      type: string
      enum:
      - 'no'
      - b
      - l
    _types.DFRBasicModel:
      type: string
      enum:
      - be
      - d
      - g
      - if
      - in
      - ine
      - p
    _types.Normalization:
      type: string
      enum:
      - 'no'
      - h1
      - h2
      - h3
      - z
    indices._types.SettingsSimilarityIb:
      type: object
      properties:
        type:
          type: string
          enum:
          - IB
        distribution:
          allOf:
          - "$ref": "#/components/schemas/_types.IBDistribution"
        lambda:
          allOf:
          - "$ref": "#/components/schemas/_types.IBLambda"
        normalization:
          allOf:
          - "$ref": "#/components/schemas/_types.Normalization"
      required:
      - type
      - distribution
      - lambda
      - normalization
    _types.IBDistribution:
      type: string
      enum:
      - ll
      - spl
    _types.IBLambda:
      type: string
      enum:
      - df
      - ttf
    indices._types.SettingsSimilarityLmd:
      type: object
      properties:
        type:
          type: string
          enum:
          - LMDirichlet
        mu:
          type: number
      required:
      - type
    indices._types.SettingsSimilarityLmj:
      type: object
      properties:
        type:
          type: string
          enum:
          - LMJelinekMercer
        lambda:
          type: number
      required:
      - type
    indices._types.SettingsSimilarityScripted:
      type: object
      properties:
        type:
          type: string
          enum:
          - scripted
        script:
          allOf:
          - "$ref": "#/components/schemas/_types.Script"
        weight_script:
          allOf:
          - "$ref": "#/components/schemas/_types.Script"
      required:
      - type
      - script
    indices._types.MappingLimitSettings:
      description: Mapping Limit Settings
      type: object
      properties:
        coerce:
          type: boolean
        total_fields:
          allOf:
          - "$ref": "#/components/schemas/indices._types.MappingLimitSettingsTotalFields"
        depth:
          allOf:
          - "$ref": "#/components/schemas/indices._types.MappingLimitSettingsDepth"
        nested_fields:
          allOf:
          - "$ref": "#/components/schemas/indices._types.MappingLimitSettingsNestedFields"
        nested_objects:
          allOf:
          - "$ref": "#/components/schemas/indices._types.MappingLimitSettingsNestedObjects"
        field_name_length:
          allOf:
          - "$ref": "#/components/schemas/indices._types.MappingLimitSettingsFieldNameLength"
        dimension_fields:
          allOf:
          - "$ref": "#/components/schemas/indices._types.MappingLimitSettingsDimensionFields"
        source:
          allOf:
          - "$ref": "#/components/schemas/indices._types.MappingLimitSettingsSourceFields"
        ignore_malformed:
          oneOf:
          - type: boolean
          - type: string
    indices._types.MappingLimitSettingsTotalFields:
      type: object
      properties:
        limit:
          description: |-
            The maximum number of fields in an index. Field and object mappings, as well as field aliases count towards this limit.
            The limit is in place to prevent mappings and searches from becoming too large. Higher values can lead to performance
            degradations and memory issues, especially in clusters with a high load or few resources.
          default: '1000'
          oneOf:
          - type: number
          - type: string
        ignore_dynamic_beyond_limit:
          description: |-
            This setting determines what happens when a dynamically mapped field would exceed the total fields limit. When set
            to false (the default), the index request of the document that tries to add a dynamic field to the mapping will fail
            with the message Limit of total fields [X] has been exceeded. When set to true, the index request will not fail.
            Instead, fields that would exceed the limit are not added to the mapping, similar to dynamic: false.
            The fields that were not added to the mapping will be added to the _ignored field.
          default: 'false'
          oneOf:
          - type: boolean
          - type: string
    indices._types.MappingLimitSettingsDepth:
      type: object
      properties:
        limit:
          description: |-
            The maximum depth for a field, which is measured as the number of inner objects. For instance, if all fields are defined
            at the root object level, then the depth is 1. If there is one object mapping, then the depth is 2, etc.
          default: 20
          type: number
    indices._types.MappingLimitSettingsNestedFields:
      type: object
      properties:
        limit:
          description: |-
            The maximum number of distinct nested mappings in an index. The nested type should only be used in special cases, when
            arrays of objects need to be queried independently of each other. To safeguard against poorly designed mappings, this
            setting limits the number of unique nested types per index.
          default: 50
          type: number
    indices._types.MappingLimitSettingsNestedObjects:
      type: object
      properties:
        limit:
          description: |-
            The maximum number of nested JSON objects that a single document can contain across all nested types. This limit helps
            to prevent out of memory errors when a document contains too many nested objects.
          default: 10000
          type: number
    indices._types.MappingLimitSettingsFieldNameLength:
      type: object
      properties:
        limit:
          description: |-
            Setting for the maximum length of a field name. This setting isn’t really something that addresses mappings explosion but
            might still be useful if you want to limit the field length. It usually shouldn’t be necessary to set this setting. The
            default is okay unless a user starts to add a huge number of fields with really long names. Default is `Long.MAX_VALUE` (no limit).
          type: number
    indices._types.MappingLimitSettingsDimensionFields:
      type: object
      properties:
        limit:
          description: |-
            [preview] This functionality is in technical preview and may be changed or removed in a future release.
            Elastic will work to fix any issues, but features in technical preview are not subject to the support SLA of official GA features.
          type: number
    indices._types.MappingLimitSettingsSourceFields:
      type: object
      properties:
        mode:
          allOf:
          - "$ref": "#/components/schemas/indices._types.SourceMode"
      required:
      - mode
    indices._types.SourceMode:
      type: string
      enum:
      - disabled
      - stored
      - synthetic
    indices._types.IndexingSlowlogSettings:
      type: object
      properties:
        level:
          type: string
        source:
          type: number
        reformat:
          type: boolean
        threshold:
          allOf:
          - "$ref": "#/components/schemas/indices._types.IndexingSlowlogTresholds"
    indices._types.IndexingSlowlogTresholds:
      type: object
      properties:
        index:
          description: |-
            The indexing slow log, similar in functionality to the search slow log. The log file name ends with `_index_indexing_slowlog.json`.
            Log and the thresholds are configured in the same way as the search slowlog.
          allOf:
          - "$ref": "#/components/schemas/indices._types.SlowlogTresholdLevels"
    indices._types.IndexingPressure:
      type: object
      properties:
        memory:
          allOf:
          - "$ref": "#/components/schemas/indices._types.IndexingPressureMemory"
      required:
      - memory
    indices._types.IndexingPressureMemory:
      type: object
      properties:
        limit:
          description: |-
            Number of outstanding bytes that may be consumed by indexing requests. When this limit is reached or exceeded,
            the node will reject new coordinating and primary operations. When replica operations consume 1.5x this limit,
            the node will reject new replica operations. Defaults to 10% of the heap.
          type: number
    indices._types.Storage:
      type: object
      properties:
        type:
          description: |2+


            Supported values include:
              - `fs`: Default file system implementation. This will pick the best implementation depending on the operating environment, which
            is currently hybridfs on all supported systems but is subject to change.
              - `niofs`: The NIO FS type stores the shard index on the file system (maps to Lucene NIOFSDirectory) using NIO. It allows multiple
            threads to read from the same file concurrently. It is not recommended on Windows because of a bug in the SUN Java
            implementation and disables some optimizations for heap memory usage.
              - `mmapfs`: The MMap FS type stores the shard index on the file system (maps to Lucene MMapDirectory) by mapping a file into
            memory (mmap). Memory mapping uses up a portion of the virtual memory address space in your process equal to the size
            of the file being mapped. Before using this class, be sure you have allowed plenty of virtual address space.
              - `hybridfs`: The hybridfs type is a hybrid of niofs and mmapfs, which chooses the best file system type for each type of file
            based on the read access pattern. Currently only the Lucene term dictionary, norms and doc values files are memory
            mapped. All other files are opened using Lucene NIOFSDirectory. Similarly to mmapfs be sure you have allowed
            plenty of virtual address space.

          allOf:
          - "$ref": "#/components/schemas/indices._types.StorageType"
        allow_mmap:
          description: |-
            You can restrict the use of the mmapfs and the related hybridfs store type via the setting node.store.allow_mmap.
            This is a boolean setting indicating whether or not memory-mapping is allowed. The default is to allow it. This
            setting is useful, for example, if you are in an environment where you can not control the ability to create a lot
            of memory maps so you need disable the ability to use memory-mapping.
          type: boolean
        stats_refresh_interval:
          description: How often store statistics are refreshed
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
      required:
      - type
    indices._types.StorageType:
      anyOf:
      - type: string
        enum:
        - fs
        - niofs
        - mmapfs
        - hybridfs
      - type: string
    ccr.follow_info.FollowerIndex:
      type: object
      properties:
        follower_index:
          description: The name of the follower index.
          allOf:
          - "$ref": "#/components/schemas/_types.IndexName"
        leader_index:
          description: The name of the index in the leader cluster that is followed.
          allOf:
          - "$ref": "#/components/schemas/_types.IndexName"
        parameters:
          description: An object that encapsulates cross-cluster replication parameters.
            If the follower index's status is paused, this object is omitted.
          allOf:
          - "$ref": "#/components/schemas/ccr.follow_info.FollowerIndexParameters"
        remote_cluster:
          description: The remote cluster that contains the leader index.
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        status:
          description: 'The status of the index following: `active` or `paused`.'
          allOf:
          - "$ref": "#/components/schemas/ccr.follow_info.FollowerIndexStatus"
      required:
      - follower_index
      - leader_index
      - remote_cluster
      - status
    ccr.follow_info.FollowerIndexParameters:
      type: object
      properties:
        max_outstanding_read_requests:
          description: The maximum number of outstanding reads requests from the remote
            cluster.
          type: number
        max_outstanding_write_requests:
          description: The maximum number of outstanding write requests on the follower.
          type: number
        max_read_request_operation_count:
          description: The maximum number of operations to pull per read from the
            remote cluster.
          type: number
        max_read_request_size:
          description: The maximum size in bytes of per read of a batch of operations
            pulled from the remote cluster.
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        max_retry_delay:
          description: |-
            The maximum time to wait before retrying an operation that failed exceptionally. An exponential backoff strategy is employed when
            retrying.
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        max_write_buffer_count:
          description: |-
            The maximum number of operations that can be queued for writing. When this limit is reached, reads from the remote cluster will be
            deferred until the number of queued operations goes below the limit.
          type: number
        max_write_buffer_size:
          description: |-
            The maximum total bytes of operations that can be queued for writing. When this limit is reached, reads from the remote cluster will
            be deferred until the total bytes of queued operations goes below the limit.
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        max_write_request_operation_count:
          description: The maximum number of operations per bulk write request executed
            on the follower.
          type: number
        max_write_request_size:
          description: The maximum total bytes of operations per bulk write request
            executed on the follower.
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        read_poll_timeout:
          description: |-
            The maximum time to wait for new operations on the remote cluster when the follower index is synchronized with the leader index.
            When the timeout has elapsed, the poll for operations will return to the follower so that it can update some statistics.
            Then the follower will immediately attempt to read from the leader again.
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
    ccr.follow_info.FollowerIndexStatus:
      type: string
      enum:
      - active
      - paused
    ccr._types.FollowIndexStats:
      type: object
      properties:
        index:
          description: The name of the follower index.
          allOf:
          - "$ref": "#/components/schemas/_types.IndexName"
        shards:
          description: An array of shard-level following task statistics.
          type: array
          items:
            "$ref": "#/components/schemas/ccr._types.ShardStats"
      required:
      - index
      - shards
    ccr._types.ShardStats:
      type: object
      properties:
        bytes_read:
          description: |-
            The total of transferred bytes read from the leader.
            This is only an estimate and does not account for compression if enabled.
          type: number
        failed_read_requests:
          description: The number of failed reads.
          type: number
        failed_write_requests:
          description: The number of failed bulk write requests on the follower.
          type: number
        fatal_exception:
          allOf:
          - "$ref": "#/components/schemas/_types.ErrorCause"
        follower_aliases_version:
          description: The index aliases version the follower is synced up to.
          allOf:
          - "$ref": "#/components/schemas/_types.VersionNumber"
        follower_global_checkpoint:
          description: |-
            The current global checkpoint on the follower.
            The difference between the `leader_global_checkpoint` and the `follower_global_checkpoint` is an indication of how much the follower is lagging the leader.
          type: number
        follower_index:
          description: The name of the follower index.
          type: string
        follower_mapping_version:
          description: The mapping version the follower is synced up to.
          allOf:
          - "$ref": "#/components/schemas/_types.VersionNumber"
        follower_max_seq_no:
          description: The current maximum sequence number on the follower.
          allOf:
          - "$ref": "#/components/schemas/_types.SequenceNumber"
        follower_settings_version:
          description: The index settings version the follower is synced up to.
          allOf:
          - "$ref": "#/components/schemas/_types.VersionNumber"
        last_requested_seq_no:
          description: The starting sequence number of the last batch of operations
            requested from the leader.
          allOf:
          - "$ref": "#/components/schemas/_types.SequenceNumber"
        leader_global_checkpoint:
          description: The current global checkpoint on the leader known to the follower
            task.
          type: number
        leader_index:
          description: The name of the index in the leader cluster being followed.
          type: string
        leader_max_seq_no:
          description: The current maximum sequence number on the leader known to
            the follower task.
          allOf:
          - "$ref": "#/components/schemas/_types.SequenceNumber"
        operations_read:
          description: The total number of operations read from the leader.
          type: number
        operations_written:
          description: The number of operations written on the follower.
          type: number
        outstanding_read_requests:
          description: The number of active read requests from the follower.
          type: number
        outstanding_write_requests:
          description: The number of active bulk write requests on the follower.
          type: number
        read_exceptions:
          description: An array of objects representing failed reads.
          type: array
          items:
            "$ref": "#/components/schemas/ccr._types.ReadException"
        remote_cluster:
          description: The remote cluster containing the leader index.
          type: string
        shard_id:
          description: The numerical shard ID, with values from 0 to one less than
            the number of replicas.
          type: number
        successful_read_requests:
          description: The number of successful fetches.
          type: number
        successful_write_requests:
          description: The number of bulk write requests run on the follower.
          type: number
        time_since_last_read:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        time_since_last_read_millis:
          description: |-
            The number of milliseconds since a read request was sent to the leader.
            When the follower is caught up to the leader, this number will increase up to the configured `read_poll_timeout` at which point another read request will be sent to the leader.
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
        total_read_remote_exec_time:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        total_read_remote_exec_time_millis:
          description: The total time reads spent running on the remote cluster.
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
        total_read_time:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        total_read_time_millis:
          description: The total time reads were outstanding, measured from the time
            a read was sent to the leader to the time a reply was returned to the
            follower.
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
        total_write_time:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        total_write_time_millis:
          description: The total time spent writing on the follower.
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
        write_buffer_operation_count:
          description: The number of write operations queued on the follower.
          type: number
        write_buffer_size_in_bytes:
          description: The total number of bytes of operations currently queued for
            writing.
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
      required:
      - bytes_read
      - failed_read_requests
      - failed_write_requests
      - follower_aliases_version
      - follower_global_checkpoint
      - follower_index
      - follower_mapping_version
      - follower_max_seq_no
      - follower_settings_version
      - last_requested_seq_no
      - leader_global_checkpoint
      - leader_index
      - leader_max_seq_no
      - operations_read
      - operations_written
      - outstanding_read_requests
      - outstanding_write_requests
      - read_exceptions
      - remote_cluster
      - shard_id
      - successful_read_requests
      - successful_write_requests
      - time_since_last_read_millis
      - total_read_remote_exec_time_millis
      - total_read_time_millis
      - total_write_time_millis
      - write_buffer_operation_count
      - write_buffer_size_in_bytes
    ccr._types.ReadException:
      type: object
      properties:
        exception:
          description: The exception that caused the read to fail.
          allOf:
          - "$ref": "#/components/schemas/_types.ErrorCause"
        from_seq_no:
          description: The starting sequence number of the batch requested from the
            leader.
          allOf:
          - "$ref": "#/components/schemas/_types.SequenceNumber"
        retries:
          description: The number of times the batch has been retried.
          type: number
      required:
      - exception
      - from_seq_no
      - retries
    ccr.get_auto_follow_pattern.AutoFollowPattern:
      type: object
      properties:
        name:
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        pattern:
          allOf:
          - "$ref": "#/components/schemas/ccr.get_auto_follow_pattern.AutoFollowPatternSummary"
      required:
      - name
      - pattern
    ccr.get_auto_follow_pattern.AutoFollowPatternSummary:
      type: object
      properties:
        active:
          type: boolean
        remote_cluster:
          description: The remote cluster containing the leader indices to match against.
          type: string
        follow_index_pattern:
          description: The name of follower index.
          allOf:
          - "$ref": "#/components/schemas/_types.IndexPattern"
        leader_index_patterns:
          description: An array of simple index patterns to match against indices
            in the remote cluster specified by the remote_cluster field.
          allOf:
          - "$ref": "#/components/schemas/_types.IndexPatterns"
        leader_index_exclusion_patterns:
          description: An array of simple index patterns that can be used to exclude
            indices from being auto-followed.
          x-state: Generally available; Added in 7.14.0
          allOf:
          - "$ref": "#/components/schemas/_types.IndexPatterns"
        max_outstanding_read_requests:
          description: The maximum number of outstanding reads requests from the remote
            cluster.
          type: number
      required:
      - active
      - remote_cluster
      - leader_index_patterns
      - leader_index_exclusion_patterns
      - max_outstanding_read_requests
    _types.IndexPattern:
      type: string
    _types.IndexPatterns:
      type: array
      items:
        "$ref": "#/components/schemas/_types.IndexPattern"
    ccr.stats.AutoFollowStats:
      type: object
      properties:
        auto_followed_clusters:
          type: array
          items:
            "$ref": "#/components/schemas/ccr.stats.AutoFollowedCluster"
        number_of_failed_follow_indices:
          description: |-
            The number of indices that the auto-follow coordinator failed to automatically follow.
            The causes of recent failures are captured in the logs of the elected master node and in the `auto_follow_stats.recent_auto_follow_errors` field.
          type: number
        number_of_failed_remote_cluster_state_requests:
          description: The number of times that the auto-follow coordinator failed
            to retrieve the cluster state from a remote cluster registered in a collection
            of auto-follow patterns.
          type: number
        number_of_successful_follow_indices:
          description: The number of indices that the auto-follow coordinator successfully
            followed.
          type: number
        recent_auto_follow_errors:
          description: An array of objects representing failures by the auto-follow
            coordinator.
          type: array
          items:
            "$ref": "#/components/schemas/_types.ErrorCause"
      required:
      - auto_followed_clusters
      - number_of_failed_follow_indices
      - number_of_failed_remote_cluster_state_requests
      - number_of_successful_follow_indices
      - recent_auto_follow_errors
    ccr.stats.AutoFollowedCluster:
      type: object
      properties:
        cluster_name:
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        last_seen_metadata_version:
          allOf:
          - "$ref": "#/components/schemas/_types.VersionNumber"
        time_since_last_check_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
      required:
      - cluster_name
      - last_seen_metadata_version
      - time_since_last_check_millis
    ccr.stats.FollowStats:
      type: object
      properties:
        indices:
          type: array
          items:
            "$ref": "#/components/schemas/ccr._types.FollowIndexStats"
      required:
      - indices
    _types.ScrollIds:
      oneOf:
      - "$ref": "#/components/schemas/_types.ScrollId"
      - type: array
        items:
          "$ref": "#/components/schemas/_types.ScrollId"
    cluster.allocation_explain.Decision:
      type: string
      enum:
      - 'yes'
      - 'no'
      - worse_balance
      - throttled
      - awaiting_info
      - allocation_delayed
      - no_valid_shard_copy
      - no_attempt
    cluster.allocation_explain.AllocationDecision:
      type: object
      properties:
        decider:
          type: string
        decision:
          allOf:
          - "$ref": "#/components/schemas/cluster.allocation_explain.AllocationExplainDecision"
        explanation:
          type: string
      required:
      - decider
      - decision
      - explanation
    cluster.allocation_explain.AllocationExplainDecision:
      type: string
      enum:
      - 'NO'
      - 'YES'
      - THROTTLE
      - ALWAYS
    cluster.allocation_explain.ClusterInfo:
      type: object
      properties:
        nodes:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/cluster.allocation_explain.NodeDiskUsage"
        shard_sizes:
          type: object
          additionalProperties:
            type: number
        shard_data_set_sizes:
          type: object
          additionalProperties:
            type: string
        shard_paths:
          type: object
          additionalProperties:
            type: string
        reserved_sizes:
          type: array
          items:
            "$ref": "#/components/schemas/cluster.allocation_explain.ReservedSize"
      required:
      - nodes
      - shard_sizes
      - shard_paths
      - reserved_sizes
    cluster.allocation_explain.NodeDiskUsage:
      type: object
      properties:
        node_name:
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        least_available:
          allOf:
          - "$ref": "#/components/schemas/cluster.allocation_explain.DiskUsage"
        most_available:
          allOf:
          - "$ref": "#/components/schemas/cluster.allocation_explain.DiskUsage"
      required:
      - node_name
      - least_available
      - most_available
    cluster.allocation_explain.DiskUsage:
      type: object
      properties:
        path:
          type: string
        total_bytes:
          type: number
        used_bytes:
          type: number
        free_bytes:
          type: number
        free_disk_percent:
          type: number
        used_disk_percent:
          type: number
      required:
      - path
      - total_bytes
      - used_bytes
      - free_bytes
      - free_disk_percent
      - used_disk_percent
    cluster.allocation_explain.ReservedSize:
      type: object
      properties:
        node_id:
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        path:
          type: string
        total:
          type: number
        shards:
          type: array
          items:
            type: string
      required:
      - node_id
      - path
      - total
      - shards
    cluster.allocation_explain.CurrentNode:
      type: object
      properties:
        id:
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        name:
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        roles:
          x-state: Generally available; Added in 8.11.0
          allOf:
          - "$ref": "#/components/schemas/_types.NodeRoles"
        attributes:
          type: object
          additionalProperties:
            type: string
        transport_address:
          allOf:
          - "$ref": "#/components/schemas/_types.TransportAddress"
        weight_ranking:
          type: number
      required:
      - id
      - name
      - roles
      - attributes
      - transport_address
      - weight_ranking
    _types.NodeRoles:
      type: array
      items:
        "$ref": "#/components/schemas/_types.NodeRole"
    _types.NodeRole:
      type: string
      enum:
      - master
      - data
      - data_cold
      - data_content
      - data_frozen
      - data_hot
      - data_warm
      - client
      - ingest
      - ml
      - voting_only
      - transform
      - remote_cluster_client
      - coordinating_only
    _types.TransportAddress:
      type: string
    cluster.allocation_explain.NodeAllocationExplanation:
      type: object
      properties:
        deciders:
          type: array
          items:
            "$ref": "#/components/schemas/cluster.allocation_explain.AllocationDecision"
        node_attributes:
          type: object
          additionalProperties:
            type: string
        node_decision:
          allOf:
          - "$ref": "#/components/schemas/cluster.allocation_explain.Decision"
        node_id:
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        node_name:
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        roles:
          x-state: Generally available; Added in 8.11.0
          allOf:
          - "$ref": "#/components/schemas/_types.NodeRoles"
        store:
          allOf:
          - "$ref": "#/components/schemas/cluster.allocation_explain.AllocationStore"
        transport_address:
          allOf:
          - "$ref": "#/components/schemas/_types.TransportAddress"
        weight_ranking:
          type: number
      required:
      - node_attributes
      - node_decision
      - node_id
      - node_name
      - roles
      - transport_address
    cluster.allocation_explain.AllocationStore:
      type: object
      properties:
        allocation_id:
          type: string
        found:
          type: boolean
        in_sync:
          type: boolean
        matching_size_in_bytes:
          type: number
        matching_sync_id:
          type: boolean
        store_exception:
          type: string
      required:
      - allocation_id
      - found
      - in_sync
      - matching_size_in_bytes
      - matching_sync_id
      - store_exception
    cluster.allocation_explain.UnassignedInformation:
      type: object
      properties:
        at:
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
        last_allocation_status:
          type: string
        reason:
          allOf:
          - "$ref": "#/components/schemas/cluster.allocation_explain.UnassignedInformationReason"
        details:
          type: string
        failed_allocation_attempts:
          type: number
        delayed:
          type: boolean
        allocation_status:
          type: string
      required:
      - at
      - reason
    cluster.allocation_explain.UnassignedInformationReason:
      type: string
      enum:
      - INDEX_CREATED
      - CLUSTER_RECOVERED
      - INDEX_REOPENED
      - DANGLING_INDEX_IMPORTED
      - NEW_INDEX_RESTORED
      - EXISTING_INDEX_RESTORED
      - REPLICA_ADDED
      - ALLOCATION_FAILED
      - NODE_LEFT
      - REROUTE_CANCELLED
      - REINITIALIZED
      - REALLOCATED_REPLICA
      - PRIMARY_FAILED
      - FORCED_EMPTY_PRIMARY
      - MANUAL_ALLOCATION
    cluster._types.ComponentTemplate:
      type: object
      properties:
        name:
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        component_template:
          allOf:
          - "$ref": "#/components/schemas/cluster._types.ComponentTemplateNode"
      required:
      - name
      - component_template
    cluster._types.ComponentTemplateNode:
      type: object
      properties:
        template:
          allOf:
          - "$ref": "#/components/schemas/cluster._types.ComponentTemplateSummary"
        version:
          allOf:
          - "$ref": "#/components/schemas/_types.VersionNumber"
        _meta:
          allOf:
          - "$ref": "#/components/schemas/_types.Metadata"
        deprecated:
          type: boolean
        created_date:
          description: Date and time when the component template was created. Only
            returned if the `human` query parameter is `true`.
          x-state: Generally available; Added in 9.2.0
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
        created_date_millis:
          description: Date and time when the component template was created, in milliseconds
            since the epoch.
          x-state: Generally available; Added in 9.2.0
          allOf:
          - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
        modified_date:
          description: Date and time when the component template was last modified.
            Only returned if the `human` query parameter is `true`.
          x-state: Generally available; Added in 9.2.0
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
        modified_date_millis:
          description: Date and time when the component template was last modified,
            in milliseconds since the epoch.
          x-state: Generally available; Added in 9.2.0
          allOf:
          - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
      required:
      - template
    cluster._types.ComponentTemplateSummary:
      type: object
      properties:
        _meta:
          allOf:
          - "$ref": "#/components/schemas/_types.Metadata"
        version:
          allOf:
          - "$ref": "#/components/schemas/_types.VersionNumber"
        settings:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/indices._types.IndexSettings"
        mappings:
          allOf:
          - "$ref": "#/components/schemas/_types.mapping.TypeMapping"
        aliases:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/indices._types.AliasDefinition"
        lifecycle:
          x-state: Generally available; Added in 8.11.0
          allOf:
          - "$ref": "#/components/schemas/indices._types.DataStreamLifecycleWithRollover"
        data_stream_options:
          x-state: Generally available; Added in 8.19.0
          allOf:
          - "$ref": "#/components/schemas/indices._types.DataStreamOptions"
    _types.mapping.TypeMapping:
      type: object
      properties:
        all_field:
          allOf:
          - "$ref": "#/components/schemas/_types.mapping.AllField"
        date_detection:
          type: boolean
        dynamic:
          allOf:
          - "$ref": "#/components/schemas/_types.mapping.DynamicMapping"
        dynamic_date_formats:
          type: array
          items:
            type: string
        dynamic_templates:
          type: array
          items:
            type: object
            additionalProperties:
              "$ref": "#/components/schemas/_types.mapping.DynamicTemplate"
            minProperties: 1
            maxProperties: 1
        _field_names:
          allOf:
          - "$ref": "#/components/schemas/_types.mapping.FieldNamesField"
        index_field:
          allOf:
          - "$ref": "#/components/schemas/_types.mapping.IndexField"
        _meta:
          allOf:
          - "$ref": "#/components/schemas/_types.Metadata"
        numeric_detection:
          type: boolean
        properties:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/_types.mapping.Property"
        _routing:
          allOf:
          - "$ref": "#/components/schemas/_types.mapping.RoutingField"
        _size:
          allOf:
          - "$ref": "#/components/schemas/_types.mapping.SizeField"
        _source:
          allOf:
          - "$ref": "#/components/schemas/_types.mapping.SourceField"
        runtime:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/_types.mapping.RuntimeField"
        enabled:
          type: boolean
        subobjects:
          allOf:
          - "$ref": "#/components/schemas/_types.mapping.Subobjects"
        _data_stream_timestamp:
          x-state: Generally available; Added in 7.16.0
          allOf:
          - "$ref": "#/components/schemas/_types.mapping.DataStreamTimestamp"
    _types.mapping.AllField:
      type: object
      properties:
        analyzer:
          type: string
        enabled:
          type: boolean
        omit_norms:
          type: boolean
        search_analyzer:
          type: string
        similarity:
          type: string
        store:
          type: boolean
        store_term_vector_offsets:
          type: boolean
        store_term_vector_payloads:
          type: boolean
        store_term_vector_positions:
          type: boolean
        store_term_vectors:
          type: boolean
      required:
      - analyzer
      - enabled
      - omit_norms
      - search_analyzer
      - similarity
      - store
      - store_term_vector_offsets
      - store_term_vector_payloads
      - store_term_vector_positions
      - store_term_vectors
    _types.mapping.DynamicMapping:
      type: string
      enum:
      - strict
      - runtime
      - 'true'
      - 'false'
    _types.mapping.DynamicTemplate:
      allOf:
      - type: object
        properties:
          match:
            oneOf:
            - type: string
            - type: array
              items:
                type: string
          path_match:
            oneOf:
            - type: string
            - type: array
              items:
                type: string
          unmatch:
            oneOf:
            - type: string
            - type: array
              items:
                type: string
          path_unmatch:
            oneOf:
            - type: string
            - type: array
              items:
                type: string
          match_mapping_type:
            oneOf:
            - type: string
            - type: array
              items:
                type: string
          unmatch_mapping_type:
            oneOf:
            - type: string
            - type: array
              items:
                type: string
          match_pattern:
            allOf:
            - "$ref": "#/components/schemas/_types.mapping.MatchType"
      - type: object
        properties:
          mapping:
            allOf:
            - "$ref": "#/components/schemas/_types.mapping.Property"
          runtime:
            allOf:
            - "$ref": "#/components/schemas/_types.mapping.RuntimeField"
        minProperties: 1
        maxProperties: 1
    _types.mapping.Property:
      discriminator:
        propertyName: type
        mapping:
          aggregate_metric_double: "#/components/schemas/_types.mapping.AggregateMetricDoubleProperty"
          alias: "#/components/schemas/_types.mapping.FieldAliasProperty"
          binary: "#/components/schemas/_types.mapping.BinaryProperty"
          boolean: "#/components/schemas/_types.mapping.BooleanProperty"
          byte: "#/components/schemas/_types.mapping.ByteNumberProperty"
          completion: "#/components/schemas/_types.mapping.CompletionProperty"
          constant_keyword: "#/components/schemas/_types.mapping.ConstantKeywordProperty"
          counted_keyword: "#/components/schemas/_types.mapping.CountedKeywordProperty"
          date: "#/components/schemas/_types.mapping.DateProperty"
          date_nanos: "#/components/schemas/_types.mapping.DateNanosProperty"
          date_range: "#/components/schemas/_types.mapping.DateRangeProperty"
          dense_vector: "#/components/schemas/_types.mapping.DenseVectorProperty"
          double: "#/components/schemas/_types.mapping.DoubleNumberProperty"
          double_range: "#/components/schemas/_types.mapping.DoubleRangeProperty"
          exponential_histogram: "#/components/schemas/_types.mapping.ExponentialHistogramProperty"
          flattened: "#/components/schemas/_types.mapping.FlattenedProperty"
          float: "#/components/schemas/_types.mapping.FloatNumberProperty"
          float_range: "#/components/schemas/_types.mapping.FloatRangeProperty"
          geo_point: "#/components/schemas/_types.mapping.GeoPointProperty"
          geo_shape: "#/components/schemas/_types.mapping.GeoShapeProperty"
          half_float: "#/components/schemas/_types.mapping.HalfFloatNumberProperty"
          histogram: "#/components/schemas/_types.mapping.HistogramProperty"
          icu_collation_keyword: "#/components/schemas/_types.mapping.IcuCollationProperty"
          integer: "#/components/schemas/_types.mapping.IntegerNumberProperty"
          integer_range: "#/components/schemas/_types.mapping.IntegerRangeProperty"
          ip: "#/components/schemas/_types.mapping.IpProperty"
          ip_range: "#/components/schemas/_types.mapping.IpRangeProperty"
          join: "#/components/schemas/_types.mapping.JoinProperty"
          keyword: "#/components/schemas/_types.mapping.KeywordProperty"
          long: "#/components/schemas/_types.mapping.LongNumberProperty"
          long_range: "#/components/schemas/_types.mapping.LongRangeProperty"
          match_only_text: "#/components/schemas/_types.mapping.MatchOnlyTextProperty"
          murmur3: "#/components/schemas/_types.mapping.Murmur3HashProperty"
          nested: "#/components/schemas/_types.mapping.NestedProperty"
          object: "#/components/schemas/_types.mapping.ObjectProperty"
          passthrough: "#/components/schemas/_types.mapping.PassthroughObjectProperty"
          percolator: "#/components/schemas/_types.mapping.PercolatorProperty"
          point: "#/components/schemas/_types.mapping.PointProperty"
          rank_feature: "#/components/schemas/_types.mapping.RankFeatureProperty"
          rank_features: "#/components/schemas/_types.mapping.RankFeaturesProperty"
          rank_vectors: "#/components/schemas/_types.mapping.RankVectorProperty"
          scaled_float: "#/components/schemas/_types.mapping.ScaledFloatNumberProperty"
          search_as_you_type: "#/components/schemas/_types.mapping.SearchAsYouTypeProperty"
          semantic_text: "#/components/schemas/_types.mapping.SemanticTextProperty"
          shape: "#/components/schemas/_types.mapping.ShapeProperty"
          short: "#/components/schemas/_types.mapping.ShortNumberProperty"
          sparse_vector: "#/components/schemas/_types.mapping.SparseVectorProperty"
          text: "#/components/schemas/_types.mapping.TextProperty"
          token_count: "#/components/schemas/_types.mapping.TokenCountProperty"
          unsigned_long: "#/components/schemas/_types.mapping.UnsignedLongNumberProperty"
          version: "#/components/schemas/_types.mapping.VersionProperty"
          wildcard: "#/components/schemas/_types.mapping.WildcardProperty"
          "{dynamic_type}": "#/components/schemas/_types.mapping.DynamicProperty"
      oneOf:
      - "$ref": "#/components/schemas/_types.mapping.BinaryProperty"
      - "$ref": "#/components/schemas/_types.mapping.BooleanProperty"
      - "$ref": "#/components/schemas/_types.mapping.DynamicProperty"
      - "$ref": "#/components/schemas/_types.mapping.JoinProperty"
      - "$ref": "#/components/schemas/_types.mapping.KeywordProperty"
      - "$ref": "#/components/schemas/_types.mapping.MatchOnlyTextProperty"
      - "$ref": "#/components/schemas/_types.mapping.PercolatorProperty"
      - "$ref": "#/components/schemas/_types.mapping.RankFeatureProperty"
      - "$ref": "#/components/schemas/_types.mapping.RankFeaturesProperty"
      - "$ref": "#/components/schemas/_types.mapping.SearchAsYouTypeProperty"
      - "$ref": "#/components/schemas/_types.mapping.TextProperty"
      - "$ref": "#/components/schemas/_types.mapping.VersionProperty"
      - "$ref": "#/components/schemas/_types.mapping.WildcardProperty"
      - "$ref": "#/components/schemas/_types.mapping.DateNanosProperty"
      - "$ref": "#/components/schemas/_types.mapping.DateProperty"
      - "$ref": "#/components/schemas/_types.mapping.AggregateMetricDoubleProperty"
      - "$ref": "#/components/schemas/_types.mapping.DenseVectorProperty"
      - "$ref": "#/components/schemas/_types.mapping.FlattenedProperty"
      - "$ref": "#/components/schemas/_types.mapping.NestedProperty"
      - "$ref": "#/components/schemas/_types.mapping.ObjectProperty"
      - "$ref": "#/components/schemas/_types.mapping.PassthroughObjectProperty"
      - "$ref": "#/components/schemas/_types.mapping.RankVectorProperty"
      - "$ref": "#/components/schemas/_types.mapping.SemanticTextProperty"
      - "$ref": "#/components/schemas/_types.mapping.SparseVectorProperty"
      - "$ref": "#/components/schemas/_types.mapping.CompletionProperty"
      - "$ref": "#/components/schemas/_types.mapping.ConstantKeywordProperty"
      - "$ref": "#/components/schemas/_types.mapping.CountedKeywordProperty"
      - "$ref": "#/components/schemas/_types.mapping.FieldAliasProperty"
      - "$ref": "#/components/schemas/_types.mapping.HistogramProperty"
      - "$ref": "#/components/schemas/_types.mapping.ExponentialHistogramProperty"
      - "$ref": "#/components/schemas/_types.mapping.IpProperty"
      - "$ref": "#/components/schemas/_types.mapping.Murmur3HashProperty"
      - "$ref": "#/components/schemas/_types.mapping.TokenCountProperty"
      - "$ref": "#/components/schemas/_types.mapping.GeoPointProperty"
      - "$ref": "#/components/schemas/_types.mapping.GeoShapeProperty"
      - "$ref": "#/components/schemas/_types.mapping.PointProperty"
      - "$ref": "#/components/schemas/_types.mapping.ShapeProperty"
      - "$ref": "#/components/schemas/_types.mapping.ByteNumberProperty"
      - "$ref": "#/components/schemas/_types.mapping.DoubleNumberProperty"
      - "$ref": "#/components/schemas/_types.mapping.FloatNumberProperty"
      - "$ref": "#/components/schemas/_types.mapping.HalfFloatNumberProperty"
      - "$ref": "#/components/schemas/_types.mapping.IntegerNumberProperty"
      - "$ref": "#/components/schemas/_types.mapping.LongNumberProperty"
      - "$ref": "#/components/schemas/_types.mapping.ScaledFloatNumberProperty"
      - "$ref": "#/components/schemas/_types.mapping.ShortNumberProperty"
      - "$ref": "#/components/schemas/_types.mapping.UnsignedLongNumberProperty"
      - "$ref": "#/components/schemas/_types.mapping.DateRangeProperty"
      - "$ref": "#/components/schemas/_types.mapping.DoubleRangeProperty"
      - "$ref": "#/components/schemas/_types.mapping.FloatRangeProperty"
      - "$ref": "#/components/schemas/_types.mapping.IntegerRangeProperty"
      - "$ref": "#/components/schemas/_types.mapping.IpRangeProperty"
      - "$ref": "#/components/schemas/_types.mapping.LongRangeProperty"
      - "$ref": "#/components/schemas/_types.mapping.IcuCollationProperty"
    _types.mapping.BinaryProperty:
      allOf:
      - "$ref": "#/components/schemas/_types.mapping.DocValuesPropertyBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - binary
        required:
        - type
    _types.mapping.DocValuesPropertyBase:
      allOf:
      - "$ref": "#/components/schemas/_types.mapping.CorePropertyBase"
      - type: object
        properties:
          doc_values:
            type: boolean
    _types.mapping.CorePropertyBase:
      allOf:
      - "$ref": "#/components/schemas/_types.mapping.PropertyBase"
      - type: object
        properties:
          copy_to:
            allOf:
            - "$ref": "#/components/schemas/_types.Fields"
          store:
            type: boolean
    _types.mapping.PropertyBase:
      type: object
      properties:
        meta:
          description: Metadata about the field.
          type: object
          additionalProperties:
            type: string
        properties:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/_types.mapping.Property"
        ignore_above:
          type: number
        dynamic:
          allOf:
          - "$ref": "#/components/schemas/_types.mapping.DynamicMapping"
        fields:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/_types.mapping.Property"
        synthetic_source_keep:
          description: |2+


            Supported values include:
              - `none`: Synthetic source diverges from the original source (default)
              - `arrays`: Arrays of the corresponding field or object preserve the original element ordering and duplicate elements.
            The synthetic source fragment for such arrays is not guaranteed to match the original source exactly,
            e.g. array [1, 2, [5], [[4, [3]]], 5] may appear as-is or in an equivalent format like [1, 2, 5, 4, 3, 5].
            The exact format may change in the future, in an effort to reduce the storage overhead of this option.
              - `all`: The source for both singleton instances and arrays of the corresponding field or object gets recorded.
            When applied to objects, the source of all sub-objects and sub-fields gets captured.
            Furthermore, the original source of arrays gets captured and appears in synthetic source with no modifications.

          allOf:
          - "$ref": "#/components/schemas/_types.mapping.SyntheticSourceKeepEnum"
    _types.mapping.SyntheticSourceKeepEnum:
      type: string
      enum:
      - none
      - arrays
      - all
    _types.mapping.BooleanProperty:
      allOf:
      - "$ref": "#/components/schemas/_types.mapping.DocValuesPropertyBase"
      - type: object
        properties:
          boost:
            type: number
          fielddata:
            allOf:
            - "$ref": "#/components/schemas/indices._types.NumericFielddata"
          index:
            type: boolean
          null_value:
            type: boolean
          ignore_malformed:
            type: boolean
          script:
            allOf:
            - "$ref": "#/components/schemas/_types.Script"
          on_script_error:
            allOf:
            - "$ref": "#/components/schemas/_types.mapping.OnScriptError"
          time_series_dimension:
            description: For internal use by Elastic only. Marks the field as a time
              series dimension. Defaults to false.
            x-state: Technical preview
            type: boolean
          type:
            type: string
            enum:
            - boolean
        required:
        - type
    indices._types.NumericFielddata:
      type: object
      properties:
        format:
          allOf:
          - "$ref": "#/components/schemas/indices._types.NumericFielddataFormat"
      required:
      - format
    indices._types.NumericFielddataFormat:
      type: string
      enum:
      - array
      - disabled
    _types.mapping.OnScriptError:
      type: string
      enum:
      - fail
      - continue
    _types.mapping.DynamicProperty:
      allOf:
      - "$ref": "#/components/schemas/_types.mapping.DocValuesPropertyBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - "{dynamic_type}"
          enabled:
            type: boolean
          null_value:
            allOf:
            - "$ref": "#/components/schemas/_types.FieldValue"
          boost:
            type: number
          coerce:
            type: boolean
          script:
            allOf:
            - "$ref": "#/components/schemas/_types.Script"
          on_script_error:
            allOf:
            - "$ref": "#/components/schemas/_types.mapping.OnScriptError"
          ignore_malformed:
            type: boolean
          time_series_metric:
            allOf:
            - "$ref": "#/components/schemas/_types.mapping.TimeSeriesMetricType"
          analyzer:
            type: string
          eager_global_ordinals:
            type: boolean
          index:
            type: boolean
          index_options:
            allOf:
            - "$ref": "#/components/schemas/_types.mapping.IndexOptions"
          index_phrases:
            type: boolean
          index_prefixes:
            oneOf:
            - "$ref": "#/components/schemas/_types.mapping.TextIndexPrefixes"
            - nullable: true
              type: string
          norms:
            type: boolean
          position_increment_gap:
            type: number
          search_analyzer:
            type: string
          search_quote_analyzer:
            type: string
          term_vector:
            allOf:
            - "$ref": "#/components/schemas/_types.mapping.TermVectorOption"
          format:
            type: string
          precision_step:
            type: number
          locale:
            type: string
        required:
        - type
    _types.mapping.TimeSeriesMetricType:
      type: string
      enum:
      - gauge
      - counter
      - summary
      - histogram
      - position
    _types.mapping.IndexOptions:
      type: string
      enum:
      - docs
      - freqs
      - positions
      - offsets
    _types.mapping.TextIndexPrefixes:
      type: object
      properties:
        max_chars:
          type: number
        min_chars:
          type: number
      required:
      - max_chars
      - min_chars
    _types.mapping.TermVectorOption:
      type: string
      enum:
      - 'no'
      - 'yes'
      - with_offsets
      - with_positions
      - with_positions_offsets
      - with_positions_offsets_payloads
      - with_positions_payloads
    _types.mapping.JoinProperty:
      allOf:
      - "$ref": "#/components/schemas/_types.mapping.PropertyBase"
      - type: object
        properties:
          relations:
            type: object
            additionalProperties:
              oneOf:
              - "$ref": "#/components/schemas/_types.RelationName"
              - type: array
                items:
                  "$ref": "#/components/schemas/_types.RelationName"
          eager_global_ordinals:
            type: boolean
          type:
            type: string
            enum:
            - join
        required:
        - type
    _types.mapping.KeywordProperty:
      allOf:
      - "$ref": "#/components/schemas/_types.mapping.DocValuesPropertyBase"
      - type: object
        properties:
          boost:
            type: number
          eager_global_ordinals:
            type: boolean
          index:
            type: boolean
          index_options:
            allOf:
            - "$ref": "#/components/schemas/_types.mapping.IndexOptions"
          script:
            allOf:
            - "$ref": "#/components/schemas/_types.Script"
          on_script_error:
            allOf:
            - "$ref": "#/components/schemas/_types.mapping.OnScriptError"
          normalizer:
            type: string
          norms:
            type: boolean
          null_value:
            type: string
          similarity:
            oneOf:
            - type: string
            - nullable: true
              type: string
          split_queries_on_whitespace:
            type: boolean
          time_series_dimension:
            description: For internal use by Elastic only. Marks the field as a time
              series dimension. Defaults to false.
            x-state: Technical preview
            type: boolean
          type:
            type: string
            enum:
            - keyword
        required:
        - type
    _types.mapping.MatchOnlyTextProperty:
      description: |-
        A variant of text that trades scoring and efficiency of positional queries for space efficiency. This field
        effectively stores data the same way as a text field that only indexes documents (index_options: docs) and
        disables norms (norms: false). Term queries perform as fast if not faster as on text fields, however queries
        that need positions such as the match_phrase query perform slower as they need to look at the _source document
        to verify whether a phrase matches. All queries return constant scores that are equal to 1.0.
      type: object
      properties:
        type:
          type: string
          enum:
          - match_only_text
        fields:
          description: |-
            Multi-fields allow the same string value to be indexed in multiple ways for different purposes, such as one
            field for search and a multi-field for sorting and aggregations, or the same string value analyzed by different analyzers.
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/_types.mapping.Property"
        meta:
          description: Metadata about the field.
          type: object
          additionalProperties:
            type: string
        copy_to:
          description: |-
            Allows you to copy the values of multiple fields into a group
            field, which can then be queried as a single field.
          allOf:
          - "$ref": "#/components/schemas/_types.Fields"
      required:
      - type
    _types.mapping.PercolatorProperty:
      allOf:
      - "$ref": "#/components/schemas/_types.mapping.PropertyBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - percolator
        required:
        - type
    _types.mapping.RankFeatureProperty:
      allOf:
      - "$ref": "#/components/schemas/_types.mapping.PropertyBase"
      - type: object
        properties:
          positive_score_impact:
            type: boolean
          type:
            type: string
            enum:
            - rank_feature
        required:
        - type
    _types.mapping.RankFeaturesProperty:
      allOf:
      - "$ref": "#/components/schemas/_types.mapping.PropertyBase"
      - type: object
        properties:
          positive_score_impact:
            type: boolean
          type:
            type: string
            enum:
            - rank_features
        required:
        - type
    _types.mapping.SearchAsYouTypeProperty:
      allOf:
      - "$ref": "#/components/schemas/_types.mapping.CorePropertyBase"
      - type: object
        properties:
          analyzer:
            type: string
          index:
            type: boolean
          index_options:
            allOf:
            - "$ref": "#/components/schemas/_types.mapping.IndexOptions"
          max_shingle_size:
            type: number
          norms:
            type: boolean
          search_analyzer:
            type: string
          search_quote_analyzer:
            type: string
          similarity:
            oneOf:
            - type: string
            - nullable: true
              type: string
          term_vector:
            allOf:
            - "$ref": "#/components/schemas/_types.mapping.TermVectorOption"
          type:
            type: string
            enum:
            - search_as_you_type
        required:
        - type
    _types.mapping.TextProperty:
      allOf:
      - "$ref": "#/components/schemas/_types.mapping.CorePropertyBase"
      - type: object
        properties:
          analyzer:
            type: string
          boost:
            type: number
          eager_global_ordinals:
            type: boolean
          fielddata:
            type: boolean
          fielddata_frequency_filter:
            allOf:
            - "$ref": "#/components/schemas/indices._types.FielddataFrequencyFilter"
          index:
            type: boolean
          index_options:
            allOf:
            - "$ref": "#/components/schemas/_types.mapping.IndexOptions"
          index_phrases:
            type: boolean
          index_prefixes:
            oneOf:
            - "$ref": "#/components/schemas/_types.mapping.TextIndexPrefixes"
            - nullable: true
              type: string
          norms:
            type: boolean
          position_increment_gap:
            type: number
          search_analyzer:
            type: string
          search_quote_analyzer:
            type: string
          similarity:
            oneOf:
            - type: string
            - nullable: true
              type: string
          term_vector:
            allOf:
            - "$ref": "#/components/schemas/_types.mapping.TermVectorOption"
          type:
            type: string
            enum:
            - text
        required:
        - type
    indices._types.FielddataFrequencyFilter:
      type: object
      properties:
        max:
          type: number
        min:
          type: number
        min_segment_size:
          type: number
      required:
      - max
      - min
      - min_segment_size
    _types.mapping.VersionProperty:
      allOf:
      - "$ref": "#/components/schemas/_types.mapping.DocValuesPropertyBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - version
        required:
        - type
    _types.mapping.WildcardProperty:
      allOf:
      - "$ref": "#/components/schemas/_types.mapping.DocValuesPropertyBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - wildcard
          null_value:
            x-state: Generally available; Added in 7.15.0
            type: string
        required:
        - type
    _types.mapping.DateNanosProperty:
      allOf:
      - "$ref": "#/components/schemas/_types.mapping.DocValuesPropertyBase"
      - type: object
        properties:
          boost:
            type: number
          format:
            type: string
          ignore_malformed:
            type: boolean
          index:
            type: boolean
          script:
            allOf:
            - "$ref": "#/components/schemas/_types.Script"
          on_script_error:
            allOf:
            - "$ref": "#/components/schemas/_types.mapping.OnScriptError"
          null_value:
            allOf:
            - "$ref": "#/components/schemas/_types.DateTime"
          precision_step:
            type: number
          type:
            type: string
            enum:
            - date_nanos
        required:
        - type
    _types.mapping.DateProperty:
      allOf:
      - "$ref": "#/components/schemas/_types.mapping.DocValuesPropertyBase"
      - type: object
        properties:
          boost:
            type: number
          fielddata:
            allOf:
            - "$ref": "#/components/schemas/indices._types.NumericFielddata"
          format:
            type: string
          ignore_malformed:
            type: boolean
          index:
            type: boolean
          script:
            allOf:
            - "$ref": "#/components/schemas/_types.Script"
          on_script_error:
            allOf:
            - "$ref": "#/components/schemas/_types.mapping.OnScriptError"
          null_value:
            allOf:
            - "$ref": "#/components/schemas/_types.DateTime"
          precision_step:
            type: number
          locale:
            type: string
          type:
            type: string
            enum:
            - date
        required:
        - type
    _types.mapping.AggregateMetricDoubleProperty:
      allOf:
      - "$ref": "#/components/schemas/_types.mapping.PropertyBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - aggregate_metric_double
          default_metric:
            type: string
          ignore_malformed:
            type: boolean
          metrics:
            type: array
            items:
              type: string
          time_series_metric:
            allOf:
            - "$ref": "#/components/schemas/_types.mapping.TimeSeriesMetricType"
        required:
        - type
        - default_metric
        - metrics
    _types.mapping.DenseVectorProperty:
      allOf:
      - "$ref": "#/components/schemas/_types.mapping.PropertyBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - dense_vector
          dims:
            description: |-
              Number of vector dimensions. Can't exceed `4096`. If `dims` is not specified, it will be set to the length of
              the first vector added to the field.
            type: number
          element_type:
            description: |+
              The data type used to encode vectors. The supported data types are `float` (default), `byte`, and `bit`.

              Supported values include:
                - `bit`: Indexes a single bit per dimension. Useful for very high-dimensional vectors or models that specifically support
              bit vectors.

              NOTE: when using `bit`, the number of dimensions must be a multiple of `8` and must represent the number of bits.
                - `byte`: Indexes a 1-byte integer value per dimension.
                - `float`: Indexes a 4-byte floating-point value per dimension.
                - `bfloat16`: Indexes a 2-byte floating-point value per dimension.

            default: float
            allOf:
            - "$ref": "#/components/schemas/_types.mapping.DenseVectorElementType"
          index:
            description: If `true`, you can search this field using the kNN search
              API.
            default: true
            type: boolean
          index_options:
            description: |-
              An optional section that configures the kNN indexing algorithm. The HNSW algorithm has two internal parameters
              that influence how the data structure is built. These can be adjusted to improve the accuracy of results, at the
              expense of slower indexing speed.

              This parameter can only be specified when `index` is `true`.
            allOf:
            - "$ref": "#/components/schemas/_types.mapping.DenseVectorIndexOptions"
          similarity:
            description: |+
              The vector similarity metric to use in kNN search.

              Documents are ranked by their vector field's similarity to the query vector. The `_score` of each document will
              be derived from the similarity, in a way that ensures scores are positive and that a larger score corresponds
              to a higher ranking.

              Defaults to `l2_norm` when `element_type` is `bit` otherwise defaults to `cosine`.

              `bit` vectors only support `l2_norm` as their similarity metric.

              This parameter can only be specified when `index` is `true`.

              Supported values include:
                - `cosine`: Computes the cosine similarity. During indexing Elasticsearch automatically normalizes vectors with `cosine`
              similarity to unit length. This allows to internally use `dot_product` for computing similarity, which is more
              efficient. Original un-normalized vectors can be still accessed through scripts.

              The document `_score` is computed as `(1 + cosine(query, vector)) / 2`.

              The `cosine` similarity does not allow vectors with zero magnitude, since cosine is not defined in this case.
                - `dot_product`: Computes the dot product of two unit vectors. This option provides an optimized way to perform cosine similarity.
              The constraints and computed score are defined by `element_type`.

              When `element_type` is `float`, all vectors must be unit length, including both document and query vectors.

              The document `_score` is computed as `(1 + dot_product(query, vector)) / 2`.

              When `element_type` is `byte`, all vectors must have the same length including both document and query vectors or
              results will be inaccurate.

              The document `_score` is computed as `0.5 + (dot_product(query, vector) / (32768 * dims))` where `dims` is the
              number of dimensions per vector.
                - `l2_norm`: Computes similarity based on the `L2` distance (also known as Euclidean distance) between the vectors.

              The document `_score` is computed as `1 / (1 + l2_norm(query, vector)^2)`.

              For `bit` vectors, instead of using `l2_norm`, the `hamming` distance between the vectors is used.

              The `_score` transformation is `(numBits - hamming(a, b)) / numBits`.
                - `max_inner_product`: Computes the maximum inner product of two vectors. This is similar to `dot_product`, but doesn't require vectors
              to be normalized. This means that each vector’s magnitude can significantly effect the score.

              The document `_score` is adjusted to prevent negative values. For `max_inner_product` values `< 0`, the `_score`
              is `1 / (1 + -1 * max_inner_product(query, vector))`. For non-negative `max_inner_product` results the `_score`
              is calculated `max_inner_product(query, vector) + 1`.

            allOf:
            - "$ref": "#/components/schemas/_types.mapping.DenseVectorSimilarity"
        required:
        - type
    _types.mapping.DenseVectorElementType:
      type: string
      enum:
      - bit
      - byte
      - float
      - bfloat16
    _types.mapping.DenseVectorIndexOptions:
      type: object
      properties:
        confidence_interval:
          description: |-
            The confidence interval to use when quantizing the vectors. Can be any value between and including `0.90` and
            `1.0` or exactly `0`. When the value is `0`, this indicates that dynamic quantiles should be calculated for
            optimized quantization. When between `0.90` and `1.0`, this value restricts the values used when calculating
            the quantization thresholds.

            For example, a value of `0.95` will only use the middle `95%` of the values when calculating the quantization
            thresholds (e.g. the highest and lowest `2.5%` of values will be ignored).

            Defaults to `1/(dims + 1)` for `int8` quantized vectors and `0` for `int4` for dynamic quantile calculation.

            Only applicable to `int8_hnsw`, `int4_hnsw`, `int8_flat`, and `int4_flat` index types.
          type: number
        ef_construction:
          description: |-
            The number of candidates to track while assembling the list of nearest neighbors for each new node.

            Only applicable to `hnsw`, `int8_hnsw`, `bbq_hnsw`, and `int4_hnsw` index types.
          default: 100
          type: number
        m:
          description: |-
            The number of neighbors each node will be connected to in the HNSW graph.

            Only applicable to `hnsw`, `int8_hnsw`, `bbq_hnsw`, and `int4_hnsw` index types.
          default: 16
          type: number
        type:
          description: |+
            The type of kNN algorithm to use.

            Supported values include:
              - `bbq_flat`: This utilizes a brute-force search algorithm in addition to automatically quantizing to binary vectors.
            Only supports `element_type` of `float`.
              - `bbq_hnsw`: This utilizes the HNSW algorithm in addition to automatic binary quantization for scalable approximate kNN
            search with `element_type` of `float`.

            This can reduce the memory footprint by nearly 32x at the cost of some accuracy.
              - `bbq_disk`: This utilizes the DiskBBQ algorithm, a version of Inverted Vector File (IVF) that uses BBQ to quantize vectors.
            Only supports `element_type` of `float`.

            This not only significantly reduces memory usage, but also allows for indexing and searching of very large datasets that do not fit in memory.
            Unlike HNSW, this index type loses performance gracefully as the index grows larger than memory.
              - `flat`: This utilizes a brute-force search algorithm for exact kNN search. This supports all `element_type` values.
              - `hnsw`: This utilizes the HNSW algorithm for scalable approximate kNN search. This supports all `element_type` values.
              - `int4_flat`: This utilizes a brute-force search algorithm in addition to automatically half-byte scalar quantization.
            Only supports `element_type` of `float`.
              - `int4_hnsw`: This utilizes the HNSW algorithm in addition to automatically scalar quantization for scalable approximate kNN
            search with `element_type` of `float`.

            This can reduce the memory footprint by 8x at the cost of some accuracy.
              - `int8_flat`: This utilizes a brute-force search algorithm in addition to automatically scalar quantization. Only supports
            `element_type` of `float`.
              - `int8_hnsw`: The default index type for `float` vectors. This utilizes the HNSW algorithm in addition to automatically scalar
            quantization for scalable approximate kNN search with `element_type` of `float`.

            This can reduce the memory footprint by 4x at the cost of some accuracy.

          allOf:
          - "$ref": "#/components/schemas/_types.mapping.DenseVectorIndexOptionsType"
        rescore_vector:
          description: The rescore vector options. This is only applicable to `bbq_disk`,
            `bbq_hnsw`, `int4_hnsw`, `int8_hnsw`, `bbq_flat`, `int4_flat`, and `int8_flat`
            index types.
          allOf:
          - "$ref": "#/components/schemas/_types.mapping.DenseVectorIndexOptionsRescoreVector"
        on_disk_rescore:
          description: |-
            `true` if vector rescoring should be done on-disk

            Only applicable to `bbq_disk`, `bbq_hnsw`, `int4_hnsw`, `int8_hnsw`
          default: false
          x-state: Technical preview; Added in 9.3.0
          type: boolean
      required:
      - type
    _types.mapping.DenseVectorIndexOptionsType:
      type: string
      enum:
      - bbq_flat
      - bbq_hnsw
      - bbq_disk
      - flat
      - hnsw
      - int4_flat
      - int4_hnsw
      - int8_flat
      - int8_hnsw
    _types.mapping.DenseVectorIndexOptionsRescoreVector:
      type: object
      properties:
        oversample:
          description: |-
            The oversampling factor to use when searching for the nearest neighbor. This is only applicable to the quantized formats: `bbq_*`, `int4_*`, and `int8_*`.
            When provided, `oversample * k` vectors will be gathered and then their scores will be re-computed with the original vectors.

            valid values are between `1.0` and `10.0` (inclusive), or `0` exactly to disable oversampling.
          type: number
      required:
      - oversample
    _types.mapping.DenseVectorSimilarity:
      type: string
      enum:
      - cosine
      - dot_product
      - l2_norm
      - max_inner_product
    _types.mapping.FlattenedProperty:
      allOf:
      - "$ref": "#/components/schemas/_types.mapping.PropertyBase"
      - type: object
        properties:
          boost:
            type: number
          depth_limit:
            type: number
          doc_values:
            type: boolean
          eager_global_ordinals:
            type: boolean
          index:
            type: boolean
          index_options:
            allOf:
            - "$ref": "#/components/schemas/_types.mapping.IndexOptions"
          null_value:
            type: string
          similarity:
            type: string
          split_queries_on_whitespace:
            type: boolean
          time_series_dimensions:
            type: array
            items:
              type: string
          type:
            type: string
            enum:
            - flattened
        required:
        - type
    _types.mapping.NestedProperty:
      allOf:
      - "$ref": "#/components/schemas/_types.mapping.CorePropertyBase"
      - type: object
        properties:
          enabled:
            type: boolean
          include_in_parent:
            type: boolean
          include_in_root:
            type: boolean
          type:
            type: string
            enum:
            - nested
        required:
        - type
    _types.mapping.ObjectProperty:
      allOf:
      - "$ref": "#/components/schemas/_types.mapping.CorePropertyBase"
      - type: object
        properties:
          enabled:
            type: boolean
          subobjects:
            allOf:
            - "$ref": "#/components/schemas/_types.mapping.Subobjects"
          type:
            type: string
            enum:
            - object
    _types.mapping.Subobjects:
      type: string
      enum:
      - 'true'
      - 'false'
    _types.mapping.PassthroughObjectProperty:
      allOf:
      - "$ref": "#/components/schemas/_types.mapping.CorePropertyBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - passthrough
          enabled:
            type: boolean
          priority:
            type: number
          time_series_dimension:
            type: boolean
    _types.mapping.RankVectorProperty:
      description: Technical preview
      allOf:
      - "$ref": "#/components/schemas/_types.mapping.PropertyBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - rank_vectors
          element_type:
            allOf:
            - "$ref": "#/components/schemas/_types.mapping.RankVectorElementType"
          dims:
            type: number
        required:
        - type
    _types.mapping.RankVectorElementType:
      type: string
      enum:
      - byte
      - float
      - bit
    _types.mapping.SemanticTextProperty:
      type: object
      properties:
        type:
          type: string
          enum:
          - semantic_text
        meta:
          type: object
          additionalProperties:
            type: string
        inference_id:
          description: |-
            Inference endpoint that will be used to generate embeddings for the field.
            This parameter cannot be updated. Use the Create inference API to create the endpoint.
            If `search_inference_id` is specified, the inference endpoint will only be used at index time.
          default: ".elser-2-elasticsearch"
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        search_inference_id:
          description: |-
            Inference endpoint that will be used to generate embeddings at query time.
            You can update this parameter by using the Update mapping API. Use the Create inference API to create the endpoint.
            If not specified, the inference endpoint defined by inference_id will be used at both index and query time.
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        index_options:
          description: |-
            Settings for index_options that override any defaults used by semantic_text, for example
            specific quantization settings.
          allOf:
          - "$ref": "#/components/schemas/_types.mapping.SemanticTextIndexOptions"
        chunking_settings:
          description: |-
            Settings for chunking text into smaller passages. If specified, these will override the
            chunking settings sent in the inference endpoint associated with inference_id. If chunking settings are updated,
            they will not be applied to existing documents until they are reindexed.
          oneOf:
          - "$ref": "#/components/schemas/_types.mapping.ChunkingSettings"
          - nullable: true
            type: string
        fields:
          description: |-
            Multi-fields allow the same string value to be indexed in multiple ways for different purposes, such as one
            field for search and a multi-field for sorting and aggregations, or the same string value analyzed by different analyzers.
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/_types.mapping.Property"
      required:
      - type
    _types.mapping.SemanticTextIndexOptions:
      type: object
      properties:
        dense_vector:
          allOf:
          - "$ref": "#/components/schemas/_types.mapping.DenseVectorIndexOptions"
        sparse_vector:
          allOf:
          - "$ref": "#/components/schemas/_types.mapping.SparseVectorIndexOptions"
    _types.mapping.SparseVectorIndexOptions:
      type: object
      properties:
        prune:
          description: |-
            Whether to perform pruning, omitting the non-significant tokens from the query to improve query performance.
            If prune is true but the pruning_config is not specified, pruning will occur but default values will be used.
            Default: false
          x-state: Generally available; Added in 8.19.0
          type: boolean
        pruning_config:
          description: |-
            Optional pruning configuration.
            If enabled, this will omit non-significant tokens from the query in order to improve query performance.
            This is only used if prune is set to true.
            If prune is set to true but pruning_config is not specified, default values will be used.
          x-state: Generally available; Added in 8.19.0
          allOf:
          - "$ref": "#/components/schemas/_types.TokenPruningConfig"
    _types.mapping.ChunkingSettings:
      type: object
      properties:
        strategy:
          externalDocs:
            url: https://www.elastic.co/docs/explore-analyze/elastic-inference/inference-api#chunking-strategies
          description: |-
            The chunking strategy: `sentence`, `word`, `none` or `recursive`.

             * If `strategy` is set to `recursive`, you must also specify:

            - `max_chunk_size`
            - either `separators` or`separator_group`

            Learn more about different chunking strategies in the linked documentation.
          default: sentence
          type: string
        separator_group:
          description: |-
            Only applicable to the `recursive` strategy and required when using it.

            Sets a predefined list of separators in the saved chunking settings based on the selected text type.
            Values can be `markdown` or `plaintext`.

            Using this parameter is an alternative to manually specifying a custom `separators` list.
          type: string
        separators:
          description: |-
            Only applicable to the `recursive` strategy and required when using it.

            A list of strings used as possible split points when chunking text.

            Each string can be a plain string or a regular expression (regex) pattern.
            The system tries each separator in order to split the text, starting from the first item in the list.

            After splitting, it attempts to recombine smaller pieces into larger chunks that stay within
            the `max_chunk_size` limit, to reduce the total number of chunks generated.
          type: array
          items:
            type: string
        max_chunk_size:
          description: |-
            The maximum size of a chunk in words.
            This value cannot be lower than `20` (for `sentence` strategy) or `10` (for `word` strategy).
            This value should not exceed the window size for the associated model.
          default: 250
          type: number
        overlap:
          description: |-
            The number of overlapping words for chunks.
            It is applicable only to a `word` chunking strategy.
            This value cannot be higher than half the `max_chunk_size` value.
          default: 100
          type: number
        sentence_overlap:
          description: |-
            The number of overlapping sentences for chunks.
            It is applicable only for a `sentence` chunking strategy.
            It can be either `1` or `0`.
          default: 1
          type: number
      required:
      - strategy
      - max_chunk_size
    _types.mapping.SparseVectorProperty:
      allOf:
      - "$ref": "#/components/schemas/_types.mapping.PropertyBase"
      - type: object
        properties:
          store:
            type: boolean
          type:
            type: string
            enum:
            - sparse_vector
          index_options:
            description: |-
              Additional index options for the sparse vector field that controls the
              token pruning behavior of the sparse vector field.
            x-state: Generally available; Added in 8.19.0
            allOf:
            - "$ref": "#/components/schemas/_types.mapping.SparseVectorIndexOptions"
        required:
        - type
    _types.mapping.CompletionProperty:
      allOf:
      - "$ref": "#/components/schemas/_types.mapping.DocValuesPropertyBase"
      - type: object
        properties:
          analyzer:
            type: string
          contexts:
            type: array
            items:
              "$ref": "#/components/schemas/_types.mapping.SuggestContext"
          max_input_length:
            type: number
          preserve_position_increments:
            type: boolean
          preserve_separators:
            type: boolean
          search_analyzer:
            type: string
          type:
            type: string
            enum:
            - completion
        required:
        - type
    _types.mapping.SuggestContext:
      type: object
      properties:
        name:
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        path:
          allOf:
          - "$ref": "#/components/schemas/_types.Field"
        type:
          type: string
        precision:
          oneOf:
          - type: number
          - type: string
      required:
      - name
      - type
    _types.mapping.ConstantKeywordProperty:
      allOf:
      - "$ref": "#/components/schemas/_types.mapping.PropertyBase"
      - type: object
        properties:
          value:
            type: object
          type:
            type: string
            enum:
            - constant_keyword
        required:
        - type
    _types.mapping.CountedKeywordProperty:
      allOf:
      - "$ref": "#/components/schemas/_types.mapping.PropertyBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - counted_keyword
          index:
            type: boolean
        required:
        - type
    _types.mapping.FieldAliasProperty:
      allOf:
      - "$ref": "#/components/schemas/_types.mapping.PropertyBase"
      - type: object
        properties:
          path:
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          type:
            type: string
            enum:
            - alias
        required:
        - type
    _types.mapping.HistogramProperty:
      allOf:
      - "$ref": "#/components/schemas/_types.mapping.PropertyBase"
      - type: object
        properties:
          ignore_malformed:
            type: boolean
          time_series_metric:
            allOf:
            - "$ref": "#/components/schemas/_types.mapping.TimeSeriesMetricType"
          type:
            type: string
            enum:
            - histogram
        required:
        - type
    _types.mapping.ExponentialHistogramProperty:
      allOf:
      - "$ref": "#/components/schemas/_types.mapping.PropertyBase"
      - type: object
        properties:
          time_series_metric:
            allOf:
            - "$ref": "#/components/schemas/_types.mapping.TimeSeriesMetricType"
          type:
            type: string
            enum:
            - exponential_histogram
        required:
        - type
    _types.mapping.IpProperty:
      allOf:
      - "$ref": "#/components/schemas/_types.mapping.DocValuesPropertyBase"
      - type: object
        properties:
          boost:
            type: number
          index:
            type: boolean
          ignore_malformed:
            type: boolean
          null_value:
            type: string
          on_script_error:
            allOf:
            - "$ref": "#/components/schemas/_types.mapping.OnScriptError"
          script:
            allOf:
            - "$ref": "#/components/schemas/_types.Script"
          time_series_dimension:
            description: For internal use by Elastic only. Marks the field as a time
              series dimension. Defaults to false.
            x-state: Technical preview
            type: boolean
          type:
            type: string
            enum:
            - ip
        required:
        - type
    _types.mapping.Murmur3HashProperty:
      allOf:
      - "$ref": "#/components/schemas/_types.mapping.DocValuesPropertyBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - murmur3
        required:
        - type
    _types.mapping.TokenCountProperty:
      allOf:
      - "$ref": "#/components/schemas/_types.mapping.DocValuesPropertyBase"
      - type: object
        properties:
          analyzer:
            type: string
          boost:
            type: number
          index:
            type: boolean
          null_value:
            type: number
          enable_position_increments:
            type: boolean
          type:
            type: string
            enum:
            - token_count
        required:
        - type
    _types.mapping.GeoPointProperty:
      allOf:
      - "$ref": "#/components/schemas/_types.mapping.DocValuesPropertyBase"
      - type: object
        properties:
          ignore_malformed:
            type: boolean
          ignore_z_value:
            type: boolean
          null_value:
            allOf:
            - "$ref": "#/components/schemas/_types.GeoLocation"
          index:
            type: boolean
          on_script_error:
            allOf:
            - "$ref": "#/components/schemas/_types.mapping.OnScriptError"
          script:
            allOf:
            - "$ref": "#/components/schemas/_types.Script"
          type:
            type: string
            enum:
            - geo_point
          time_series_metric:
            allOf:
            - "$ref": "#/components/schemas/_types.mapping.GeoPointMetricType"
        required:
        - type
    _types.mapping.GeoPointMetricType:
      type: string
      enum:
      - gauge
      - counter
      - position
    _types.mapping.GeoShapeProperty:
      description: |-
        The `geo_shape` data type facilitates the indexing of and searching with arbitrary geo shapes such as rectangles
        and polygons.
      allOf:
      - "$ref": "#/components/schemas/_types.mapping.DocValuesPropertyBase"
      - type: object
        properties:
          coerce:
            type: boolean
          ignore_malformed:
            type: boolean
          ignore_z_value:
            type: boolean
          index:
            type: boolean
          orientation:
            allOf:
            - "$ref": "#/components/schemas/_types.mapping.GeoOrientation"
          strategy:
            allOf:
            - "$ref": "#/components/schemas/_types.mapping.GeoStrategy"
          type:
            type: string
            enum:
            - geo_shape
        required:
        - type
    _types.mapping.GeoOrientation:
      type: string
      enum:
      - right
      - RIGHT
      - counterclockwise
      - ccw
      - left
      - LEFT
      - clockwise
      - cw
    _types.mapping.GeoStrategy:
      type: string
      enum:
      - recursive
      - term
    _types.mapping.PointProperty:
      allOf:
      - "$ref": "#/components/schemas/_types.mapping.DocValuesPropertyBase"
      - type: object
        properties:
          ignore_malformed:
            type: boolean
          ignore_z_value:
            type: boolean
          null_value:
            type: string
          type:
            type: string
            enum:
            - point
        required:
        - type
    _types.mapping.ShapeProperty:
      description: |-
        The `shape` data type facilitates the indexing of and searching with arbitrary `x, y` cartesian shapes such as
        rectangles and polygons.
      allOf:
      - "$ref": "#/components/schemas/_types.mapping.DocValuesPropertyBase"
      - type: object
        properties:
          coerce:
            type: boolean
          ignore_malformed:
            type: boolean
          ignore_z_value:
            type: boolean
          orientation:
            allOf:
            - "$ref": "#/components/schemas/_types.mapping.GeoOrientation"
          type:
            type: string
            enum:
            - shape
        required:
        - type
    _types.mapping.ByteNumberProperty:
      allOf:
      - "$ref": "#/components/schemas/_types.mapping.NumberPropertyBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - byte
          null_value:
            allOf:
            - "$ref": "#/components/schemas/_types.byte"
        required:
        - type
    _types.byte:
      type: number
    _types.mapping.NumberPropertyBase:
      allOf:
      - "$ref": "#/components/schemas/_types.mapping.DocValuesPropertyBase"
      - type: object
        properties:
          boost:
            type: number
          coerce:
            type: boolean
          ignore_malformed:
            type: boolean
          index:
            type: boolean
          on_script_error:
            allOf:
            - "$ref": "#/components/schemas/_types.mapping.OnScriptError"
          script:
            allOf:
            - "$ref": "#/components/schemas/_types.Script"
          time_series_metric:
            description: For internal use by Elastic only. Marks the field as a time
              series dimension. Defaults to false.
            x-state: Technical preview
            allOf:
            - "$ref": "#/components/schemas/_types.mapping.TimeSeriesMetricType"
          time_series_dimension:
            description: For internal use by Elastic only. Marks the field as a time
              series dimension. Defaults to false.
            default: false
            x-state: Technical preview
            type: boolean
    _types.mapping.DoubleNumberProperty:
      allOf:
      - "$ref": "#/components/schemas/_types.mapping.NumberPropertyBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - double
          null_value:
            type: number
        required:
        - type
    _types.mapping.FloatNumberProperty:
      allOf:
      - "$ref": "#/components/schemas/_types.mapping.NumberPropertyBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - float
          null_value:
            type: number
        required:
        - type
    _types.mapping.HalfFloatNumberProperty:
      allOf:
      - "$ref": "#/components/schemas/_types.mapping.NumberPropertyBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - half_float
          null_value:
            type: number
        required:
        - type
    _types.mapping.IntegerNumberProperty:
      allOf:
      - "$ref": "#/components/schemas/_types.mapping.NumberPropertyBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - integer
          null_value:
            type: number
        required:
        - type
    _types.mapping.LongNumberProperty:
      allOf:
      - "$ref": "#/components/schemas/_types.mapping.NumberPropertyBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - long
          null_value:
            type: number
        required:
        - type
    _types.mapping.ScaledFloatNumberProperty:
      allOf:
      - "$ref": "#/components/schemas/_types.mapping.NumberPropertyBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - scaled_float
          null_value:
            type: number
          scaling_factor:
            type: number
        required:
        - type
    _types.mapping.ShortNumberProperty:
      allOf:
      - "$ref": "#/components/schemas/_types.mapping.NumberPropertyBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - short
          null_value:
            allOf:
            - "$ref": "#/components/schemas/_types.short"
        required:
        - type
    _types.short:
      type: number
    _types.mapping.UnsignedLongNumberProperty:
      allOf:
      - "$ref": "#/components/schemas/_types.mapping.NumberPropertyBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - unsigned_long
          null_value:
            allOf:
            - "$ref": "#/components/schemas/_types.ulong"
        required:
        - type
    _types.ulong:
      type: number
    _types.mapping.DateRangeProperty:
      allOf:
      - "$ref": "#/components/schemas/_types.mapping.RangePropertyBase"
      - type: object
        properties:
          format:
            type: string
          type:
            type: string
            enum:
            - date_range
        required:
        - type
    _types.mapping.RangePropertyBase:
      allOf:
      - "$ref": "#/components/schemas/_types.mapping.DocValuesPropertyBase"
      - type: object
        properties:
          boost:
            type: number
          coerce:
            type: boolean
          index:
            type: boolean
    _types.mapping.DoubleRangeProperty:
      allOf:
      - "$ref": "#/components/schemas/_types.mapping.RangePropertyBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - double_range
        required:
        - type
    _types.mapping.FloatRangeProperty:
      allOf:
      - "$ref": "#/components/schemas/_types.mapping.RangePropertyBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - float_range
        required:
        - type
    _types.mapping.IntegerRangeProperty:
      allOf:
      - "$ref": "#/components/schemas/_types.mapping.RangePropertyBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - integer_range
        required:
        - type
    _types.mapping.IpRangeProperty:
      allOf:
      - "$ref": "#/components/schemas/_types.mapping.RangePropertyBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - ip_range
        required:
        - type
    _types.mapping.LongRangeProperty:
      allOf:
      - "$ref": "#/components/schemas/_types.mapping.RangePropertyBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - long_range
        required:
        - type
    _types.mapping.IcuCollationProperty:
      allOf:
      - "$ref": "#/components/schemas/_types.mapping.DocValuesPropertyBase"
      - type: object
        properties:
          type:
            type: string
            enum:
            - icu_collation_keyword
          norms:
            type: boolean
          index_options:
            allOf:
            - "$ref": "#/components/schemas/_types.mapping.IndexOptions"
          index:
            description: Should the field be searchable?
            type: boolean
          null_value:
            description: Accepts a string value which is substituted for any explicit
              null values. Defaults to null, which means the field is treated as missing.
            type: string
          rules:
            type: string
          language:
            type: string
          country:
            type: string
          variant:
            type: string
          strength:
            allOf:
            - "$ref": "#/components/schemas/_types.analysis.IcuCollationStrength"
          decomposition:
            allOf:
            - "$ref": "#/components/schemas/_types.analysis.IcuCollationDecomposition"
          alternate:
            allOf:
            - "$ref": "#/components/schemas/_types.analysis.IcuCollationAlternate"
          case_level:
            type: boolean
          case_first:
            allOf:
            - "$ref": "#/components/schemas/_types.analysis.IcuCollationCaseFirst"
          numeric:
            type: boolean
          variable_top:
            type: string
          hiragana_quaternary_mode:
            type: boolean
        required:
        - type
    _types.mapping.MatchType:
      type: string
      enum:
      - simple
      - regex
    _types.mapping.FieldNamesField:
      type: object
      properties:
        enabled:
          type: boolean
      required:
      - enabled
    _types.mapping.IndexField:
      type: object
      properties:
        enabled:
          type: boolean
      required:
      - enabled
    _types.mapping.RoutingField:
      type: object
      properties:
        required:
          type: boolean
      required:
      - required
    _types.mapping.SizeField:
      type: object
      properties:
        enabled:
          type: boolean
      required:
      - enabled
    _types.mapping.SourceField:
      type: object
      properties:
        compress:
          type: boolean
        compress_threshold:
          type: string
        enabled:
          type: boolean
        excludes:
          type: array
          items:
            type: string
        includes:
          type: array
          items:
            type: string
        mode:
          description: |2+


            Supported values include:
              - `disabled`
              - `stored`
              - `synthetic`: Instead of storing source documents on disk exactly as you send them,
             Elasticsearch can reconstruct source content on the fly upon retrieval.

          allOf:
          - "$ref": "#/components/schemas/_types.mapping.SourceFieldMode"
    _types.mapping.SourceFieldMode:
      type: string
      enum:
      - disabled
      - stored
      - synthetic
    _types.mapping.DataStreamTimestamp:
      type: object
      properties:
        enabled:
          type: boolean
      required:
      - enabled
    indices._types.AliasDefinition:
      type: object
      properties:
        filter:
          description: Query used to limit documents the alias can access.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.QueryContainer"
        index_routing:
          description: |-
            Value used to route indexing operations to a specific shard.
            If specified, this overwrites the `routing` value for indexing operations.
          type: string
        is_write_index:
          description: If `true`, the index is the write index for the alias.
          default: false
          type: boolean
        routing:
          description: Value used to route indexing and search operations to a specific
            shard.
          type: string
        search_routing:
          description: |-
            Value used to route search operations to a specific shard.
            If specified, this overwrites the `routing` value for search operations.
          type: string
        is_hidden:
          description: |-
            If `true`, the alias is hidden.
            All indices for the alias must have the same `is_hidden` value.
          default: false
          x-state: Generally available; Added in 7.16.0
          type: boolean
    indices._types.DataStreamLifecycleWithRollover:
      description: |-
        Data stream lifecycle with rollover can be used to display the configuration including the default rollover conditions,
        if asked.
      allOf:
      - "$ref": "#/components/schemas/indices._types.DataStreamLifecycle"
      - type: object
        properties:
          rollover:
            description: |-
              The conditions which will trigger the rollover of a backing index as configured by the cluster setting `cluster.lifecycle.default.rollover`.
              This property is an implementation detail and it will only be retrieved when the query param `include_defaults` is set to true.
              The contents of this field are subject to change.
            allOf:
            - "$ref": "#/components/schemas/indices._types.DataStreamLifecycleRolloverConditions"
    indices._types.DataStreamLifecycleRolloverConditions:
      type: object
      properties:
        min_age:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        max_age:
          type: string
        min_docs:
          type: number
        max_docs:
          type: number
        min_size:
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        max_size:
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        min_primary_shard_size:
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        max_primary_shard_size:
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        min_primary_shard_docs:
          type: number
        max_primary_shard_docs:
          type: number
    indices._types.DataStreamLifecycle:
      description: Data stream lifecycle denotes that a data stream is managed by
        the data stream lifecycle and contains the configuration.
      type: object
      properties:
        data_retention:
          description: |-
            If defined, every document added to this data stream will be stored at least for this time frame.
            Any time after this duration the document could be deleted.
            When empty, every document in this data stream will be stored indefinitely.
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        downsampling:
          description: The list of downsampling rounds to execute as part of this
            downsampling configuration
          type: array
          items:
            "$ref": "#/components/schemas/indices._types.DownsamplingRound"
        downsampling_method:
          description: |-
            The method used to downsample the data. There are two options `aggregate` and `last_value`. It requires
            `downsampling` to be defined. Defaults to `aggregate`.
          allOf:
          - "$ref": "#/components/schemas/indices._types.SamplingMethod"
        enabled:
          description: |-
            If defined, it turns data stream lifecycle on/off (`true`/`false`) for this data stream. A data stream lifecycle
            that's disabled (enabled: `false`) will have no effect on the data stream.
          default: true
          type: boolean
    indices._types.DownsamplingRound:
      type: object
      properties:
        after:
          description: The duration since rollover when this downsampling round should
            execute
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        fixed_interval:
          description: The downsample interval.
          allOf:
          - "$ref": "#/components/schemas/_types.DurationLarge"
      required:
      - after
      - fixed_interval
    indices._types.SamplingMethod:
      type: string
      enum:
      - aggregate
      - last_value
    indices._types.DataStreamOptions:
      description: |-
        Data stream options contain the configuration of data stream level features for a given data stream, for example,
        the failure store configuration.
      type: object
      properties:
        failure_store:
          description: If defined, it specifies configuration for the failure store
            of this data stream.
          allOf:
          - "$ref": "#/components/schemas/indices._types.DataStreamFailureStore"
    indices._types.DataStreamFailureStore:
      description: Data stream failure store contains the configuration of the failure
        store for a given data stream.
      type: object
      properties:
        enabled:
          description: |-
            If defined, it turns the failure store on/off (`true`/`false`) for this data stream. A data stream failure store
            that's disabled (enabled: `false`) will redirect no new failed indices to the failure store; however, it will
            not remove any existing data from the failure store.
          default: true
          type: boolean
        lifecycle:
          description: If defined, it specifies the lifecycle configuration for the
            failure store of this data stream.
          allOf:
          - "$ref": "#/components/schemas/indices._types.FailureStoreLifecycle"
    indices._types.FailureStoreLifecycle:
      description: The failure store lifecycle configures the data stream lifecycle
        configuration for failure indices.
      type: object
      properties:
        data_retention:
          description: |-
            If defined, every document added to this data stream will be stored at least for this time frame.
            Any time after this duration the document could be deleted.
            When empty, every document in this data stream will be stored indefinitely.
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        enabled:
          description: |-
            If defined, it turns data stream lifecycle on/off (`true`/`false`) for this data stream. A data stream lifecycle
            that's disabled (enabled: `false`) will have no effect on the data stream.
          default: true
          type: boolean
    _types.Level:
      type: string
      enum:
      - cluster
      - indices
      - shards
    _types.WaitForEvents:
      type: string
      enum:
      - immediate
      - urgent
      - high
      - normal
      - low
      - languid
    cluster.health.WaitForNodes:
      oneOf:
      - type: string
      - type: number
    cluster.health.HealthResponseBody:
      type: object
      properties:
        active_primary_shards:
          description: The number of active primary shards.
          type: number
        active_shards:
          description: The total number of active primary and replica shards.
          type: number
        active_shards_percent:
          description: The ratio of active shards in the cluster expressed as a string
            formatted percentage.
          type: string
        active_shards_percent_as_number:
          description: The ratio of active shards in the cluster expressed as a percentage.
          type: number
        cluster_name:
          description: The name of the cluster.
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        delayed_unassigned_shards:
          description: The number of shards whose allocation has been delayed by the
            timeout settings.
          type: number
        indices:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/cluster.health.IndexHealthStats"
        initializing_shards:
          description: The number of shards that are under initialization.
          type: number
        number_of_data_nodes:
          description: The number of nodes that are dedicated data nodes.
          type: number
        number_of_in_flight_fetch:
          description: The number of unfinished fetches.
          type: number
        number_of_nodes:
          description: The number of nodes within the cluster.
          type: number
        number_of_pending_tasks:
          description: The number of cluster-level changes that have not yet been
            executed.
          type: number
        relocating_shards:
          description: The number of shards that are under relocation.
          type: number
        status:
          description: |2+


            Supported values include:
              - `green` (or `GREEN`): All shards are assigned.
              - `yellow` (or `YELLOW`): All primary shards are assigned, but one or more replica shards are unassigned. If a node in the cluster fails, some data could be unavailable until that node is repaired.
              - `red` (or `RED`): One or more primary shards are unassigned, so some data is unavailable. This can occur briefly during cluster startup as primary shards are assigned.
              - `unknown`
              - `unavailable`

          allOf:
          - "$ref": "#/components/schemas/_types.HealthStatus"
        task_max_waiting_in_queue:
          description: The time since the earliest initiated task is waiting for being
            performed.
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        task_max_waiting_in_queue_millis:
          description: The time expressed in milliseconds since the earliest initiated
            task is waiting for being performed.
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
        timed_out:
          description: If false the response returned within the period of time that
            is specified by the timeout parameter (30s by default)
          type: boolean
        unassigned_primary_shards:
          description: The number of primary shards that are not allocated.
          type: number
        unassigned_shards:
          description: The number of shards that are not allocated.
          type: number
      required:
      - active_primary_shards
      - active_shards
      - active_shards_percent_as_number
      - cluster_name
      - delayed_unassigned_shards
      - initializing_shards
      - number_of_data_nodes
      - number_of_in_flight_fetch
      - number_of_nodes
      - number_of_pending_tasks
      - relocating_shards
      - status
      - task_max_waiting_in_queue_millis
      - timed_out
      - unassigned_primary_shards
      - unassigned_shards
    cluster.health.IndexHealthStats:
      type: object
      properties:
        active_primary_shards:
          type: number
        active_shards:
          type: number
        initializing_shards:
          type: number
        number_of_replicas:
          type: number
        number_of_shards:
          type: number
        relocating_shards:
          type: number
        shards:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/cluster.health.ShardHealthStats"
        status:
          description: |2+


            Supported values include:
              - `green` (or `GREEN`): All shards are assigned.
              - `yellow` (or `YELLOW`): All primary shards are assigned, but one or more replica shards are unassigned. If a node in the cluster fails, some data could be unavailable until that node is repaired.
              - `red` (or `RED`): One or more primary shards are unassigned, so some data is unavailable. This can occur briefly during cluster startup as primary shards are assigned.
              - `unknown`
              - `unavailable`

          allOf:
          - "$ref": "#/components/schemas/_types.HealthStatus"
        unassigned_shards:
          type: number
        unassigned_primary_shards:
          type: number
      required:
      - active_primary_shards
      - active_shards
      - initializing_shards
      - number_of_replicas
      - number_of_shards
      - relocating_shards
      - status
      - unassigned_shards
      - unassigned_primary_shards
    cluster.health.ShardHealthStats:
      type: object
      properties:
        active_shards:
          type: number
        initializing_shards:
          type: number
        primary_active:
          type: boolean
        relocating_shards:
          type: number
        status:
          description: |2+


            Supported values include:
              - `green` (or `GREEN`): All shards are assigned.
              - `yellow` (or `YELLOW`): All primary shards are assigned, but one or more replica shards are unassigned. If a node in the cluster fails, some data could be unavailable until that node is repaired.
              - `red` (or `RED`): One or more primary shards are unassigned, so some data is unavailable. This can occur briefly during cluster startup as primary shards are assigned.
              - `unknown`
              - `unavailable`

          allOf:
          - "$ref": "#/components/schemas/_types.HealthStatus"
        unassigned_shards:
          type: number
        unassigned_primary_shards:
          type: number
      required:
      - active_shards
      - initializing_shards
      - primary_active
      - relocating_shards
      - status
      - unassigned_shards
      - unassigned_primary_shards
    _types.ClusterInfoTargets:
      oneOf:
      - "$ref": "#/components/schemas/_types.ClusterInfoTarget"
      - type: array
        items:
          "$ref": "#/components/schemas/_types.ClusterInfoTarget"
    _types.ClusterInfoTarget:
      type: string
      enum:
      - _all
      - http
      - ingest
      - thread_pool
      - script
    nodes._types.Http:
      type: object
      properties:
        current_open:
          description: Current number of open HTTP connections for the node.
          type: number
        total_opened:
          description: Total number of HTTP connections opened for the node.
          type: number
        clients:
          description: |-
            Information on current and recently-closed HTTP client connections.
            Clients that have been closed longer than the `http.client_stats.closed_channels.max_age` setting will not be represented here.
          type: array
          items:
            "$ref": "#/components/schemas/nodes._types.Client"
        routes:
          description: Detailed HTTP stats broken down by route
          x-state: Generally available; Added in 8.12.0
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/nodes._types.HttpRoute"
      required:
      - routes
    nodes._types.Client:
      type: object
      properties:
        id:
          description: Unique ID for the HTTP client.
          type: number
        agent:
          description: |-
            Reported agent for the HTTP client.
            If unavailable, this property is not included in the response.
          type: string
        local_address:
          description: Local address for the HTTP connection.
          type: string
        remote_address:
          description: Remote address for the HTTP connection.
          type: string
        last_uri:
          description: The URI of the client’s most recent request.
          type: string
        opened_time_millis:
          description: Time at which the client opened the connection.
          type: number
        closed_time_millis:
          description: Time at which the client closed the connection if the connection
            is closed.
          type: number
        last_request_time_millis:
          description: Time of the most recent request from this client.
          type: number
        request_count:
          description: Number of requests from this client.
          type: number
        request_size_bytes:
          description: Cumulative size in bytes of all requests from this client.
          type: number
        x_opaque_id:
          description: |-
            Value from the client’s `x-opaque-id` HTTP header.
            If unavailable, this property is not included in the response.
          type: string
    nodes._types.HttpRoute:
      type: object
      properties:
        requests:
          allOf:
          - "$ref": "#/components/schemas/nodes._types.HttpRouteRequests"
        responses:
          allOf:
          - "$ref": "#/components/schemas/nodes._types.HttpRouteResponses"
      required:
      - requests
      - responses
    nodes._types.HttpRouteRequests:
      type: object
      properties:
        count:
          type: number
        total_size_in_bytes:
          type: number
        size_histogram:
          type: array
          items:
            "$ref": "#/components/schemas/nodes._types.SizeHttpHistogram"
      required:
      - count
      - total_size_in_bytes
      - size_histogram
    nodes._types.SizeHttpHistogram:
      type: object
      properties:
        count:
          type: number
        ge_bytes:
          type: number
        lt_bytes:
          type: number
      required:
      - count
    nodes._types.HttpRouteResponses:
      type: object
      properties:
        count:
          type: number
        total_size_in_bytes:
          type: number
        handling_time_histogram:
          type: array
          items:
            "$ref": "#/components/schemas/nodes._types.TimeHttpHistogram"
        size_histogram:
          type: array
          items:
            "$ref": "#/components/schemas/nodes._types.SizeHttpHistogram"
      required:
      - count
      - total_size_in_bytes
      - handling_time_histogram
      - size_histogram
    nodes._types.TimeHttpHistogram:
      type: object
      properties:
        count:
          type: number
        ge_millis:
          type: number
        lt_millis:
          type: number
      required:
      - count
    nodes._types.Ingest:
      type: object
      properties:
        pipelines:
          description: Contains statistics about ingest pipelines for the node.
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/nodes._types.IngestStats"
        total:
          description: Contains statistics about ingest operations for the node.
          allOf:
          - "$ref": "#/components/schemas/nodes._types.IngestTotal"
    nodes._types.IngestStats:
      type: object
      properties:
        count:
          description: Total number of documents ingested during the lifetime of this
            node.
          type: number
        current:
          description: Total number of documents currently being ingested.
          type: number
        failed:
          description: Total number of failed ingest operations during the lifetime
            of this node.
          type: number
        processors:
          description: Total number of ingest processors.
          type: array
          items:
            type: object
            additionalProperties:
              "$ref": "#/components/schemas/nodes._types.KeyedProcessor"
        time_in_millis:
          description: Total time, in milliseconds, spent preprocessing ingest documents
            during the lifetime of this node.
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
        ingested_as_first_pipeline_in_bytes:
          description: |-
            Total number of bytes of all documents ingested by the pipeline.
            This field is only present on pipelines which are the first to process a document.
            Thus, it is not present on pipelines which only serve as a final pipeline after a default pipeline, a pipeline run after a reroute processor, or pipelines in pipeline processors.
          x-state: Generally available; Added in 8.15.0
          type: number
        produced_as_first_pipeline_in_bytes:
          description: |-
            Total number of bytes of all documents produced by the pipeline.
            This field is only present on pipelines which are the first to process a document.
            Thus, it is not present on pipelines which only serve as a final pipeline after a default pipeline, a pipeline run after a reroute processor, or pipelines in pipeline processors.
            In situations where there are subsequent pipelines, the value represents the size of the document after all pipelines have run.
          x-state: Generally available; Added in 8.15.0
          type: number
      required:
      - count
      - current
      - failed
      - processors
      - time_in_millis
      - ingested_as_first_pipeline_in_bytes
      - produced_as_first_pipeline_in_bytes
    nodes._types.KeyedProcessor:
      type: object
      properties:
        stats:
          allOf:
          - "$ref": "#/components/schemas/nodes._types.Processor"
        type:
          type: string
    nodes._types.Processor:
      type: object
      properties:
        count:
          description: Number of documents transformed by the processor.
          type: number
        current:
          description: Number of documents currently being transformed by the processor.
          type: number
        failed:
          description: Number of failed operations for the processor.
          type: number
        time_in_millis:
          description: Time, in milliseconds, spent by the processor transforming
            documents.
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
    nodes._types.IngestTotal:
      type: object
      properties:
        count:
          description: Total number of documents ingested during the lifetime of this
            node.
          type: number
        current:
          description: Total number of documents currently being ingested.
          type: number
        failed:
          description: Total number of failed ingest operations during the lifetime
            of this node.
          type: number
        time_in_millis:
          description: Total time, in milliseconds, spent preprocessing ingest documents
            during the lifetime of this node.
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
      required:
      - count
      - current
      - failed
      - time_in_millis
    nodes._types.ThreadCount:
      type: object
      properties:
        active:
          description: Number of active threads in the thread pool.
          type: number
        completed:
          description: Number of tasks completed by the thread pool executor.
          type: number
        largest:
          description: Highest number of active threads in the thread pool.
          type: number
        queue:
          description: Number of tasks in queue for the thread pool.
          type: number
        rejected:
          description: Number of tasks rejected by the thread pool executor.
          type: number
        threads:
          description: Number of threads in the thread pool.
          type: number
    nodes._types.Scripting:
      type: object
      properties:
        cache_evictions:
          description: Total number of times the script cache has evicted old data.
          type: number
        compilations:
          description: Total number of inline script compilations performed by the
            node.
          type: number
        compilations_history:
          description: Contains this recent history of script compilations.
          type: object
          additionalProperties:
            type: number
        compilation_limit_triggered:
          description: Total number of times the script compilation circuit breaker
            has limited inline script compilations.
          type: number
        contexts:
          type: array
          items:
            "$ref": "#/components/schemas/nodes._types.Context"
    nodes._types.Context:
      type: object
      properties:
        context:
          type: string
        compilations:
          type: number
        cache_evictions:
          type: number
        compilation_limit_triggered:
          type: number
    cluster.pending_tasks.PendingTask:
      type: object
      properties:
        executing:
          description: Indicates whether the pending tasks are currently executing
            or not.
          type: boolean
        insert_order:
          description: The number that represents when the task has been inserted
            into the task queue.
          type: number
        priority:
          description: |-
            The priority of the pending task.
            The valid priorities in descending priority order are: `IMMEDIATE` > `URGENT` > `HIGH` > `NORMAL` > `LOW` > `LANGUID`.
          type: string
        source:
          description: A general description of the cluster task that may include
            a reason and origin.
          type: string
        time_in_queue:
          description: The time since the task is waiting for being performed.
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        time_in_queue_millis:
          description: The time expressed in milliseconds since the task is waiting
            for being performed.
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
      required:
      - executing
      - insert_order
      - priority
      - source
      - time_in_queue_millis
    indices.put_index_template.IndexTemplateMapping:
      type: object
      properties:
        aliases:
          description: |-
            Aliases to add.
            If the index template includes a `data_stream` object, these are data stream aliases.
            Otherwise, these are index aliases.
            Data stream aliases ignore the `index_routing`, `routing`, and `search_routing` options.
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/indices._types.Alias"
        mappings:
          description: |-
            Mapping for fields in the index.
            If specified, this mapping can include field names, field data types, and mapping parameters.
          allOf:
          - "$ref": "#/components/schemas/_types.mapping.TypeMapping"
        settings:
          description: Configuration options for the index.
          allOf:
          - "$ref": "#/components/schemas/indices._types.IndexSettings"
        lifecycle:
          x-state: Generally available; Added in 8.11.0
          allOf:
          - "$ref": "#/components/schemas/indices._types.DataStreamLifecycle"
        data_stream_options:
          x-state: Generally available; Added in 8.19.0
          oneOf:
          - "$ref": "#/components/schemas/indices._types.DataStreamOptionsTemplate"
          - nullable: true
            type: string
    indices._types.Alias:
      type: object
      properties:
        filter:
          description: Query used to limit documents the alias can access.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.QueryContainer"
        index_routing:
          description: |-
            Value used to route indexing operations to a specific shard.
            If specified, this overwrites the `routing` value for indexing operations.
          type: string
        is_hidden:
          description: |-
            If `true`, the alias is hidden.
            All indices for the alias must have the same `is_hidden` value.
          default: false
          type: boolean
        is_write_index:
          description: If `true`, the index is the write index for the alias.
          default: false
          type: boolean
        routing:
          description: Value used to route indexing and search operations to a specific
            shard.
          type: string
        search_routing:
          description: |-
            Value used to route search operations to a specific shard.
            If specified, this overwrites the `routing` value for search operations.
          type: string
    indices._types.DataStreamOptionsTemplate:
      description: Data stream options template contains the same information as DataStreamOptions
        but allows them to be set explicitly to null.
      type: object
      properties:
        failure_store:
          oneOf:
          - "$ref": "#/components/schemas/indices._types.DataStreamFailureStoreTemplate"
          - nullable: true
            type: string
    indices._types.DataStreamFailureStoreTemplate:
      description: Template equivalent of DataStreamFailureStore that allows nullable
        values.
      type: object
      properties:
        enabled:
          description: |-
            If defined, it turns the failure store on/off (`true`/`false`) for this data stream. A data stream failure store
            that's disabled (enabled: `false`) will redirect no new failed indices to the failure store; however, it will
            not remove any existing data from the failure store.
          default: 'true'
          oneOf:
          - type: boolean
          - nullable: true
            type: string
        lifecycle:
          description: If defined, it specifies the lifecycle configuration for the
            failure store of this data stream.
          oneOf:
          - "$ref": "#/components/schemas/indices._types.FailureStoreLifecycleTemplate"
          - nullable: true
            type: string
    indices._types.FailureStoreLifecycleTemplate:
      description: Template equivalent of FailureStoreLifecycle that allows nullable
        values.
      type: object
      properties:
        data_retention:
          description: |-
            If defined, every document added to this data stream will be stored at least for this time frame.
            Any time after this duration the document could be deleted.
            When empty, every document in this data stream will be stored indefinitely.
          oneOf:
          - "$ref": "#/components/schemas/_types.Duration"
          - nullable: true
            type: string
        enabled:
          description: |-
            If defined, it turns data stream lifecycle on/off (`true`/`false`) for this data stream. A data stream lifecycle
            that's disabled (enabled: `false`) will have no effect on the data stream.
          default: true
          type: boolean
    cluster.remote_info.ClusterRemoteInfo:
      discriminator:
        propertyName: mode
        mapping:
          proxy: "#/components/schemas/cluster.remote_info.ClusterRemoteProxyInfo"
          sniff: "#/components/schemas/cluster.remote_info.ClusterRemoteSniffInfo"
      oneOf:
      - "$ref": "#/components/schemas/cluster.remote_info.ClusterRemoteSniffInfo"
      - "$ref": "#/components/schemas/cluster.remote_info.ClusterRemoteProxyInfo"
    cluster.remote_info.ClusterRemoteSniffInfo:
      type: object
      properties:
        mode:
          description: The connection mode for the remote cluster.
          type: string
          enum:
          - sniff
        connected:
          description: |-
            If it is `true`, there is at least one open connection to the remote cluster.
            If it is `false`, it means that the cluster no longer has an open connection to the remote cluster.
            It does not necessarily mean that the remote cluster is down or unavailable, just that at some point a connection was lost.
          type: boolean
        max_connections_per_cluster:
          description: The maximum number of connections maintained for the remote
            cluster when sniff mode is configured.
          type: number
        num_nodes_connected:
          description: The number of connected nodes in the remote cluster when sniff
            mode is configured.
          type: number
        initial_connect_timeout:
          description: The initial connect timeout for remote cluster connections.
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        skip_unavailable:
          description: If `true`, cross-cluster search skips the remote cluster when
            its nodes are unavailable during the search and ignores errors returned
            by the remote cluster.
          type: boolean
        seeds:
          description: The initial seed transport addresses of the remote cluster
            when sniff mode is configured.
          type: array
          items:
            type: string
      required:
      - mode
      - connected
      - max_connections_per_cluster
      - num_nodes_connected
      - initial_connect_timeout
      - skip_unavailable
      - seeds
    cluster.remote_info.ClusterRemoteProxyInfo:
      type: object
      properties:
        mode:
          description: The connection mode for the remote cluster.
          type: string
          enum:
          - proxy
        connected:
          description: |-
            If it is `true`, there is at least one open connection to the remote cluster.
            If it is `false`, it means that the cluster no longer has an open connection to the remote cluster.
            It does not necessarily mean that the remote cluster is down or unavailable, just that at some point a connection was lost.
          type: boolean
        initial_connect_timeout:
          description: The initial connect timeout for remote cluster connections.
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        skip_unavailable:
          description: If `true`, cross-cluster search skips the remote cluster when
            its nodes are unavailable during the search and ignores errors returned
            by the remote cluster.
          type: boolean
        proxy_address:
          description: The address for remote connections when proxy mode is configured.
          type: string
        server_name:
          type: string
        num_proxy_sockets_connected:
          description: The number of open socket connections to the remote cluster
            when proxy mode is configured.
          type: number
        max_proxy_socket_connections:
          description: The maximum number of socket connections to the remote cluster
            when proxy mode is configured.
          type: number
        cluster_credentials:
          description: This field is present and has a value of `::es_redacted::`
            only when the remote cluster is configured with the API key based model.
            Otherwise, the field is not present.
          type: string
      required:
      - mode
      - connected
      - initial_connect_timeout
      - skip_unavailable
      - proxy_address
      - server_name
      - num_proxy_sockets_connected
      - max_proxy_socket_connections
    cluster.reroute.Command:
      type: object
      properties:
        cancel:
          description: Cancel allocation of a shard (or recovery). Accepts index and
            shard for index name and shard number, and node for the node to cancel
            the shard allocation on. This can be used to force resynchronization of
            existing replicas from the primary shard by cancelling them and allowing
            them to be reinitialized through the standard recovery process. By default
            only replica shard allocations can be cancelled. If it is necessary to
            cancel the allocation of a primary shard then the allow_primary flag must
            also be included in the request.
          allOf:
          - "$ref": "#/components/schemas/cluster.reroute.CommandCancelAction"
        move:
          description: Move a started shard from one node to another node. Accepts
            index and shard for index name and shard number, from_node for the node
            to move the shard from, and to_node for the node to move the shard to.
          allOf:
          - "$ref": "#/components/schemas/cluster.reroute.CommandMoveAction"
        allocate_replica:
          description: Allocate an unassigned replica shard to a node. Accepts index
            and shard for index name and shard number, and node to allocate the shard
            to. Takes allocation deciders into account.
          allOf:
          - "$ref": "#/components/schemas/cluster.reroute.CommandAllocateReplicaAction"
        allocate_stale_primary:
          description: Allocate a primary shard to a node that holds a stale copy.
            Accepts the index and shard for index name and shard number, and node
            to allocate the shard to. Using this command may lead to data loss for
            the provided shard id. If a node which has the good copy of the data rejoins
            the cluster later on, that data will be deleted or overwritten with the
            data of the stale copy that was forcefully allocated with this command.
            To ensure that these implications are well-understood, this command requires
            the flag accept_data_loss to be explicitly set to true.
          allOf:
          - "$ref": "#/components/schemas/cluster.reroute.CommandAllocatePrimaryAction"
        allocate_empty_primary:
          description: Allocate an empty primary shard to a node. Accepts the index
            and shard for index name and shard number, and node to allocate the shard
            to. Using this command leads to a complete loss of all data that was indexed
            into this shard, if it was previously started. If a node which has a copy
            of the data rejoins the cluster later on, that data will be deleted. To
            ensure that these implications are well-understood, this command requires
            the flag accept_data_loss to be explicitly set to true.
          allOf:
          - "$ref": "#/components/schemas/cluster.reroute.CommandAllocatePrimaryAction"
    cluster.reroute.CommandCancelAction:
      type: object
      properties:
        index:
          allOf:
          - "$ref": "#/components/schemas/_types.IndexName"
        shard:
          type: number
        node:
          type: string
        allow_primary:
          type: boolean
      required:
      - index
      - shard
      - node
    cluster.reroute.CommandMoveAction:
      type: object
      properties:
        index:
          allOf:
          - "$ref": "#/components/schemas/_types.IndexName"
        shard:
          type: number
        from_node:
          description: The node to move the shard from
          type: string
        to_node:
          description: The node to move the shard to
          type: string
      required:
      - index
      - shard
      - from_node
      - to_node
    cluster.reroute.CommandAllocateReplicaAction:
      type: object
      properties:
        index:
          allOf:
          - "$ref": "#/components/schemas/_types.IndexName"
        shard:
          type: number
        node:
          type: string
      required:
      - index
      - shard
      - node
    cluster.reroute.CommandAllocatePrimaryAction:
      type: object
      properties:
        index:
          allOf:
          - "$ref": "#/components/schemas/_types.IndexName"
        shard:
          type: number
        node:
          type: string
        accept_data_loss:
          description: If a node which has a copy of the data rejoins the cluster
            later on, that data will be deleted. To ensure that these implications
            are well-understood, this command requires the flag accept_data_loss to
            be explicitly set to true
          type: boolean
      required:
      - index
      - shard
      - node
      - accept_data_loss
    cluster.reroute.RerouteExplanation:
      type: object
      properties:
        command:
          type: string
        decisions:
          type: array
          items:
            "$ref": "#/components/schemas/cluster.reroute.RerouteDecision"
        parameters:
          allOf:
          - "$ref": "#/components/schemas/cluster.reroute.RerouteParameters"
      required:
      - command
      - decisions
      - parameters
    cluster.reroute.RerouteDecision:
      type: object
      properties:
        decider:
          type: string
        decision:
          type: string
        explanation:
          type: string
      required:
      - decider
      - decision
      - explanation
    cluster.reroute.RerouteParameters:
      type: object
      properties:
        allow_primary:
          type: boolean
        index:
          allOf:
          - "$ref": "#/components/schemas/_types.IndexName"
        node:
          allOf:
          - "$ref": "#/components/schemas/_types.NodeName"
        shard:
          type: number
        from_node:
          allOf:
          - "$ref": "#/components/schemas/_types.NodeName"
        to_node:
          allOf:
          - "$ref": "#/components/schemas/_types.NodeName"
      required:
      - allow_primary
      - index
      - node
      - shard
    _types.NodeName:
      type: string
    cluster.state.ClusterStateMetrics:
      oneOf:
      - "$ref": "#/components/schemas/cluster.state.ClusterStateMetric"
      - type: array
        items:
          "$ref": "#/components/schemas/cluster.state.ClusterStateMetric"
    cluster.state.ClusterStateMetric:
      type: string
      enum:
      - _all
      - version
      - master_node
      - blocks
      - nodes
      - metadata
      - routing_table
      - routing_nodes
      - customs
    cluster.stats.StatsResponseBase:
      allOf:
      - "$ref": "#/components/schemas/nodes._types.NodesResponseBase"
      - type: object
        properties:
          cluster_name:
            description: Name of the cluster, based on the cluster name setting.
            allOf:
            - "$ref": "#/components/schemas/_types.Name"
          cluster_uuid:
            description: Unique identifier for the cluster.
            allOf:
            - "$ref": "#/components/schemas/_types.Uuid"
          indices:
            description: Contains statistics about indices with shards assigned to
              selected nodes.
            allOf:
            - "$ref": "#/components/schemas/cluster.stats.ClusterIndices"
          nodes:
            description: Contains statistics about nodes selected by the request’s
              node filters.
            allOf:
            - "$ref": "#/components/schemas/cluster.stats.ClusterNodes"
          repositories:
            description: Contains stats on repository feature usage exposed in cluster
              stats for telemetry.
            type: object
            additionalProperties:
              type: object
              additionalProperties:
                type: number
          snapshots:
            description: Contains stats cluster snapshots.
            allOf:
            - "$ref": "#/components/schemas/cluster.stats.ClusterSnapshotStats"
          status:
            description: |+
              Health status of the cluster, based on the state of its primary and replica shards.

              Supported values include:
                - `green` (or `GREEN`): All shards are assigned.
                - `yellow` (or `YELLOW`): All primary shards are assigned, but one or more replica shards are unassigned. If a node in the cluster fails, some data could be unavailable until that node is repaired.
                - `red` (or `RED`): One or more primary shards are unassigned, so some data is unavailable. This can occur briefly during cluster startup as primary shards are assigned.
                - `unknown`
                - `unavailable`

            allOf:
            - "$ref": "#/components/schemas/_types.HealthStatus"
          timestamp:
            description: Unix timestamp, in milliseconds, for the last time the cluster
              statistics were refreshed.
            type: number
          ccs:
            description: Cross-cluster stats
            allOf:
            - "$ref": "#/components/schemas/cluster.stats.CCSStats"
        required:
        - cluster_name
        - cluster_uuid
        - indices
        - nodes
        - repositories
        - snapshots
        - timestamp
        - ccs
    cluster.stats.ClusterIndices:
      type: object
      properties:
        analysis:
          description: Contains statistics about analyzers and analyzer components
            used in selected nodes.
          allOf:
          - "$ref": "#/components/schemas/cluster.stats.CharFilterTypes"
        completion:
          description: Contains statistics about memory used for completion in selected
            nodes.
          allOf:
          - "$ref": "#/components/schemas/_types.CompletionStats"
        count:
          description: Total number of indices with shards assigned to selected nodes.
          type: number
        docs:
          description: Contains counts for documents in selected nodes.
          allOf:
          - "$ref": "#/components/schemas/_types.DocStats"
        fielddata:
          description: Contains statistics about the field data cache of selected
            nodes.
          allOf:
          - "$ref": "#/components/schemas/_types.FielddataStats"
        query_cache:
          description: Contains statistics about the query cache of selected nodes.
          allOf:
          - "$ref": "#/components/schemas/_types.QueryCacheStats"
        search:
          description: |-
            Holds a snapshot of the search usage statistics.
            Used to hold the stats for a single node that's part of a ClusterStatsNodeResponse, as well as to
            accumulate stats for the entire cluster and return them as part of the ClusterStatsResponse.
          allOf:
          - "$ref": "#/components/schemas/cluster.stats.SearchUsageStats"
        segments:
          description: Contains statistics about segments in selected nodes.
          allOf:
          - "$ref": "#/components/schemas/_types.SegmentsStats"
        shards:
          description: Contains statistics about indices with shards assigned to selected
            nodes.
          allOf:
          - "$ref": "#/components/schemas/cluster.stats.ClusterIndicesShards"
        store:
          description: Contains statistics about the size of shards assigned to selected
            nodes.
          allOf:
          - "$ref": "#/components/schemas/_types.StoreStats"
        mappings:
          description: Contains statistics about field mappings in selected nodes.
          allOf:
          - "$ref": "#/components/schemas/cluster.stats.FieldTypesMappings"
        versions:
          description: Contains statistics about analyzers and analyzer components
            used in selected nodes.
          type: array
          items:
            "$ref": "#/components/schemas/cluster.stats.IndicesVersions"
        dense_vector:
          description: Contains statistics about indexed dense vector
          allOf:
          - "$ref": "#/components/schemas/cluster.stats.DenseVectorStats"
        sparse_vector:
          description: Contains statistics about indexed sparse vector
          allOf:
          - "$ref": "#/components/schemas/cluster.stats.SparseVectorStats"
      required:
      - completion
      - count
      - docs
      - fielddata
      - query_cache
      - search
      - segments
      - shards
      - store
      - dense_vector
      - sparse_vector
    cluster.stats.CharFilterTypes:
      type: object
      properties:
        analyzer_types:
          description: Contains statistics about analyzer types used in selected nodes.
          type: array
          items:
            "$ref": "#/components/schemas/cluster.stats.FieldTypes"
        built_in_analyzers:
          description: Contains statistics about built-in analyzers used in selected
            nodes.
          type: array
          items:
            "$ref": "#/components/schemas/cluster.stats.FieldTypes"
        built_in_char_filters:
          description: Contains statistics about built-in character filters used in
            selected nodes.
          type: array
          items:
            "$ref": "#/components/schemas/cluster.stats.FieldTypes"
        built_in_filters:
          description: Contains statistics about built-in token filters used in selected
            nodes.
          type: array
          items:
            "$ref": "#/components/schemas/cluster.stats.FieldTypes"
        built_in_tokenizers:
          description: Contains statistics about built-in tokenizers used in selected
            nodes.
          type: array
          items:
            "$ref": "#/components/schemas/cluster.stats.FieldTypes"
        char_filter_types:
          description: Contains statistics about character filter types used in selected
            nodes.
          type: array
          items:
            "$ref": "#/components/schemas/cluster.stats.FieldTypes"
        filter_types:
          description: Contains statistics about token filter types used in selected
            nodes.
          type: array
          items:
            "$ref": "#/components/schemas/cluster.stats.FieldTypes"
        tokenizer_types:
          description: Contains statistics about tokenizer types used in selected
            nodes.
          type: array
          items:
            "$ref": "#/components/schemas/cluster.stats.FieldTypes"
        synonyms:
          description: Contains statistics about synonyms types used in selected nodes.
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/cluster.stats.SynonymsStats"
      required:
      - analyzer_types
      - built_in_analyzers
      - built_in_char_filters
      - built_in_filters
      - built_in_tokenizers
      - char_filter_types
      - filter_types
      - tokenizer_types
      - synonyms
    cluster.stats.FieldTypes:
      type: object
      properties:
        name:
          description: The name for the field type in selected nodes.
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        count:
          description: The number of occurrences of the field type in selected nodes.
          type: number
        index_count:
          description: The number of indices containing the field type in selected
            nodes.
          type: number
        indexed_vector_count:
          description: For dense_vector field types, number of indexed vector types
            in selected nodes.
          type: number
        indexed_vector_dim_max:
          description: For dense_vector field types, the maximum dimension of all
            indexed vector types in selected nodes.
          type: number
        indexed_vector_dim_min:
          description: For dense_vector field types, the minimum dimension of all
            indexed vector types in selected nodes.
          type: number
        script_count:
          description: The number of fields that declare a script.
          x-state: Generally available; Added in 7.13.0
          type: number
        vector_index_type_count:
          description: For dense_vector field types, count of mappings by index type
          type: object
          additionalProperties:
            type: number
        vector_similarity_type_count:
          description: For dense_vector field types, count of mappings by similarity
          type: object
          additionalProperties:
            type: number
        vector_element_type_count:
          description: For dense_vector field types, count of mappings by element
            type
          type: object
          additionalProperties:
            type: number
      required:
      - name
      - count
      - index_count
    cluster.stats.SynonymsStats:
      type: object
      properties:
        count:
          type: number
        index_count:
          type: number
      required:
      - count
      - index_count
    _types.CompletionStats:
      type: object
      properties:
        size_in_bytes:
          description: Total amount, in bytes, of memory used for completion across
            all shards assigned to selected nodes.
          type: number
        size:
          description: Total amount of memory used for completion across all shards
            assigned to selected nodes.
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        fields:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/_types.FieldSizeUsage"
      required:
      - size_in_bytes
    _types.FieldSizeUsage:
      type: object
      properties:
        size:
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        size_in_bytes:
          type: number
      required:
      - size_in_bytes
    _types.DocStats:
      type: object
      properties:
        count:
          description: |-
            Total number of non-deleted documents across all primary shards assigned to selected nodes.
            This number is based on documents in Lucene segments and may include documents from nested fields.
          type: number
        deleted:
          description: |-
            Total number of deleted documents across all primary shards assigned to selected nodes.
            This number is based on documents in Lucene segments.
            Elasticsearch reclaims the disk space of deleted Lucene documents when a segment is merged.
          type: number
        total_size_in_bytes:
          description: |-
            Returns the total size in bytes of all documents in this stats.
            This value may be more reliable than store_stats.size_in_bytes in estimating the index size.
          type: number
        total_size:
          description: Human readable total_size_in_bytes
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
      required:
      - count
      - total_size_in_bytes
    _types.FielddataStats:
      type: object
      properties:
        evictions:
          type: number
        memory_size:
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        memory_size_in_bytes:
          type: number
        fields:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/_types.FieldMemoryUsage"
        global_ordinals:
          allOf:
          - "$ref": "#/components/schemas/_types.GlobalOrdinalsStats"
      required:
      - memory_size_in_bytes
      - global_ordinals
    _types.FieldMemoryUsage:
      type: object
      properties:
        memory_size:
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        memory_size_in_bytes:
          type: number
      required:
      - memory_size_in_bytes
    _types.GlobalOrdinalsStats:
      type: object
      properties:
        build_time_in_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.UnitMillis"
        build_time:
          type: string
        fields:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/_types.GlobalOrdinalFieldStats"
      required:
      - build_time_in_millis
    _types.GlobalOrdinalFieldStats:
      type: object
      properties:
        build_time_in_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.UnitMillis"
        build_time:
          type: string
        shard_max_value_count:
          type: number
      required:
      - build_time_in_millis
      - shard_max_value_count
    _types.QueryCacheStats:
      type: object
      properties:
        cache_count:
          description: |-
            Total number of entries added to the query cache across all shards assigned to selected nodes.
            This number includes current and evicted entries.
          type: number
        cache_size:
          description: Total number of entries currently in the query cache across
            all shards assigned to selected nodes.
          type: number
        evictions:
          description: Total number of query cache evictions across all shards assigned
            to selected nodes.
          type: number
        hit_count:
          description: Total count of query cache hits across all shards assigned
            to selected nodes.
          type: number
        memory_size:
          description: Total amount of memory used for the query cache across all
            shards assigned to selected nodes.
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        memory_size_in_bytes:
          description: Total amount, in bytes, of memory used for the query cache
            across all shards assigned to selected nodes.
          type: number
        miss_count:
          description: Total count of query cache misses across all shards assigned
            to selected nodes.
          type: number
        total_count:
          description: Total count of hits and misses in the query cache across all
            shards assigned to selected nodes.
          type: number
      required:
      - cache_count
      - cache_size
      - evictions
      - hit_count
      - memory_size_in_bytes
      - miss_count
      - total_count
    cluster.stats.SearchUsageStats:
      type: object
      properties:
        total:
          type: number
        queries:
          type: object
          additionalProperties:
            type: number
        rescorers:
          type: object
          additionalProperties:
            type: number
        sections:
          type: object
          additionalProperties:
            type: number
        retrievers:
          type: object
          additionalProperties:
            type: number
        extended:
          allOf:
          - "$ref": "#/components/schemas/cluster.stats.ExtendedSearchUsage"
      required:
      - total
      - queries
      - rescorers
      - sections
      - retrievers
      - extended
    cluster.stats.ExtendedSearchUsage:
      type: object
      properties:
        retrievers:
          allOf:
          - "$ref": "#/components/schemas/cluster.stats.ExtendedRetrieversSearchUsage"
        section:
          allOf:
          - "$ref": "#/components/schemas/cluster.stats.ExtendedSectionSearchUsage"
    cluster.stats.ExtendedRetrieversSearchUsage:
      type: object
      properties:
        text_similarity_reranker:
          allOf:
          - "$ref": "#/components/schemas/cluster.stats.ExtendedTextSimilarityRetrieverUsage"
    cluster.stats.ExtendedTextSimilarityRetrieverUsage:
      type: object
      properties:
        chunk_rescorer:
          type: number
    cluster.stats.ExtendedSectionSearchUsage:
      type: object
      properties:
        sort:
          type: object
          additionalProperties:
            type: number
    _types.SegmentsStats:
      type: object
      properties:
        count:
          description: Total number of segments across all shards assigned to selected
            nodes.
          type: number
        doc_values_memory:
          description: Total amount of memory used for doc values across all shards
            assigned to selected nodes.
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        doc_values_memory_in_bytes:
          description: Total amount, in bytes, of memory used for doc values across
            all shards assigned to selected nodes.
          type: number
        file_sizes:
          description: |-
            This object is not populated by the cluster stats API.
            To get information on segment files, use the node stats API.
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/indices.stats.ShardFileSizeInfo"
        fixed_bit_set:
          description: |-
            Total amount of memory used by fixed bit sets across all shards assigned to selected nodes.
            Fixed bit sets are used for nested object field types and type filters for join fields.
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        fixed_bit_set_memory_in_bytes:
          description: Total amount of memory, in bytes, used by fixed bit sets across
            all shards assigned to selected nodes.
          type: number
        index_writer_memory:
          description: Total amount of memory used by all index writers across all
            shards assigned to selected nodes.
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        index_writer_memory_in_bytes:
          description: Total amount, in bytes, of memory used by all index writers
            across all shards assigned to selected nodes.
          type: number
        max_unsafe_auto_id_timestamp:
          description: Unix timestamp, in milliseconds, of the most recently retried
            indexing request.
          type: number
        memory:
          description: Total amount of memory used for segments across all shards
            assigned to selected nodes.
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        memory_in_bytes:
          description: Total amount, in bytes, of memory used for segments across
            all shards assigned to selected nodes.
          type: number
        norms_memory:
          description: Total amount of memory used for normalization factors across
            all shards assigned to selected nodes.
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        norms_memory_in_bytes:
          description: Total amount, in bytes, of memory used for normalization factors
            across all shards assigned to selected nodes.
          type: number
        points_memory:
          description: Total amount of memory used for points across all shards assigned
            to selected nodes.
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        points_memory_in_bytes:
          description: Total amount, in bytes, of memory used for points across all
            shards assigned to selected nodes.
          type: number
        stored_fields_memory_in_bytes:
          description: Total amount, in bytes, of memory used for stored fields across
            all shards assigned to selected nodes.
          type: number
        stored_fields_memory:
          description: Total amount of memory used for stored fields across all shards
            assigned to selected nodes.
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        terms_memory_in_bytes:
          description: Total amount, in bytes, of memory used for terms across all
            shards assigned to selected nodes.
          type: number
        terms_memory:
          description: Total amount of memory used for terms across all shards assigned
            to selected nodes.
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        term_vectors_memory:
          description: Total amount of memory used for term vectors across all shards
            assigned to selected nodes.
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        term_vectors_memory_in_bytes:
          description: Total amount, in bytes, of memory used for term vectors across
            all shards assigned to selected nodes.
          type: number
        version_map_memory:
          description: Total amount of memory used by all version maps across all
            shards assigned to selected nodes.
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        version_map_memory_in_bytes:
          description: Total amount, in bytes, of memory used by all version maps
            across all shards assigned to selected nodes.
          type: number
      required:
      - count
      - doc_values_memory_in_bytes
      - file_sizes
      - fixed_bit_set_memory_in_bytes
      - index_writer_memory_in_bytes
      - max_unsafe_auto_id_timestamp
      - memory_in_bytes
      - norms_memory_in_bytes
      - points_memory_in_bytes
      - stored_fields_memory_in_bytes
      - terms_memory_in_bytes
      - term_vectors_memory_in_bytes
      - version_map_memory_in_bytes
    indices.stats.ShardFileSizeInfo:
      type: object
      properties:
        description:
          type: string
        size_in_bytes:
          type: number
        min_size_in_bytes:
          type: number
        max_size_in_bytes:
          type: number
        average_size_in_bytes:
          type: number
        count:
          type: number
      required:
      - description
      - size_in_bytes
    cluster.stats.ClusterIndicesShards:
      description: Contains statistics about shards assigned to selected nodes.
      type: object
      properties:
        index:
          description: Contains statistics about shards assigned to selected nodes.
          allOf:
          - "$ref": "#/components/schemas/cluster.stats.ClusterIndicesShardsIndex"
        primaries:
          description: Number of primary shards assigned to selected nodes.
          type: number
        replication:
          description: Ratio of replica shards to primary shards across all selected
            nodes.
          type: number
        total:
          description: Total number of shards assigned to selected nodes.
          type: number
    cluster.stats.ClusterIndicesShardsIndex:
      type: object
      properties:
        primaries:
          description: Contains statistics about the number of primary shards assigned
            to selected nodes.
          allOf:
          - "$ref": "#/components/schemas/cluster.stats.ClusterShardMetrics"
        replication:
          description: Contains statistics about the number of replication shards
            assigned to selected nodes.
          allOf:
          - "$ref": "#/components/schemas/cluster.stats.ClusterShardMetrics"
        shards:
          description: Contains statistics about the number of shards assigned to
            selected nodes.
          allOf:
          - "$ref": "#/components/schemas/cluster.stats.ClusterShardMetrics"
      required:
      - primaries
      - replication
      - shards
    cluster.stats.ClusterShardMetrics:
      type: object
      properties:
        avg:
          description: Mean number of shards in an index, counting only shards assigned
            to selected nodes.
          type: number
        max:
          description: Maximum number of shards in an index, counting only shards
            assigned to selected nodes.
          type: number
        min:
          description: Minimum number of shards in an index, counting only shards
            assigned to selected nodes.
          type: number
      required:
      - avg
      - max
      - min
    _types.StoreStats:
      type: object
      properties:
        size:
          description: Total size of all shards assigned to selected nodes.
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        size_in_bytes:
          description: Total size, in bytes, of all shards assigned to selected nodes.
          type: number
        reserved:
          description: A prediction of how much larger the shard stores will eventually
            grow due to ongoing peer recoveries, restoring snapshots, and similar
            activities.
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        reserved_in_bytes:
          description: A prediction, in bytes, of how much larger the shard stores
            will eventually grow due to ongoing peer recoveries, restoring snapshots,
            and similar activities.
          type: number
        total_data_set_size:
          description: |-
            Total data set size of all shards assigned to selected nodes.
            This includes the size of shards not stored fully on the nodes, such as the cache for partially mounted indices.
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        total_data_set_size_in_bytes:
          description: |-
            Total data set size, in bytes, of all shards assigned to selected nodes.
            This includes the size of shards not stored fully on the nodes, such as the cache for partially mounted indices.
          type: number
      required:
      - size_in_bytes
      - reserved_in_bytes
    cluster.stats.FieldTypesMappings:
      type: object
      properties:
        field_types:
          description: Contains statistics about field data types used in selected
            nodes.
          type: array
          items:
            "$ref": "#/components/schemas/cluster.stats.FieldTypes"
        runtime_field_types:
          description: Contains statistics about runtime field data types used in
            selected nodes.
          type: array
          items:
            "$ref": "#/components/schemas/cluster.stats.RuntimeFieldTypes"
        total_field_count:
          description: Total number of fields in all non-system indices.
          type: number
        total_deduplicated_field_count:
          description: Total number of fields in all non-system indices, accounting
            for mapping deduplication.
          type: number
        total_deduplicated_mapping_size:
          description: Total size of all mappings after deduplication and compression.
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        total_deduplicated_mapping_size_in_bytes:
          description: Total size of all mappings, in bytes, after deduplication and
            compression.
          type: number
        source_modes:
          description: Source mode usage count.
          type: object
          additionalProperties:
            type: number
      required:
      - field_types
      - runtime_field_types
      - source_modes
    cluster.stats.RuntimeFieldTypes:
      type: object
      properties:
        chars_max:
          description: Maximum number of characters for a single runtime field script.
          type: number
        chars_total:
          description: Total number of characters for the scripts that define the
            current runtime field data type.
          type: number
        count:
          description: Number of runtime fields mapped to the field data type in selected
            nodes.
          type: number
        doc_max:
          description: Maximum number of accesses to doc_values for a single runtime
            field script
          type: number
        doc_total:
          description: Total number of accesses to doc_values for the scripts that
            define the current runtime field data type.
          type: number
        index_count:
          description: Number of indices containing a mapping of the runtime field
            data type in selected nodes.
          type: number
        lang:
          description: Script languages used for the runtime fields scripts.
          type: array
          items:
            type: string
        lines_max:
          description: Maximum number of lines for a single runtime field script.
          type: number
        lines_total:
          description: Total number of lines for the scripts that define the current
            runtime field data type.
          type: number
        name:
          description: Field data type used in selected nodes.
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        scriptless_count:
          description: Number of runtime fields that don’t declare a script.
          type: number
        shadowed_count:
          description: Number of runtime fields that shadow an indexed field.
          type: number
        source_max:
          description: Maximum number of accesses to _source for a single runtime
            field script.
          type: number
        source_total:
          description: Total number of accesses to _source for the scripts that define
            the current runtime field data type.
          type: number
      required:
      - chars_max
      - chars_total
      - count
      - doc_max
      - doc_total
      - index_count
      - lang
      - lines_max
      - lines_total
      - name
      - scriptless_count
      - shadowed_count
      - source_max
      - source_total
    cluster.stats.IndicesVersions:
      type: object
      properties:
        index_count:
          type: number
        primary_shard_count:
          type: number
        total_primary_bytes:
          type: number
        total_primary_size:
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        version:
          allOf:
          - "$ref": "#/components/schemas/_types.VersionString"
      required:
      - index_count
      - primary_shard_count
      - total_primary_bytes
      - version
    cluster.stats.DenseVectorStats:
      type: object
      properties:
        value_count:
          type: number
        off_heap:
          allOf:
          - "$ref": "#/components/schemas/cluster.stats.DenseVectorOffHeapStats"
      required:
      - value_count
    cluster.stats.DenseVectorOffHeapStats:
      type: object
      properties:
        total_size_bytes:
          type: number
        total_size:
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        total_veb_size_bytes:
          type: number
        total_veb_size:
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        total_vec_size_bytes:
          type: number
        total_vec_size:
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        total_veq_size_bytes:
          type: number
        total_veq_size:
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        total_vex_size_bytes:
          type: number
        total_vex_size:
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        total_cenif_size_bytes:
          type: number
        total_cenif_size:
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        total_clivf_size_bytes:
          type: number
        total_clivf_size:
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        fielddata:
          type: object
          additionalProperties:
            type: object
            additionalProperties:
              type: number
      required:
      - total_size_bytes
      - total_veb_size_bytes
      - total_vec_size_bytes
      - total_veq_size_bytes
      - total_vex_size_bytes
      - total_cenif_size_bytes
      - total_clivf_size_bytes
    cluster.stats.SparseVectorStats:
      type: object
      properties:
        value_count:
          type: number
      required:
      - value_count
    cluster.stats.ClusterNodes:
      type: object
      properties:
        count:
          description: Contains counts for nodes selected by the request’s node filters.
          allOf:
          - "$ref": "#/components/schemas/cluster.stats.ClusterNodeCount"
        discovery_types:
          description: Contains statistics about the discovery types used by selected
            nodes.
          type: object
          additionalProperties:
            type: number
        fs:
          description: Contains statistics about file stores by selected nodes.
          allOf:
          - "$ref": "#/components/schemas/cluster.stats.ClusterFileSystem"
        indexing_pressure:
          x-state: Generally available; Added in 7.16.0
          allOf:
          - "$ref": "#/components/schemas/cluster.stats.IndexingPressure"
        ingest:
          allOf:
          - "$ref": "#/components/schemas/cluster.stats.ClusterIngest"
        jvm:
          description: Contains statistics about the Java Virtual Machines (JVMs)
            used by selected nodes.
          allOf:
          - "$ref": "#/components/schemas/cluster.stats.ClusterJvm"
        network_types:
          description: Contains statistics about the transport and HTTP networks used
            by selected nodes.
          allOf:
          - "$ref": "#/components/schemas/cluster.stats.ClusterNetworkTypes"
        os:
          description: Contains statistics about the operating systems used by selected
            nodes.
          allOf:
          - "$ref": "#/components/schemas/cluster.stats.ClusterOperatingSystem"
        packaging_types:
          description: Contains statistics about Elasticsearch distributions installed
            on selected nodes.
          type: array
          items:
            "$ref": "#/components/schemas/cluster.stats.NodePackagingType"
        plugins:
          description: |-
            Contains statistics about installed plugins and modules by selected nodes.
            If no plugins or modules are installed, this array is empty.
          type: array
          items:
            "$ref": "#/components/schemas/_types.PluginStats"
        process:
          description: Contains statistics about processes used by selected nodes.
          allOf:
          - "$ref": "#/components/schemas/cluster.stats.ClusterProcess"
        versions:
          description: Array of Elasticsearch versions used on selected nodes.
          type: array
          items:
            "$ref": "#/components/schemas/_types.VersionString"
      required:
      - count
      - discovery_types
      - fs
      - indexing_pressure
      - ingest
      - jvm
      - network_types
      - os
      - packaging_types
      - plugins
      - process
      - versions
    cluster.stats.ClusterNodeCount:
      type: object
      properties:
        total:
          type: number
        coordinating_only:
          type: number
        data:
          type: number
        data_cold:
          type: number
        data_content:
          type: number
        data_frozen:
          x-state: Generally available; Added in 7.13.0
          type: number
        data_hot:
          type: number
        data_warm:
          type: number
        index:
          type: number
        ingest:
          type: number
        master:
          type: number
        ml:
          type: number
        remote_cluster_client:
          type: number
        search:
          type: number
        transform:
          type: number
        voting_only:
          type: number
      required:
      - total
    cluster.stats.ClusterFileSystem:
      type: object
      properties:
        path:
          type: string
        mount:
          type: string
        type:
          type: string
        available_in_bytes:
          description: |-
            Total number of bytes available to JVM in file stores across all selected nodes.
            Depending on operating system or process-level restrictions, this number may be less than `nodes.fs.free_in_byes`.
            This is the actual amount of free disk space the selected Elasticsearch nodes can use.
          type: number
        available:
          description: |-
            Total number of bytes available to JVM in file stores across all selected nodes.
            Depending on operating system or process-level restrictions, this number may be less than `nodes.fs.free_in_byes`.
            This is the actual amount of free disk space the selected Elasticsearch nodes can use.
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        free_in_bytes:
          description: Total number, in bytes, of unallocated bytes in file stores
            across all selected nodes.
          type: number
        free:
          description: Total number of unallocated bytes in file stores across all
            selected nodes.
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        total_in_bytes:
          description: Total size, in bytes, of all file stores across all selected
            nodes.
          type: number
        total:
          description: Total size of all file stores across all selected nodes.
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        low_watermark_free_space:
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        low_watermark_free_space_in_bytes:
          type: number
        high_watermark_free_space:
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        high_watermark_free_space_in_bytes:
          type: number
        flood_stage_free_space:
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        flood_stage_free_space_in_bytes:
          type: number
        frozen_flood_stage_free_space:
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        frozen_flood_stage_free_space_in_bytes:
          type: number
    cluster.stats.IndexingPressure:
      type: object
      properties:
        memory:
          allOf:
          - "$ref": "#/components/schemas/nodes._types.IndexingPressureMemory"
      required:
      - memory
    nodes._types.IndexingPressureMemory:
      type: object
      properties:
        limit:
          description: |-
            Configured memory limit for the indexing requests.
            Replica requests have an automatic limit that is 1.5x this value.
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        limit_in_bytes:
          description: |-
            Configured memory limit, in bytes, for the indexing requests.
            Replica requests have an automatic limit that is 1.5x this value.
          type: number
        current:
          description: Contains statistics for current indexing load.
          allOf:
          - "$ref": "#/components/schemas/nodes._types.PressureMemory"
        total:
          description: Contains statistics for the cumulative indexing load since
            the node started.
          allOf:
          - "$ref": "#/components/schemas/nodes._types.PressureMemory"
    nodes._types.PressureMemory:
      type: object
      properties:
        all:
          description: Memory consumed by indexing requests in the coordinating, primary,
            or replica stage.
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        all_in_bytes:
          description: Memory consumed, in bytes, by indexing requests in the coordinating,
            primary, or replica stage.
          type: number
        combined_coordinating_and_primary:
          description: |-
            Memory consumed by indexing requests in the coordinating or primary stage.
            This value is not the sum of coordinating and primary as a node can reuse the coordinating memory if the primary stage is executed locally.
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        combined_coordinating_and_primary_in_bytes:
          description: |-
            Memory consumed, in bytes, by indexing requests in the coordinating or primary stage.
            This value is not the sum of coordinating and primary as a node can reuse the coordinating memory if the primary stage is executed locally.
          type: number
        coordinating:
          description: Memory consumed by indexing requests in the coordinating stage.
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        coordinating_in_bytes:
          description: Memory consumed, in bytes, by indexing requests in the coordinating
            stage.
          type: number
        primary:
          description: Memory consumed by indexing requests in the primary stage.
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        primary_in_bytes:
          description: Memory consumed, in bytes, by indexing requests in the primary
            stage.
          type: number
        replica:
          description: Memory consumed by indexing requests in the replica stage.
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        replica_in_bytes:
          description: Memory consumed, in bytes, by indexing requests in the replica
            stage.
          type: number
        coordinating_rejections:
          description: Number of indexing requests rejected in the coordinating stage.
          type: number
        primary_rejections:
          description: Number of indexing requests rejected in the primary stage.
          type: number
        replica_rejections:
          description: Number of indexing requests rejected in the replica stage.
          type: number
        primary_document_rejections:
          type: number
        large_operation_rejections:
          type: number
    cluster.stats.ClusterIngest:
      type: object
      properties:
        number_of_pipelines:
          type: number
        processor_stats:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/cluster.stats.ClusterProcessor"
      required:
      - number_of_pipelines
      - processor_stats
    cluster.stats.ClusterProcessor:
      type: object
      properties:
        count:
          type: number
        current:
          type: number
        failed:
          type: number
        time:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        time_in_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
      required:
      - count
      - current
      - failed
      - time_in_millis
    cluster.stats.ClusterJvm:
      type: object
      properties:
        max_uptime_in_millis:
          description: Uptime duration, in milliseconds, since JVM last started.
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
        max_uptime:
          description: Uptime duration since JVM last started.
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        mem:
          description: Contains statistics about memory used by selected nodes.
          allOf:
          - "$ref": "#/components/schemas/cluster.stats.ClusterJvmMemory"
        threads:
          description: Number of active threads in use by JVM across all selected
            nodes.
          type: number
        versions:
          description: Contains statistics about the JVM versions used by selected
            nodes.
          type: array
          items:
            "$ref": "#/components/schemas/cluster.stats.ClusterJvmVersion"
      required:
      - max_uptime_in_millis
      - mem
      - threads
      - versions
    cluster.stats.ClusterJvmMemory:
      type: object
      properties:
        heap_max_in_bytes:
          description: Maximum amount of memory, in bytes, available for use by the
            heap across all selected nodes.
          type: number
        heap_max:
          description: Maximum amount of memory available for use by the heap across
            all selected nodes.
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        heap_used_in_bytes:
          description: Memory, in bytes, currently in use by the heap across all selected
            nodes.
          type: number
        heap_used:
          description: Memory currently in use by the heap across all selected nodes.
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
      required:
      - heap_max_in_bytes
      - heap_used_in_bytes
    cluster.stats.ClusterJvmVersion:
      type: object
      properties:
        bundled_jdk:
          description: Always `true`. All distributions come with a bundled Java Development
            Kit (JDK).
          type: boolean
        count:
          description: Total number of selected nodes using JVM.
          type: number
        using_bundled_jdk:
          description: If `true`, a bundled JDK is in use by JVM.
          type: boolean
        version:
          description: Version of JVM used by one or more selected nodes.
          allOf:
          - "$ref": "#/components/schemas/_types.VersionString"
        vm_name:
          description: Name of the JVM.
          type: string
        vm_vendor:
          description: Vendor of the JVM.
          type: string
        vm_version:
          description: |-
            Full version number of JVM.
            The full version number includes a plus sign (+) followed by the build number.
          allOf:
          - "$ref": "#/components/schemas/_types.VersionString"
      required:
      - bundled_jdk
      - count
      - using_bundled_jdk
      - version
      - vm_name
      - vm_vendor
      - vm_version
    cluster.stats.ClusterNetworkTypes:
      type: object
      properties:
        http_types:
          description: Contains statistics about the HTTP network types used by selected
            nodes.
          type: object
          additionalProperties:
            type: number
        transport_types:
          description: Contains statistics about the transport network types used
            by selected nodes.
          type: object
          additionalProperties:
            type: number
      required:
      - http_types
      - transport_types
    cluster.stats.ClusterOperatingSystem:
      type: object
      properties:
        allocated_processors:
          description: |-
            Number of processors used to calculate thread pool size across all selected nodes.
            This number can be set with the processors setting of a node and defaults to the number of processors reported by the operating system.
            In both cases, this number will never be larger than 32.
          type: number
        architectures:
          description: Contains statistics about processor architectures (for example,
            x86_64 or aarch64) used by selected nodes.
          type: array
          items:
            "$ref": "#/components/schemas/cluster.stats.ClusterOperatingSystemArchitecture"
        available_processors:
          description: Number of processors available to JVM across all selected nodes.
          type: number
        mem:
          description: Contains statistics about memory used by selected nodes.
          allOf:
          - "$ref": "#/components/schemas/cluster.stats.OperatingSystemMemoryInfo"
        names:
          description: Contains statistics about operating systems used by selected
            nodes.
          type: array
          items:
            "$ref": "#/components/schemas/cluster.stats.ClusterOperatingSystemName"
        pretty_names:
          description: Contains statistics about operating systems used by selected
            nodes.
          type: array
          items:
            "$ref": "#/components/schemas/cluster.stats.ClusterOperatingSystemPrettyName"
      required:
      - allocated_processors
      - available_processors
      - mem
      - names
      - pretty_names
    cluster.stats.ClusterOperatingSystemArchitecture:
      type: object
      properties:
        arch:
          description: Name of an architecture used by one or more selected nodes.
          type: string
        count:
          description: Number of selected nodes using the architecture.
          type: number
      required:
      - arch
      - count
    cluster.stats.OperatingSystemMemoryInfo:
      type: object
      properties:
        adjusted_total_in_bytes:
          description: Total amount, in bytes, of memory across all selected nodes,
            but using the value specified using the `es.total_memory_bytes` system
            property instead of measured total memory for those nodes where that system
            property was set.
          x-state: Generally available; Added in 7.16.0
          type: number
        adjusted_total:
          description: Total amount of memory across all selected nodes, but using
            the value specified using the `es.total_memory_bytes` system property
            instead of measured total memory for those nodes where that system property
            was set.
          x-state: Generally available; Added in 7.16.0
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        free_in_bytes:
          description: Amount, in bytes, of free physical memory across all selected
            nodes.
          type: number
        free:
          description: Amount of free physical memory across all selected nodes.
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        free_percent:
          description: Percentage of free physical memory across all selected nodes.
          type: number
        total_in_bytes:
          description: Total amount, in bytes, of physical memory across all selected
            nodes.
          type: number
        total:
          description: Total amount of physical memory across all selected nodes.
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        used_in_bytes:
          description: Amount, in bytes, of physical memory in use across all selected
            nodes.
          type: number
        used:
          description: Amount of physical memory in use across all selected nodes.
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        used_percent:
          description: Percentage of physical memory in use across all selected nodes.
          type: number
      required:
      - free_in_bytes
      - free_percent
      - total_in_bytes
      - used_in_bytes
      - used_percent
    cluster.stats.ClusterOperatingSystemName:
      type: object
      properties:
        count:
          description: Number of selected nodes using the operating system.
          type: number
        name:
          description: Name of an operating system used by one or more selected nodes.
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
      required:
      - count
      - name
    cluster.stats.ClusterOperatingSystemPrettyName:
      type: object
      properties:
        count:
          description: Number of selected nodes using the operating system.
          type: number
        pretty_name:
          description: Human-readable name of an operating system used by one or more
            selected nodes.
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
      required:
      - count
      - pretty_name
    cluster.stats.NodePackagingType:
      type: object
      properties:
        count:
          description: Number of selected nodes using the distribution flavor and
            file type.
          type: number
        flavor:
          description: Type of Elasticsearch distribution. This is always `default`.
          type: string
        type:
          description: File type (such as `tar` or `zip`) used for the distribution
            package.
          type: string
      required:
      - count
      - flavor
      - type
    _types.PluginStats:
      type: object
      properties:
        classname:
          type: string
        description:
          type: string
        elasticsearch_version:
          allOf:
          - "$ref": "#/components/schemas/_types.VersionString"
        extended_plugins:
          type: array
          items:
            type: string
        has_native_controller:
          type: boolean
        java_version:
          allOf:
          - "$ref": "#/components/schemas/_types.VersionString"
        name:
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        version:
          allOf:
          - "$ref": "#/components/schemas/_types.VersionString"
        licensed:
          type: boolean
      required:
      - classname
      - description
      - elasticsearch_version
      - extended_plugins
      - has_native_controller
      - java_version
      - name
      - version
      - licensed
    cluster.stats.ClusterProcess:
      type: object
      properties:
        cpu:
          description: Contains statistics about CPU used by selected nodes.
          allOf:
          - "$ref": "#/components/schemas/cluster.stats.ClusterProcessCpu"
        open_file_descriptors:
          description: Contains statistics about open file descriptors in selected
            nodes.
          allOf:
          - "$ref": "#/components/schemas/cluster.stats.ClusterProcessOpenFileDescriptors"
      required:
      - cpu
      - open_file_descriptors
    cluster.stats.ClusterProcessCpu:
      type: object
      properties:
        percent:
          description: |-
            Percentage of CPU used across all selected nodes.
            Returns `-1` if not supported.
          type: number
      required:
      - percent
    cluster.stats.ClusterProcessOpenFileDescriptors:
      type: object
      properties:
        avg:
          description: |-
            Average number of concurrently open file descriptors.
            Returns `-1` if not supported.
          type: number
        max:
          description: |-
            Maximum number of concurrently open file descriptors allowed across all selected nodes.
            Returns `-1` if not supported.
          type: number
        min:
          description: |-
            Minimum number of concurrently open file descriptors across all selected nodes.
            Returns -1 if not supported.
          type: number
      required:
      - avg
      - max
      - min
    cluster.stats.ClusterSnapshotStats:
      type: object
      properties:
        current_counts:
          allOf:
          - "$ref": "#/components/schemas/cluster.stats.SnapshotCurrentCounts"
        repositories:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/cluster.stats.PerRepositoryStats"
      required:
      - current_counts
      - repositories
    cluster.stats.SnapshotCurrentCounts:
      type: object
      properties:
        snapshots:
          description: Snapshots currently in progress
          type: number
        shard_snapshots:
          description: Incomplete shard snapshots
          type: number
        snapshot_deletions:
          description: Snapshots deletions in progress
          type: number
        concurrent_operations:
          description: Sum of snapshots and snapshot_deletions
          type: number
        cleanups:
          description: Cleanups in progress, not counted in concurrent_operations
            as they are not concurrent
          type: number
      required:
      - snapshots
      - shard_snapshots
      - snapshot_deletions
      - concurrent_operations
      - cleanups
    cluster.stats.PerRepositoryStats:
      type: object
      properties:
        type:
          type: string
        oldest_start_time_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.UnitMillis"
        oldest_start_time:
          allOf:
          - "$ref": "#/components/schemas/_types.DateFormat"
        current_counts:
          allOf:
          - "$ref": "#/components/schemas/cluster.stats.RepositoryStatsCurrentCounts"
      required:
      - type
      - oldest_start_time_millis
      - current_counts
    cluster.stats.RepositoryStatsCurrentCounts:
      type: object
      properties:
        snapshots:
          type: number
        clones:
          type: number
        finalizations:
          type: number
        deletions:
          type: number
        snapshot_deletions:
          type: number
        active_deletions:
          type: number
        shards:
          allOf:
          - "$ref": "#/components/schemas/cluster.stats.RepositoryStatsShards"
      required:
      - snapshots
      - clones
      - finalizations
      - deletions
      - snapshot_deletions
      - active_deletions
      - shards
    cluster.stats.RepositoryStatsShards:
      type: object
      properties:
        total:
          type: number
        complete:
          type: number
        incomplete:
          type: number
        states:
          type: object
          additionalProperties:
            type: number
      required:
      - total
      - complete
      - incomplete
      - states
    cluster.stats.CCSStats:
      type: object
      properties:
        clusters:
          description: |-
            Contains remote cluster settings and metrics collected from them.
            The keys are cluster names, and the values are per-cluster data.
            Only present if `include_remotes` option is set to true.
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/cluster.stats.RemoteClusterInfo"
        _search:
          description: Information about cross-cluster search usage.
          allOf:
          - "$ref": "#/components/schemas/cluster.stats.CCSUsageStats"
        _esql:
          description: Information about ES|QL cross-cluster query usage.
          allOf:
          - "$ref": "#/components/schemas/cluster.stats.CCSUsageStats"
      required:
      - _search
    cluster.stats.RemoteClusterInfo:
      type: object
      properties:
        cluster_uuid:
          description: The UUID of the remote cluster.
          type: string
        mode:
          description: The connection mode used to communicate with the remote cluster.
          type: string
        skip_unavailable:
          description: The `skip_unavailable` setting used for this remote cluster.
          type: boolean
        transport.compress:
          description: Transport compression setting used for this remote cluster.
          type: string
        status:
          description: |+
            Health status of the cluster, based on the state of its primary and replica shards.

            Supported values include:
              - `green` (or `GREEN`): All shards are assigned.
              - `yellow` (or `YELLOW`): All primary shards are assigned, but one or more replica shards are unassigned. If a node in the cluster fails, some data could be unavailable until that node is repaired.
              - `red` (or `RED`): One or more primary shards are unassigned, so some data is unavailable. This can occur briefly during cluster startup as primary shards are assigned.
              - `unknown`
              - `unavailable`

          allOf:
          - "$ref": "#/components/schemas/_types.HealthStatus"
        version:
          description: The list of Elasticsearch versions used by the nodes on the
            remote cluster.
          type: array
          items:
            "$ref": "#/components/schemas/_types.VersionString"
        nodes_count:
          description: The total count of nodes in the remote cluster.
          type: number
        shards_count:
          description: The total number of shards in the remote cluster.
          type: number
        indices_count:
          description: The total number of indices in the remote cluster.
          type: number
        indices_total_size_in_bytes:
          description: Total data set size, in bytes, of all shards assigned to selected
            nodes.
          type: number
        indices_total_size:
          description: Total data set size of all shards assigned to selected nodes,
            as a human-readable string.
          type: string
        max_heap_in_bytes:
          description: Maximum amount of memory, in bytes, available for use by the
            heap across the nodes of the remote cluster.
          type: number
        max_heap:
          description: Maximum amount of memory available for use by the heap across
            the nodes of the remote cluster, as a human-readable string.
          type: string
        mem_total_in_bytes:
          description: Total amount, in bytes, of physical memory across the nodes
            of the remote cluster.
          type: number
        mem_total:
          description: Total amount of physical memory across the nodes of the remote
            cluster, as a human-readable string.
          type: string
      required:
      - cluster_uuid
      - mode
      - skip_unavailable
      - transport.compress
      - status
      - version
      - nodes_count
      - shards_count
      - indices_count
      - indices_total_size_in_bytes
      - max_heap_in_bytes
      - mem_total_in_bytes
    cluster.stats.CCSUsageStats:
      type: object
      properties:
        total:
          description: The total number of cross-cluster search requests that have
            been executed by the cluster.
          type: number
        success:
          description: The total number of cross-cluster search requests that have
            been successfully executed by the cluster.
          type: number
        skipped:
          description: The total number of cross-cluster search requests (successful
            or failed) that had at least one remote cluster skipped.
          type: number
        took:
          description: Statistics about the time taken to execute cross-cluster search
            requests.
          allOf:
          - "$ref": "#/components/schemas/cluster.stats.CCSUsageTimeValue"
        took_mrt_true:
          description: Statistics about the time taken to execute cross-cluster search
            requests for which the `ccs_minimize_roundtrips` setting was set to `true`.
          allOf:
          - "$ref": "#/components/schemas/cluster.stats.CCSUsageTimeValue"
        took_mrt_false:
          description: Statistics about the time taken to execute cross-cluster search
            requests for which the `ccs_minimize_roundtrips` setting was set to `false`.
          allOf:
          - "$ref": "#/components/schemas/cluster.stats.CCSUsageTimeValue"
        remotes_per_search_max:
          description: The maximum number of remote clusters that were queried in
            a single cross-cluster search request.
          type: number
        remotes_per_search_avg:
          description: The average number of remote clusters that were queried in
            a single cross-cluster search request.
          type: number
        failure_reasons:
          description: Statistics about the reasons for cross-cluster search request
            failures. The keys are the failure reason names and the values are the
            number of requests that failed for that reason.
          type: object
          additionalProperties:
            type: number
        features:
          description: The keys are the names of the search feature, and the values
            are the number of requests that used that feature. Single request can
            use more than one feature (e.g. both `async` and `wildcard`).
          type: object
          additionalProperties:
            type: number
        clients:
          description: Statistics about the clients that executed cross-cluster search
            requests. The keys are the names of the clients, and the values are the
            number of requests that were executed by that client. Only known clients
            (such as `kibana` or `elasticsearch`) are counted.
          type: object
          additionalProperties:
            type: number
        clusters:
          description: Statistics about the clusters that were queried in cross-cluster
            search requests. The keys are cluster names, and the values are per-cluster
            telemetry data. This also includes the local cluster itself, which uses
            the name `(local)`.
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/cluster.stats.CCSUsageClusterStats"
      required:
      - total
      - success
      - skipped
      - took
      - remotes_per_search_max
      - remotes_per_search_avg
      - failure_reasons
      - features
      - clients
      - clusters
    cluster.stats.CCSUsageTimeValue:
      type: object
      properties:
        max:
          description: The maximum time taken to execute a request, in milliseconds.
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
        avg:
          description: The average time taken to execute a request, in milliseconds.
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
        p90:
          description: The 90th percentile of the time taken to execute requests,
            in milliseconds.
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
      required:
      - max
      - avg
      - p90
    cluster.stats.CCSUsageClusterStats:
      type: object
      properties:
        total:
          description: The total number of successful (not skipped) cross-cluster
            search requests that were executed against this cluster. This may include
            requests where partial results were returned, but not requests in which
            the cluster has been skipped entirely.
          type: number
        skipped:
          description: The total number of cross-cluster search requests for which
            this cluster was skipped.
          type: number
        took:
          description: Statistics about the time taken to execute requests against
            this cluster.
          allOf:
          - "$ref": "#/components/schemas/cluster.stats.CCSUsageTimeValue"
      required:
      - total
      - skipped
      - took
    nodes._types.NodesResponseBase:
      type: object
      properties:
        _nodes:
          description: Contains statistics about the number of nodes selected by the
            request’s node filters.
          allOf:
          - "$ref": "#/components/schemas/_types.NodeStatistics"
    _types.NodeStatistics:
      description: Contains statistics about the number of nodes selected by the request.
      type: object
      properties:
        failures:
          type: array
          items:
            "$ref": "#/components/schemas/_types.ErrorCause"
        total:
          description: Total number of nodes selected by the request.
          type: number
        successful:
          description: Number of nodes that responded successfully to the request.
          type: number
        failed:
          description: Number of nodes that rejected the request or failed to respond.
            If this value is not 0, a reason for the rejection or failure is included
            in the response.
          type: number
      required:
      - total
      - successful
      - failed
    _types.Result:
      type: string
      enum:
      - created
      - updated
      - deleted
      - not_found
      - noop
    connector._types.Connector:
      type: object
      properties:
        api_key_id:
          type: string
        api_key_secret_id:
          type: string
        configuration:
          allOf:
          - "$ref": "#/components/schemas/connector._types.ConnectorConfiguration"
        custom_scheduling:
          allOf:
          - "$ref": "#/components/schemas/connector._types.ConnectorCustomScheduling"
        deleted:
          type: boolean
        description:
          type: string
        error:
          oneOf:
          - type: string
          - nullable: true
            type: string
        features:
          allOf:
          - "$ref": "#/components/schemas/connector._types.ConnectorFeatures"
        filtering:
          type: array
          items:
            "$ref": "#/components/schemas/connector._types.FilteringConfig"
        id:
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        index_name:
          oneOf:
          - "$ref": "#/components/schemas/_types.IndexName"
          - nullable: true
            type: string
        is_native:
          type: boolean
        language:
          type: string
        last_access_control_sync_error:
          type: string
        last_access_control_sync_scheduled_at:
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
        last_access_control_sync_status:
          allOf:
          - "$ref": "#/components/schemas/connector._types.SyncStatus"
        last_deleted_document_count:
          type: number
        last_incremental_sync_scheduled_at:
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
        last_indexed_document_count:
          type: number
        last_seen:
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
        last_sync_error:
          type: string
        last_sync_scheduled_at:
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
        last_sync_status:
          allOf:
          - "$ref": "#/components/schemas/connector._types.SyncStatus"
        last_synced:
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
        name:
          type: string
        pipeline:
          allOf:
          - "$ref": "#/components/schemas/connector._types.IngestPipelineParams"
        scheduling:
          allOf:
          - "$ref": "#/components/schemas/connector._types.SchedulingConfiguration"
        service_type:
          type: string
        status:
          allOf:
          - "$ref": "#/components/schemas/connector._types.ConnectorStatus"
        sync_cursor:
          type: object
        sync_now:
          type: boolean
      required:
      - configuration
      - custom_scheduling
      - deleted
      - filtering
      - is_native
      - scheduling
      - status
      - sync_now
    connector._types.ConnectorConfiguration:
      type: object
      additionalProperties:
        "$ref": "#/components/schemas/connector._types.ConnectorConfigProperties"
    connector._types.ConnectorConfigProperties:
      type: object
      properties:
        category:
          type: string
        default_value:
          allOf:
          - "$ref": "#/components/schemas/_types.ScalarValue"
        depends_on:
          type: array
          items:
            "$ref": "#/components/schemas/connector._types.Dependency"
        display:
          allOf:
          - "$ref": "#/components/schemas/connector._types.DisplayType"
        label:
          type: string
        options:
          type: array
          items:
            "$ref": "#/components/schemas/connector._types.SelectOption"
        order:
          type: number
        placeholder:
          type: string
        required:
          type: boolean
        sensitive:
          type: boolean
        tooltip:
          oneOf:
          - type: string
          - nullable: true
            type: string
        type:
          allOf:
          - "$ref": "#/components/schemas/connector._types.ConnectorFieldType"
        ui_restrictions:
          type: array
          items:
            type: string
        validations:
          type: array
          items:
            "$ref": "#/components/schemas/connector._types.Validation"
        value:
          type: object
      required:
      - default_value
      - depends_on
      - display
      - label
      - options
      - required
      - sensitive
      - value
    _types.ScalarValue:
      description: A scalar value.
      oneOf:
      - type: number
      - type: number
      - type: string
      - type: boolean
      - nullable: true
        type: string
    connector._types.Dependency:
      type: object
      properties:
        field:
          type: string
        value:
          allOf:
          - "$ref": "#/components/schemas/_types.ScalarValue"
      required:
      - field
      - value
    connector._types.DisplayType:
      type: string
      enum:
      - textbox
      - textarea
      - numeric
      - toggle
      - dropdown
    connector._types.SelectOption:
      type: object
      properties:
        label:
          type: string
        value:
          allOf:
          - "$ref": "#/components/schemas/_types.ScalarValue"
      required:
      - label
      - value
    connector._types.ConnectorFieldType:
      type: string
      enum:
      - str
      - int
      - list
      - bool
    connector._types.Validation:
      discriminator:
        propertyName: type
        mapping:
          greater_than: "#/components/schemas/connector._types.GreaterThanValidation"
          included_in: "#/components/schemas/connector._types.IncludedInValidation"
          less_than: "#/components/schemas/connector._types.LessThanValidation"
          list_type: "#/components/schemas/connector._types.ListTypeValidation"
          regex: "#/components/schemas/connector._types.RegexValidation"
      oneOf:
      - "$ref": "#/components/schemas/connector._types.LessThanValidation"
      - "$ref": "#/components/schemas/connector._types.GreaterThanValidation"
      - "$ref": "#/components/schemas/connector._types.ListTypeValidation"
      - "$ref": "#/components/schemas/connector._types.IncludedInValidation"
      - "$ref": "#/components/schemas/connector._types.RegexValidation"
    connector._types.LessThanValidation:
      type: object
      properties:
        type:
          type: string
          enum:
          - less_than
        constraint:
          type: number
      required:
      - type
      - constraint
    connector._types.GreaterThanValidation:
      type: object
      properties:
        type:
          type: string
          enum:
          - greater_than
        constraint:
          type: number
      required:
      - type
      - constraint
    connector._types.ListTypeValidation:
      type: object
      properties:
        type:
          type: string
          enum:
          - list_type
        constraint:
          type: string
      required:
      - type
      - constraint
    connector._types.IncludedInValidation:
      type: object
      properties:
        type:
          type: string
          enum:
          - included_in
        constraint:
          type: array
          items:
            "$ref": "#/components/schemas/_types.ScalarValue"
      required:
      - type
      - constraint
    connector._types.RegexValidation:
      type: object
      properties:
        type:
          type: string
          enum:
          - regex
        constraint:
          type: string
      required:
      - type
      - constraint
    connector._types.ConnectorCustomScheduling:
      type: object
      additionalProperties:
        "$ref": "#/components/schemas/connector._types.CustomScheduling"
    connector._types.CustomScheduling:
      type: object
      properties:
        configuration_overrides:
          allOf:
          - "$ref": "#/components/schemas/connector._types.CustomSchedulingConfigurationOverrides"
        enabled:
          type: boolean
        interval:
          type: string
        last_synced:
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
        name:
          type: string
      required:
      - configuration_overrides
      - enabled
      - interval
      - name
    connector._types.CustomSchedulingConfigurationOverrides:
      type: object
      properties:
        max_crawl_depth:
          type: number
        sitemap_discovery_disabled:
          type: boolean
        domain_allowlist:
          type: array
          items:
            type: string
        sitemap_urls:
          type: array
          items:
            type: string
        seed_urls:
          type: array
          items:
            type: string
    connector._types.ConnectorFeatures:
      type: object
      properties:
        document_level_security:
          description: Indicates whether document-level security is enabled.
          allOf:
          - "$ref": "#/components/schemas/connector._types.FeatureEnabled"
        incremental_sync:
          description: Indicates whether incremental syncs are enabled.
          allOf:
          - "$ref": "#/components/schemas/connector._types.FeatureEnabled"
        native_connector_api_keys:
          description: Indicates whether managed connector API keys are enabled.
          allOf:
          - "$ref": "#/components/schemas/connector._types.FeatureEnabled"
        sync_rules:
          allOf:
          - "$ref": "#/components/schemas/connector._types.SyncRulesFeature"
    connector._types.FeatureEnabled:
      type: object
      properties:
        enabled:
          type: boolean
      required:
      - enabled
    connector._types.SyncRulesFeature:
      type: object
      properties:
        advanced:
          description: Indicates whether advanced sync rules are enabled.
          allOf:
          - "$ref": "#/components/schemas/connector._types.FeatureEnabled"
        basic:
          description: Indicates whether basic sync rules are enabled.
          allOf:
          - "$ref": "#/components/schemas/connector._types.FeatureEnabled"
    connector._types.FilteringConfig:
      type: object
      properties:
        active:
          allOf:
          - "$ref": "#/components/schemas/connector._types.FilteringRules"
        domain:
          type: string
        draft:
          allOf:
          - "$ref": "#/components/schemas/connector._types.FilteringRules"
      required:
      - active
      - draft
    connector._types.FilteringRules:
      type: object
      properties:
        advanced_snippet:
          allOf:
          - "$ref": "#/components/schemas/connector._types.FilteringAdvancedSnippet"
        rules:
          type: array
          items:
            "$ref": "#/components/schemas/connector._types.FilteringRule"
        validation:
          allOf:
          - "$ref": "#/components/schemas/connector._types.FilteringRulesValidation"
      required:
      - advanced_snippet
      - rules
      - validation
    connector._types.FilteringAdvancedSnippet:
      type: object
      properties:
        created_at:
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
        updated_at:
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
        value:
          type: object
      required:
      - value
    connector._types.FilteringRule:
      type: object
      properties:
        created_at:
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
        field:
          allOf:
          - "$ref": "#/components/schemas/_types.Field"
        id:
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        order:
          type: number
        policy:
          allOf:
          - "$ref": "#/components/schemas/connector._types.FilteringPolicy"
        rule:
          allOf:
          - "$ref": "#/components/schemas/connector._types.FilteringRuleRule"
        updated_at:
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
        value:
          type: string
      required:
      - field
      - id
      - order
      - policy
      - rule
      - value
    connector._types.FilteringPolicy:
      type: string
      enum:
      - exclude
      - include
    connector._types.FilteringRuleRule:
      type: string
      enum:
      - contains
      - ends_with
      - equals
      - regex
      - starts_with
      - ">"
      - "<"
    connector._types.FilteringRulesValidation:
      type: object
      properties:
        errors:
          type: array
          items:
            "$ref": "#/components/schemas/connector._types.FilteringValidation"
        state:
          allOf:
          - "$ref": "#/components/schemas/connector._types.FilteringValidationState"
      required:
      - errors
      - state
    connector._types.FilteringValidation:
      type: object
      properties:
        ids:
          type: array
          items:
            "$ref": "#/components/schemas/_types.Id"
        messages:
          type: array
          items:
            type: string
      required:
      - ids
      - messages
    connector._types.FilteringValidationState:
      type: string
      enum:
      - edited
      - invalid
      - valid
    connector._types.SyncStatus:
      type: string
      enum:
      - canceling
      - canceled
      - completed
      - error
      - in_progress
      - pending
      - suspended
    connector._types.IngestPipelineParams:
      type: object
      properties:
        extract_binary_content:
          type: boolean
        name:
          type: string
        reduce_whitespace:
          type: boolean
        run_ml_inference:
          type: boolean
      required:
      - extract_binary_content
      - name
      - reduce_whitespace
      - run_ml_inference
    connector._types.SchedulingConfiguration:
      type: object
      properties:
        access_control:
          allOf:
          - "$ref": "#/components/schemas/connector._types.ConnectorScheduling"
        full:
          allOf:
          - "$ref": "#/components/schemas/connector._types.ConnectorScheduling"
        incremental:
          allOf:
          - "$ref": "#/components/schemas/connector._types.ConnectorScheduling"
    connector._types.ConnectorScheduling:
      type: object
      properties:
        enabled:
          type: boolean
        interval:
          description: The interval is expressed using the crontab syntax
          type: string
      required:
      - enabled
      - interval
    connector._types.ConnectorStatus:
      type: string
      enum:
      - created
      - needs_configuration
      - configured
      - connected
      - error
    connector._types.ConnectorSyncJob:
      type: object
      properties:
        cancelation_requested_at:
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
        canceled_at:
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
        completed_at:
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
        connector:
          allOf:
          - "$ref": "#/components/schemas/connector._types.SyncJobConnectorReference"
        created_at:
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
        deleted_document_count:
          type: number
        error:
          type: string
        id:
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        indexed_document_count:
          type: number
        indexed_document_volume:
          type: number
        job_type:
          allOf:
          - "$ref": "#/components/schemas/connector._types.SyncJobType"
        last_seen:
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
        metadata:
          type: object
          additionalProperties:
            type: object
        started_at:
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
        status:
          allOf:
          - "$ref": "#/components/schemas/connector._types.SyncStatus"
        total_document_count:
          type: number
        trigger_method:
          allOf:
          - "$ref": "#/components/schemas/connector._types.SyncJobTriggerMethod"
        worker_hostname:
          type: string
      required:
      - connector
      - created_at
      - deleted_document_count
      - id
      - indexed_document_count
      - indexed_document_volume
      - job_type
      - metadata
      - status
      - total_document_count
      - trigger_method
    connector._types.SyncJobConnectorReference:
      type: object
      properties:
        configuration:
          allOf:
          - "$ref": "#/components/schemas/connector._types.ConnectorConfiguration"
        filtering:
          allOf:
          - "$ref": "#/components/schemas/connector._types.FilteringRules"
        id:
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        index_name:
          type: string
        language:
          type: string
        pipeline:
          allOf:
          - "$ref": "#/components/schemas/connector._types.IngestPipelineParams"
        service_type:
          type: string
        sync_cursor:
          type: object
      required:
      - configuration
      - filtering
      - id
      - index_name
      - service_type
    connector._types.SyncJobType:
      type: string
      enum:
      - full
      - incremental
      - access_control
    connector._types.SyncJobTriggerMethod:
      type: string
      enum:
      - on_demand
      - scheduled
    _types.WriteResponseBase:
      type: object
      properties:
        _id:
          description: The unique identifier for the added document.
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        _index:
          description: The name of the index the document was added to.
          allOf:
          - "$ref": "#/components/schemas/_types.IndexName"
        _primary_term:
          description: The primary term assigned to the document for the indexing
            operation.
          type: number
        result:
          description: 'The result of the indexing operation: `created` or `updated`.'
          allOf:
          - "$ref": "#/components/schemas/_types.Result"
        _seq_no:
          description: |-
            The sequence number assigned to the document for the indexing operation.
            Sequence numbers are used to ensure an older version of a document doesn't overwrite a newer version.
          allOf:
          - "$ref": "#/components/schemas/_types.SequenceNumber"
        _shards:
          description: Information about the replication process of the operation.
          allOf:
          - "$ref": "#/components/schemas/_types.ShardStatistics"
        _version:
          description: The document version, which is incremented each time the document
            is updated.
          allOf:
          - "$ref": "#/components/schemas/_types.VersionNumber"
        failure_store:
          description: The role of the failure store in this document response
          allOf:
          - "$ref": "#/components/schemas/_global.bulk.FailureStoreStatus"
        forced_refresh:
          type: boolean
      required:
      - _id
      - _index
      - result
      - _shards
      - _version
    dangling_indices.list_dangling_indices.DanglingIndex:
      type: object
      properties:
        index_name:
          type: string
        index_uuid:
          type: string
        creation_date_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
        node_ids:
          allOf:
          - "$ref": "#/components/schemas/_types.Ids"
      required:
      - index_name
      - index_uuid
      - creation_date_millis
      - node_ids
    _types.Conflicts:
      type: string
      enum:
      - abort
      - proceed
    _types.Slices:
      description: Slices configuration used to parallelize a process.
      oneOf:
      - type: number
      - "$ref": "#/components/schemas/_types.SlicesCalculation"
    _types.SlicesCalculation:
      type: string
      enum:
      - auto
    _types.BulkIndexByScrollFailure:
      type: object
      properties:
        cause:
          allOf:
          - "$ref": "#/components/schemas/_types.ErrorCause"
        id:
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        index:
          allOf:
          - "$ref": "#/components/schemas/_types.IndexName"
        status:
          type: number
      required:
      - cause
      - id
      - index
      - status
    _types.Retries:
      type: object
      properties:
        bulk:
          description: The number of bulk actions retried.
          type: number
        search:
          description: The number of search actions retried.
          type: number
      required:
      - bulk
      - search
    _types.ReindexStatus:
      type: object
      properties:
        slice_id:
          description: The slice ID
          type: number
        batches:
          description: The number of scroll responses pulled back by the reindex.
          type: number
        created:
          description: The number of documents that were successfully created.
          type: number
        deleted:
          description: The number of documents that were successfully deleted.
          type: number
        noops:
          description: The number of documents that were ignored because the script
            used for the reindex returned a `noop` value for `ctx.op`.
          type: number
        requests_per_second:
          description: The number of requests per second effectively executed during
            the reindex.
          type: number
        retries:
          description: The number of retries attempted by reindex. `bulk` is the number
            of bulk actions retried and `search` is the number of search actions retried.
          allOf:
          - "$ref": "#/components/schemas/_types.Retries"
        throttled:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        throttled_millis:
          description: Number of milliseconds the request slept to conform to `requests_per_second`.
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
        throttled_until:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        throttled_until_millis:
          description: |-
            This field should always be equal to zero in a `_reindex` response.
            It only has meaning when using the Task API, where it indicates the next time (in milliseconds since epoch) a throttled request will be executed again in order to conform to `requests_per_second`.
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
        total:
          description: The number of documents that were successfully processed.
          type: number
        updated:
          description: The number of documents that were successfully updated, for
            example, a document with same ID already existed prior to reindex updating
            it.
          type: number
        version_conflicts:
          description: The number of version conflicts that reindex hits.
          type: number
        cancelled:
          description: The reason for cancellation if the slice was canceled
          type: string
      required:
      - batches
      - deleted
      - noops
      - requests_per_second
      - retries
      - throttled_millis
      - throttled_until_millis
      - total
      - version_conflicts
    _types.TaskId:
      type: string
    tasks._types.TaskListResponseBase:
      type: object
      properties:
        node_failures:
          type: array
          items:
            "$ref": "#/components/schemas/_types.ErrorCause"
        task_failures:
          type: array
          items:
            "$ref": "#/components/schemas/_types.TaskFailure"
        nodes:
          description: Task information grouped by node, if `group_by` was set to
            `node` (the default).
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/tasks._types.NodeTasks"
        tasks:
          description: |-
            Either a flat list of tasks if `group_by` was set to `none`, or grouped by parents if
            `group_by` was set to `parents`.
          allOf:
          - "$ref": "#/components/schemas/tasks._types.TaskInfos"
    _types.TaskFailure:
      type: object
      properties:
        task_id:
          type: number
        node_id:
          allOf:
          - "$ref": "#/components/schemas/_types.NodeId"
        status:
          type: string
        reason:
          allOf:
          - "$ref": "#/components/schemas/_types.ErrorCause"
      required:
      - task_id
      - node_id
      - status
      - reason
    tasks._types.NodeTasks:
      type: object
      properties:
        name:
          allOf:
          - "$ref": "#/components/schemas/_types.NodeId"
        transport_address:
          allOf:
          - "$ref": "#/components/schemas/_types.TransportAddress"
        host:
          allOf:
          - "$ref": "#/components/schemas/_types.Host"
        ip:
          allOf:
          - "$ref": "#/components/schemas/_types.Ip"
        roles:
          type: array
          items:
            type: string
        attributes:
          type: object
          additionalProperties:
            type: string
        tasks:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/tasks._types.TaskInfo"
      required:
      - tasks
    tasks._types.TaskInfo:
      type: object
      properties:
        action:
          type: string
        cancelled:
          type: boolean
        cancellable:
          type: boolean
        description:
          description: |-
            Human readable text that identifies the particular request that the task is performing.
            For example, it might identify the search request being performed by a search task.
            Other kinds of tasks have different descriptions, like `_reindex` which has the source and the destination, or `_bulk` which just has the number of requests and the destination indices.
            Many requests will have only an empty description because more detailed information about the request is not easily available or particularly helpful in identifying the request.
          type: string
        headers:
          type: object
          additionalProperties:
            type: string
        id:
          type: number
        node:
          allOf:
          - "$ref": "#/components/schemas/_types.NodeId"
        running_time:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        running_time_in_nanos:
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitNanos"
        start_time_in_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
        status:
          description: |-
            The internal status of the task, which varies from task to task.
            The format also varies.
            While the goal is to keep the status for a particular task consistent from version to version, this is not always possible because sometimes the implementation changes.
            Fields might be removed from the status for a particular request so any parsing you do of the status might break in minor releases.
          type: object
        type:
          type: string
        parent_task_id:
          allOf:
          - "$ref": "#/components/schemas/_types.TaskId"
      required:
      - action
      - cancellable
      - headers
      - id
      - node
      - running_time_in_nanos
      - start_time_in_millis
      - type
    tasks._types.TaskInfos:
      oneOf:
      - type: array
        items:
          "$ref": "#/components/schemas/tasks._types.TaskInfo"
      - type: object
        additionalProperties:
          "$ref": "#/components/schemas/tasks._types.ParentTaskInfo"
    tasks._types.ParentTaskInfo:
      allOf:
      - "$ref": "#/components/schemas/tasks._types.TaskInfo"
      - type: object
        properties:
          children:
            type: array
            items:
              "$ref": "#/components/schemas/tasks._types.TaskInfo"
    enrich.execute_policy.ExecuteEnrichPolicyStatus:
      type: object
      properties:
        phase:
          allOf:
          - "$ref": "#/components/schemas/enrich.execute_policy.EnrichPolicyPhase"
        step:
          type: string
      required:
      - phase
    enrich.execute_policy.EnrichPolicyPhase:
      type: string
      enum:
      - SCHEDULED
      - RUNNING
      - COMPLETE
      - FAILED
      - CANCELLED
    enrich._types.Summary:
      type: object
      properties:
        config:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/enrich._types.Policy"
          minProperties: 1
          maxProperties: 1
      required:
      - config
    enrich._types.Policy:
      type: object
      properties:
        enrich_fields:
          allOf:
          - "$ref": "#/components/schemas/_types.Fields"
        indices:
          allOf:
          - "$ref": "#/components/schemas/_types.Indices"
        match_field:
          allOf:
          - "$ref": "#/components/schemas/_types.Field"
        query:
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.QueryContainer"
        name:
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        elasticsearch_version:
          type: string
      required:
      - enrich_fields
      - indices
      - match_field
    enrich.stats.CoordinatorStats:
      type: object
      properties:
        executed_searches_total:
          type: number
        node_id:
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        queue_size:
          type: number
        remote_requests_current:
          type: number
        remote_requests_total:
          type: number
      required:
      - executed_searches_total
      - node_id
      - queue_size
      - remote_requests_current
      - remote_requests_total
    enrich.stats.ExecutingPolicy:
      type: object
      properties:
        name:
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        task:
          allOf:
          - "$ref": "#/components/schemas/tasks._types.TaskInfo"
      required:
      - name
      - task
    enrich.stats.CacheStats:
      type: object
      properties:
        node_id:
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        count:
          type: number
        hits:
          type: number
        hits_time_in_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
        misses:
          type: number
        misses_time_in_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
        evictions:
          type: number
        size_in_bytes:
          type: number
      required:
      - node_id
      - count
      - hits
      - hits_time_in_millis
      - misses
      - misses_time_in_millis
      - evictions
      - size_in_bytes
    eql._types.EqlSearchResponseBase:
      type: object
      properties:
        id:
          description: Identifier for the search.
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        is_partial:
          description: If true, the response does not contain complete search results.
          type: boolean
        is_running:
          description: If true, the search request is still executing.
          type: boolean
        took:
          description: Milliseconds it took Elasticsearch to execute the request.
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
        timed_out:
          description: If true, the request timed out before completion.
          type: boolean
        hits:
          description: Contains matching events and sequences. Also contains related
            metadata.
          allOf:
          - "$ref": "#/components/schemas/eql._types.EqlHits"
        shard_failures:
          description: Contains information about shard failures (if any), in case
            allow_partial_search_results=true
          type: array
          items:
            "$ref": "#/components/schemas/_types.ShardFailure"
      required:
      - hits
    eql._types.EqlHits:
      type: object
      properties:
        total:
          description: Metadata about the number of matching events or sequences.
          allOf:
          - "$ref": "#/components/schemas/_global.search._types.TotalHits"
        events:
          description: Contains events matching the query. Each object represents
            a matching event.
          type: array
          items:
            "$ref": "#/components/schemas/eql._types.HitsEvent"
        sequences:
          description: Contains event sequences matching the query. Each object represents
            a matching sequence. This parameter is only returned for EQL queries containing
            a sequence.
          type: array
          items:
            "$ref": "#/components/schemas/eql._types.HitsSequence"
    eql._types.HitsEvent:
      type: object
      properties:
        _index:
          description: Name of the index containing the event.
          allOf:
          - "$ref": "#/components/schemas/_types.IndexName"
        _id:
          description: Unique identifier for the event. This ID is only unique within
            the index.
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        _source:
          description: Original JSON body passed for the event at index time.
          type: object
        missing:
          description: Set to `true` for events in a timespan-constrained sequence
            that do not meet a given condition.
          type: boolean
        fields:
          type: object
          additionalProperties:
            type: array
            items:
              type: object
      required:
      - _index
      - _id
      - _source
    eql._types.HitsSequence:
      type: object
      properties:
        events:
          description: Contains events matching the query. Each object represents
            a matching event.
          type: array
          items:
            "$ref": "#/components/schemas/eql._types.HitsEvent"
        join_keys:
          description: Shared field values used to constrain matches in the sequence.
            These are defined using the by keyword in the EQL query syntax.
          type: array
          items:
            type: object
      required:
      - events
    eql.search.ResultPosition:
      type: string
      enum:
      - tail
      - head
    esql._types.EsqlFormat:
      type: string
      enum:
      - csv
      - json
      - tsv
      - txt
      - yaml
      - cbor
      - smile
      - arrow
    esql._types.TableValuesContainer:
      type: object
      properties:
        integer:
          type: array
          items:
            "$ref": "#/components/schemas/esql._types.TableValuesIntegerValue"
        keyword:
          type: array
          items:
            "$ref": "#/components/schemas/esql._types.TableValuesKeywordValue"
        long:
          type: array
          items:
            "$ref": "#/components/schemas/esql._types.TableValuesLongValue"
        double:
          type: array
          items:
            "$ref": "#/components/schemas/esql._types.TableValuesLongDouble"
      minProperties: 1
      maxProperties: 1
    esql._types.TableValuesIntegerValue:
      oneOf:
      - type: number
      - type: array
        items:
          type: number
    esql._types.TableValuesKeywordValue:
      oneOf:
      - type: string
      - type: array
        items:
          type: string
    esql._types.TableValuesLongValue:
      oneOf:
      - type: number
      - type: array
        items:
          type: number
    esql._types.TableValuesLongDouble:
      oneOf:
      - type: number
      - type: array
        items:
          type: number
    esql._types.AsyncEsqlResult:
      allOf:
      - "$ref": "#/components/schemas/esql._types.EsqlResult"
      - type: object
        properties:
          id:
            description: |-
              The ID of the async query, to be used in subsequent requests to check the status or retrieve results.

              Also available in the `X-Elasticsearch-Async-Id` HTTP header.
            type: string
          is_running:
            description: |-
              Indicates whether the async query is still running or has completed.

              Also available in the `X-Elasticsearch-Async-Is-Running` HTTP header.
            type: boolean
        required:
        - is_running
    esql._types.EsqlResult:
      type: object
      properties:
        took:
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
        is_partial:
          type: boolean
        all_columns:
          type: array
          items:
            "$ref": "#/components/schemas/esql._types.EsqlColumnInfo"
        columns:
          type: array
          items:
            "$ref": "#/components/schemas/esql._types.EsqlColumnInfo"
        values:
          type: array
          items:
            type: array
            items:
              "$ref": "#/components/schemas/_types.FieldValue"
        _clusters:
          description: |-
            Cross-cluster search information. Present if `include_ccs_metadata` was `true` in the request
            and a cross-cluster search was performed.
          allOf:
          - "$ref": "#/components/schemas/esql._types.EsqlClusterInfo"
        profile:
          description: |-
            Profiling information. Present if `profile` was `true` in the request.
            The contents of this field are currently unstable.
          type: object
      required:
      - columns
      - values
    esql._types.EsqlColumnInfo:
      type: object
      properties:
        name:
          type: string
        type:
          type: string
      required:
      - name
      - type
    esql._types.EsqlClusterInfo:
      type: object
      properties:
        total:
          type: number
        successful:
          type: number
        running:
          type: number
        skipped:
          type: number
        partial:
          type: number
        failed:
          type: number
        details:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/esql._types.EsqlClusterDetails"
      required:
      - total
      - successful
      - running
      - skipped
      - partial
      - failed
      - details
    esql._types.EsqlClusterDetails:
      type: object
      properties:
        status:
          allOf:
          - "$ref": "#/components/schemas/esql._types.EsqlClusterStatus"
        indices:
          type: string
        took:
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
        _shards:
          allOf:
          - "$ref": "#/components/schemas/esql._types.EsqlShardInfo"
        failures:
          type: array
          items:
            "$ref": "#/components/schemas/esql._types.EsqlShardFailure"
      required:
      - status
      - indices
    esql._types.EsqlClusterStatus:
      type: string
      enum:
      - running
      - successful
      - partial
      - skipped
      - failed
    esql._types.EsqlShardInfo:
      type: object
      properties:
        total:
          type: number
        successful:
          type: number
        skipped:
          type: number
        failed:
          type: number
      required:
      - total
    esql._types.EsqlShardFailure:
      type: object
      properties:
        shard:
          type: number
        index:
          oneOf:
          - "$ref": "#/components/schemas/_types.IndexName"
          - nullable: true
            type: string
        node:
          allOf:
          - "$ref": "#/components/schemas/_types.NodeId"
        reason:
          allOf:
          - "$ref": "#/components/schemas/_types.ErrorCause"
      required:
      - shard
      - index
      - reason
    esql.list_queries.Body:
      type: object
      properties:
        id:
          type: number
        node:
          allOf:
          - "$ref": "#/components/schemas/_types.NodeId"
        start_time_millis:
          type: number
        running_time_nanos:
          type: number
        query:
          type: string
      required:
      - id
      - node
      - start_time_millis
      - running_time_nanos
      - query
    esql._types.ESQLParams:
      oneOf:
      - type: array
        items:
          "$ref": "#/components/schemas/esql._types.SingleOrMultiValue"
      - type: array
        items:
          "$ref": "#/components/schemas/esql._types.NamedValue"
    esql._types.SingleOrMultiValue:
      oneOf:
      - "$ref": "#/components/schemas/_types.FieldValue"
      - type: array
        items:
          "$ref": "#/components/schemas/_types.FieldValue"
    esql._types.NamedValue:
      type: object
      additionalProperties:
        "$ref": "#/components/schemas/esql._types.SingleOrMultiValue"
      minProperties: 1
      maxProperties: 1
    _types.InlineGet:
      type: object
      properties:
        fields:
          type: object
          additionalProperties:
            type: object
        found:
          type: boolean
        _seq_no:
          allOf:
          - "$ref": "#/components/schemas/_types.SequenceNumber"
        _primary_term:
          type: number
        _routing:
          allOf:
          - "$ref": "#/components/schemas/_types.Routing"
        _source:
          type: object
      required:
      - found
    features._types.Feature:
      type: object
      properties:
        name:
          type: string
        description:
          type: string
      required:
      - name
      - description
    _global.field_caps.FieldCapability:
      type: object
      properties:
        aggregatable:
          description: Whether this field can be aggregated on all indices.
          type: boolean
        indices:
          description: The list of indices where this field has the same type family,
            or null if all indices have the same type family for the field.
          allOf:
          - "$ref": "#/components/schemas/_types.Indices"
        meta:
          description: Merged metadata across all indices as a map of string keys
            to arrays of values. A value length of 1 indicates that all indices had
            the same value for this key, while a length of 2 or more indicates that
            not all indices had the same value for this key.
          allOf:
          - "$ref": "#/components/schemas/_types.Metadata"
        non_aggregatable_indices:
          description: The list of indices where this field is not aggregatable, or
            null if all indices have the same definition for the field.
          allOf:
          - "$ref": "#/components/schemas/_types.Indices"
        non_searchable_indices:
          description: The list of indices where this field is not searchable, or
            null if all indices have the same definition for the field.
          allOf:
          - "$ref": "#/components/schemas/_types.Indices"
        searchable:
          description: Whether this field is indexed for search on all indices.
          type: boolean
        type:
          type: string
        metadata_field:
          description: Whether this field is registered as a metadata field.
          type: boolean
        time_series_dimension:
          description: Whether this field is used as a time series dimension.
          x-state: Technical preview; Added in 8.0.0
          type: boolean
        time_series_metric:
          description: |-
            Contains metric type if this fields is used as a time series
            metrics, absent if the field is not used as metric.
          x-state: Technical preview; Added in 8.0.0
          allOf:
          - "$ref": "#/components/schemas/_types.mapping.TimeSeriesMetricType"
        non_dimension_indices:
          description: |-
            If this list is present in response then some indices have the
            field marked as a dimension and other indices, the ones in this list, do not.
          x-state: Technical preview; Added in 8.0.0
          type: array
          items:
            "$ref": "#/components/schemas/_types.IndexName"
        metric_conflicts_indices:
          description: |-
            The list of indices where this field is present if these indices
            don’t have the same `time_series_metric` value for this field.
          x-state: Technical preview; Added in 8.0.0
          type: array
          items:
            "$ref": "#/components/schemas/_types.IndexName"
      required:
      - aggregatable
      - searchable
      - type
    _types.IndexAlias:
      type: string
    fleet._types.Checkpoint:
      type: number
    _global.msearch.RequestItem:
      oneOf:
      - "$ref": "#/components/schemas/_global.msearch.MultisearchHeader"
      - "$ref": "#/components/schemas/_global.search._types.SearchRequestBody"
    _global.msearch.MultisearchHeader:
      description: Contains parameters used to limit or change the subsequent search
        body request.
      type: object
      properties:
        allow_no_indices:
          type: boolean
        expand_wildcards:
          description: |2+


            Supported values include:
              - `all`: Match any data stream or index, including hidden ones.
              - `open`: Match open, non-hidden indices. Also matches any non-hidden data stream.
              - `closed`: Match closed, non-hidden indices. Also matches any non-hidden data stream. Data streams cannot be closed.
              - `hidden`: Match hidden data streams and hidden indices. Must be combined with `open`, `closed`, or `both`.
              - `none`: Wildcard expressions are not accepted.

          allOf:
          - "$ref": "#/components/schemas/_types.ExpandWildcards"
        ignore_unavailable:
          type: boolean
        index:
          allOf:
          - "$ref": "#/components/schemas/_types.Indices"
        preference:
          type: string
        project_routing:
          allOf:
          - "$ref": "#/components/schemas/_types.ProjectRouting"
        request_cache:
          type: boolean
        routing:
          allOf:
          - "$ref": "#/components/schemas/_types.Routing"
        search_type:
          description: |2+


            Supported values include:
              - `query_then_fetch`: Documents are scored using local term and document frequencies for the shard. This is usually faster but less accurate.
              - `dfs_query_then_fetch`: Documents are scored using global term and document frequencies across all shards. This is usually slower but more accurate.

          allOf:
          - "$ref": "#/components/schemas/_types.SearchType"
        ccs_minimize_roundtrips:
          type: boolean
        allow_partial_search_results:
          type: boolean
        ignore_throttled:
          type: boolean
    _types.ProjectRouting:
      type: string
    _global.msearch.ResponseItem:
      oneOf:
      - "$ref": "#/components/schemas/_global.msearch.MultiSearchItem"
      - "$ref": "#/components/schemas/_types.ErrorResponseBase"
    _global.msearch.MultiSearchItem:
      allOf:
      - "$ref": "#/components/schemas/_global.search.ResponseBody"
      - type: object
        properties:
          status:
            type: number
    _global.search.ResponseBody:
      type: object
      properties:
        took:
          description: |-
            The number of milliseconds it took Elasticsearch to run the request.
            This value is calculated by measuring the time elapsed between receipt of a request on the coordinating node and the time at which the coordinating node is ready to send the response.
            It includes:

            * Communication time between the coordinating node and data nodes
            * Time the request spends in the search thread pool, queued for execution
            * Actual run time

            It does not include:

            * Time needed to send the request to Elasticsearch
            * Time needed to serialize the JSON response
            * Time needed to send the response to a client
          type: number
        timed_out:
          description: If `true`, the request timed out before completion; returned
            results may be partial or empty.
          type: boolean
        _shards:
          description: A count of shards used for the request.
          allOf:
          - "$ref": "#/components/schemas/_types.ShardStatistics"
        hits:
          description: The returned documents and metadata.
          allOf:
          - "$ref": "#/components/schemas/_global.search._types.HitsMetadata"
        aggregations:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/_types.aggregations.Aggregate"
        _clusters:
          allOf:
          - "$ref": "#/components/schemas/_types.ClusterStatistics"
        fields:
          type: object
          additionalProperties:
            type: object
        max_score:
          type: number
        num_reduce_phases:
          type: number
        profile:
          allOf:
          - "$ref": "#/components/schemas/_global.search._types.Profile"
        pit_id:
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        _scroll_id:
          externalDocs:
            url: https://www.elastic.co/docs/reference/elasticsearch/rest-apis/paginate-search-results#scroll-search-results
          description: |-
            The identifier for the search and its search context.
            You can use this scroll ID with the scroll API to retrieve the next batch of search results for the request.
            This property is returned only if the `scroll` query parameter is specified in the request.
          allOf:
          - "$ref": "#/components/schemas/_types.ScrollId"
        suggest:
          type: object
          additionalProperties:
            type: array
            items:
              "$ref": "#/components/schemas/_global.search._types.Suggest"
        terminated_early:
          type: boolean
      required:
      - took
      - timed_out
      - _shards
      - hits
    _types.ErrorResponseBase:
      description: The response returned by Elasticsearch when request execution did
        not succeed.
      type: object
      properties:
        error:
          allOf:
          - "$ref": "#/components/schemas/_types.ErrorCause"
        status:
          type: number
      required:
      - error
      - status
    _global.get.GetResult:
      type: object
      properties:
        _index:
          description: The name of the index the document belongs to.
          allOf:
          - "$ref": "#/components/schemas/_types.IndexName"
        fields:
          description: If the `stored_fields` parameter is set to `true` and `found`
            is `true`, it contains the document fields stored in the index.
          type: object
          additionalProperties:
            type: object
        _ignored:
          type: array
          items:
            type: string
        found:
          description: Indicates whether the document exists.
          type: boolean
        _id:
          description: The unique identifier for the document.
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        _primary_term:
          description: The primary term assigned to the document for the indexing
            operation.
          type: number
        _routing:
          description: The explicit routing, if set.
          type: string
        _seq_no:
          description: |-
            The sequence number assigned to the document for the indexing operation.
            Sequence numbers are used to ensure an older version of a document doesn't overwrite a newer version.
          allOf:
          - "$ref": "#/components/schemas/_types.SequenceNumber"
        _source:
          description: |-
            If `found` is `true`, it contains the document data formatted in JSON.
            If the `_source` parameter is set to `false` or the `stored_fields` parameter is set to `true`, it is excluded.
          type: object
        _version:
          description: The document version, which is ncremented each time the document
            is updated.
          allOf:
          - "$ref": "#/components/schemas/_types.VersionNumber"
      required:
      - _index
      - found
      - _id
    _types.StoredScript:
      type: object
      properties:
        lang:
          description: |+
            The language the script is written in.
            For search templates, use `mustache`.

            Supported values include:
              - `painless`: Painless scripting language, purpose-built for Elasticsearch.
              - `expression`: Lucene’s expressions language, compiles a JavaScript expression to bytecode.
              - `mustache`: Mustache templated, used for templates.
              - `java`: Expert Java API

          allOf:
          - "$ref": "#/components/schemas/_types.ScriptLanguage"
        options:
          type: object
          additionalProperties:
            type: string
        source:
          description: |-
            The script source.
            For search templates, an object containing the search template.
          allOf:
          - "$ref": "#/components/schemas/_types.ScriptSource"
      required:
      - lang
      - source
    _global.get_script_context.Context:
      type: object
      properties:
        methods:
          type: array
          items:
            "$ref": "#/components/schemas/_global.get_script_context.ContextMethod"
        name:
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
      required:
      - methods
      - name
    _global.get_script_context.ContextMethod:
      type: object
      properties:
        name:
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        return_type:
          type: string
        params:
          type: array
          items:
            "$ref": "#/components/schemas/_global.get_script_context.ContextMethodParam"
      required:
      - name
      - return_type
      - params
    _global.get_script_context.ContextMethodParam:
      type: object
      properties:
        name:
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        type:
          type: string
      required:
      - name
      - type
    _global.get_script_languages.LanguageContext:
      type: object
      properties:
        contexts:
          type: array
          items:
            type: string
        language:
          description: |2+


            Supported values include:
              - `painless`: Painless scripting language, purpose-built for Elasticsearch.
              - `expression`: Lucene’s expressions language, compiles a JavaScript expression to bytecode.
              - `mustache`: Mustache templated, used for templates.
              - `java`: Expert Java API

          allOf:
          - "$ref": "#/components/schemas/_types.ScriptLanguage"
      required:
      - contexts
      - language
    graph._types.Hop:
      type: object
      properties:
        connections:
          description: Specifies one or more fields from which you want to extract
            terms that are associated with the specified vertices.
          allOf:
          - "$ref": "#/components/schemas/graph._types.Hop"
        query:
          description: An optional guiding query that constrains the Graph API as
            it explores connected terms.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.QueryContainer"
        vertices:
          description: Contains the fields you are interested in.
          type: array
          items:
            "$ref": "#/components/schemas/graph._types.VertexDefinition"
      required:
      - vertices
    graph._types.VertexDefinition:
      type: object
      properties:
        exclude:
          description: Prevents the specified terms from being included in the results.
          type: array
          items:
            type: string
        field:
          description: Identifies a field in the documents of interest.
          allOf:
          - "$ref": "#/components/schemas/_types.Field"
        include:
          description: Identifies the terms of interest that form the starting points
            from which you want to spider out.
          type: array
          items:
            "$ref": "#/components/schemas/graph._types.VertexInclude"
        min_doc_count:
          description: |-
            Specifies how many documents must contain a pair of terms before it is considered to be a useful connection.
            This setting acts as a certainty threshold.
          default: 3
          type: number
        shard_min_doc_count:
          description: Controls how many documents on a particular shard have to contain
            a pair of terms before the connection is returned for global consideration.
          default: 2
          type: number
        size:
          description: Specifies the maximum number of vertex terms returned for each
            field.
          default: 5
          type: number
      required:
      - field
    graph._types.VertexInclude:
      type: object
      properties:
        boost:
          type: number
        term:
          type: string
      required:
      - term
    graph._types.ExploreControls:
      type: object
      properties:
        sample_diversity:
          description: |-
            To avoid the top-matching documents sample being dominated by a single source of results, it is sometimes necessary to request diversity in the sample.
            You can do this by selecting a single-value field and setting a maximum number of documents per value for that field.
          allOf:
          - "$ref": "#/components/schemas/graph._types.SampleDiversity"
        sample_size:
          description: |-
            Each hop considers a sample of the best-matching documents on each shard.
            Using samples improves the speed of execution and keeps exploration focused on meaningfully-connected terms.
            Very small values (less than 50) might not provide sufficient weight-of-evidence to identify significant connections between terms.
            Very large sample sizes can dilute the quality of the results and increase execution times.
          default: 100
          type: number
        timeout:
          description: |-
            The length of time in milliseconds after which exploration will be halted and the results gathered so far are returned.
            This timeout is honored on a best-effort basis.
            Execution might overrun this timeout if, for example, a long pause is encountered while FieldData is loaded for a field.
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        use_significance:
          description: Filters associated terms so only those that are significantly
            associated with your query are included.
          type: boolean
      required:
      - use_significance
    graph._types.SampleDiversity:
      type: object
      properties:
        field:
          allOf:
          - "$ref": "#/components/schemas/_types.Field"
        max_docs_per_value:
          type: number
      required:
      - field
      - max_docs_per_value
    graph._types.Connection:
      type: object
      properties:
        doc_count:
          type: number
        source:
          type: number
        target:
          type: number
        weight:
          type: number
      required:
      - doc_count
      - source
      - target
      - weight
    graph._types.Vertex:
      type: object
      properties:
        depth:
          type: number
        field:
          allOf:
          - "$ref": "#/components/schemas/_types.Field"
        term:
          type: string
        weight:
          type: number
      required:
      - depth
      - field
      - term
      - weight
    _global.health_report.Indicators:
      type: object
      properties:
        master_is_stable:
          allOf:
          - "$ref": "#/components/schemas/_global.health_report.MasterIsStableIndicator"
        shards_availability:
          allOf:
          - "$ref": "#/components/schemas/_global.health_report.ShardsAvailabilityIndicator"
        disk:
          allOf:
          - "$ref": "#/components/schemas/_global.health_report.DiskIndicator"
        repository_integrity:
          allOf:
          - "$ref": "#/components/schemas/_global.health_report.RepositoryIntegrityIndicator"
        data_stream_lifecycle:
          allOf:
          - "$ref": "#/components/schemas/_global.health_report.DataStreamLifecycleIndicator"
        ilm:
          allOf:
          - "$ref": "#/components/schemas/_global.health_report.IlmIndicator"
        slm:
          allOf:
          - "$ref": "#/components/schemas/_global.health_report.SlmIndicator"
        shards_capacity:
          allOf:
          - "$ref": "#/components/schemas/_global.health_report.ShardsCapacityIndicator"
        file_settings:
          allOf:
          - "$ref": "#/components/schemas/_global.health_report.FileSettingsIndicator"
    _global.health_report.MasterIsStableIndicator:
      description: MASTER_IS_STABLE
      allOf:
      - "$ref": "#/components/schemas/_global.health_report.BaseIndicator"
      - type: object
        properties:
          details:
            allOf:
            - "$ref": "#/components/schemas/_global.health_report.MasterIsStableIndicatorDetails"
    _global.health_report.MasterIsStableIndicatorDetails:
      type: object
      properties:
        current_master:
          allOf:
          - "$ref": "#/components/schemas/_global.health_report.IndicatorNode"
        recent_masters:
          type: array
          items:
            "$ref": "#/components/schemas/_global.health_report.IndicatorNode"
        exception_fetching_history:
          allOf:
          - "$ref": "#/components/schemas/_global.health_report.MasterIsStableIndicatorExceptionFetchingHistory"
        cluster_formation:
          type: array
          items:
            "$ref": "#/components/schemas/_global.health_report.MasterIsStableIndicatorClusterFormationNode"
      required:
      - current_master
      - recent_masters
    _global.health_report.IndicatorNode:
      type: object
      properties:
        name:
          oneOf:
          - type: string
          - nullable: true
            type: string
        node_id:
          oneOf:
          - type: string
          - nullable: true
            type: string
      required:
      - name
      - node_id
    _global.health_report.MasterIsStableIndicatorExceptionFetchingHistory:
      type: object
      properties:
        message:
          type: string
        stack_trace:
          type: string
      required:
      - message
      - stack_trace
    _global.health_report.MasterIsStableIndicatorClusterFormationNode:
      type: object
      properties:
        name:
          type: string
        node_id:
          type: string
        cluster_formation_message:
          type: string
      required:
      - node_id
      - cluster_formation_message
    _global.health_report.BaseIndicator:
      type: object
      properties:
        status:
          allOf:
          - "$ref": "#/components/schemas/_global.health_report.IndicatorHealthStatus"
        symptom:
          type: string
        impacts:
          type: array
          items:
            "$ref": "#/components/schemas/_global.health_report.Impact"
        diagnosis:
          type: array
          items:
            "$ref": "#/components/schemas/_global.health_report.Diagnosis"
      required:
      - status
      - symptom
    _global.health_report.IndicatorHealthStatus:
      type: string
      enum:
      - green
      - yellow
      - red
      - unknown
      - unavailable
    _global.health_report.Impact:
      type: object
      properties:
        description:
          type: string
        id:
          type: string
        impact_areas:
          type: array
          items:
            "$ref": "#/components/schemas/_global.health_report.ImpactArea"
        severity:
          type: number
      required:
      - description
      - id
      - impact_areas
      - severity
    _global.health_report.ImpactArea:
      type: string
      enum:
      - search
      - ingest
      - backup
      - deployment_management
    _global.health_report.Diagnosis:
      type: object
      properties:
        id:
          type: string
        action:
          type: string
        affected_resources:
          allOf:
          - "$ref": "#/components/schemas/_global.health_report.DiagnosisAffectedResources"
        cause:
          type: string
        help_url:
          type: string
      required:
      - id
      - action
      - affected_resources
      - cause
      - help_url
    _global.health_report.DiagnosisAffectedResources:
      type: object
      properties:
        indices:
          allOf:
          - "$ref": "#/components/schemas/_types.Indices"
        nodes:
          type: array
          items:
            "$ref": "#/components/schemas/_global.health_report.IndicatorNode"
        slm_policies:
          type: array
          items:
            type: string
        feature_states:
          type: array
          items:
            type: string
        snapshot_repositories:
          type: array
          items:
            type: string
    _global.health_report.ShardsAvailabilityIndicator:
      description: SHARDS_AVAILABILITY
      allOf:
      - "$ref": "#/components/schemas/_global.health_report.BaseIndicator"
      - type: object
        properties:
          details:
            allOf:
            - "$ref": "#/components/schemas/_global.health_report.ShardsAvailabilityIndicatorDetails"
    _global.health_report.ShardsAvailabilityIndicatorDetails:
      type: object
      properties:
        creating_primaries:
          type: number
        creating_replicas:
          type: number
        initializing_primaries:
          type: number
        initializing_replicas:
          type: number
        restarting_primaries:
          type: number
        restarting_replicas:
          type: number
        started_primaries:
          type: number
        started_replicas:
          type: number
        unassigned_primaries:
          type: number
        unassigned_replicas:
          type: number
      required:
      - creating_primaries
      - creating_replicas
      - initializing_primaries
      - initializing_replicas
      - restarting_primaries
      - restarting_replicas
      - started_primaries
      - started_replicas
      - unassigned_primaries
      - unassigned_replicas
    _global.health_report.DiskIndicator:
      description: DISK
      allOf:
      - "$ref": "#/components/schemas/_global.health_report.BaseIndicator"
      - type: object
        properties:
          details:
            allOf:
            - "$ref": "#/components/schemas/_global.health_report.DiskIndicatorDetails"
    _global.health_report.DiskIndicatorDetails:
      type: object
      properties:
        indices_with_readonly_block:
          type: number
        nodes_with_enough_disk_space:
          type: number
        nodes_over_high_watermark:
          type: number
        nodes_over_flood_stage_watermark:
          type: number
        nodes_with_unknown_disk_status:
          type: number
      required:
      - indices_with_readonly_block
      - nodes_with_enough_disk_space
      - nodes_over_high_watermark
      - nodes_over_flood_stage_watermark
      - nodes_with_unknown_disk_status
    _global.health_report.RepositoryIntegrityIndicator:
      description: REPOSITORY_INTEGRITY
      allOf:
      - "$ref": "#/components/schemas/_global.health_report.BaseIndicator"
      - type: object
        properties:
          details:
            allOf:
            - "$ref": "#/components/schemas/_global.health_report.RepositoryIntegrityIndicatorDetails"
    _global.health_report.RepositoryIntegrityIndicatorDetails:
      type: object
      properties:
        total_repositories:
          type: number
        corrupted_repositories:
          type: number
        corrupted:
          type: array
          items:
            type: string
    _global.health_report.DataStreamLifecycleIndicator:
      description: DATA_STREAM_LIFECYCLE
      allOf:
      - "$ref": "#/components/schemas/_global.health_report.BaseIndicator"
      - type: object
        properties:
          details:
            allOf:
            - "$ref": "#/components/schemas/_global.health_report.DataStreamLifecycleDetails"
    _global.health_report.DataStreamLifecycleDetails:
      type: object
      properties:
        stagnating_backing_indices_count:
          type: number
        total_backing_indices_in_error:
          type: number
        stagnating_backing_indices:
          type: array
          items:
            "$ref": "#/components/schemas/_global.health_report.StagnatingBackingIndices"
      required:
      - stagnating_backing_indices_count
      - total_backing_indices_in_error
    _global.health_report.StagnatingBackingIndices:
      type: object
      properties:
        index_name:
          allOf:
          - "$ref": "#/components/schemas/_types.IndexName"
        first_occurrence_timestamp:
          type: number
        retry_count:
          type: number
      required:
      - index_name
      - first_occurrence_timestamp
      - retry_count
    _global.health_report.IlmIndicator:
      description: ILM
      allOf:
      - "$ref": "#/components/schemas/_global.health_report.BaseIndicator"
      - type: object
        properties:
          details:
            allOf:
            - "$ref": "#/components/schemas/_global.health_report.IlmIndicatorDetails"
    _global.health_report.IlmIndicatorDetails:
      type: object
      properties:
        ilm_status:
          allOf:
          - "$ref": "#/components/schemas/_types.LifecycleOperationMode"
        policies:
          type: number
        stagnating_indices:
          type: number
      required:
      - ilm_status
      - policies
      - stagnating_indices
    _types.LifecycleOperationMode:
      type: string
      enum:
      - RUNNING
      - STOPPING
      - STOPPED
    _global.health_report.SlmIndicator:
      description: SLM
      allOf:
      - "$ref": "#/components/schemas/_global.health_report.BaseIndicator"
      - type: object
        properties:
          details:
            allOf:
            - "$ref": "#/components/schemas/_global.health_report.SlmIndicatorDetails"
    _global.health_report.SlmIndicatorDetails:
      type: object
      properties:
        slm_status:
          allOf:
          - "$ref": "#/components/schemas/_types.LifecycleOperationMode"
        policies:
          type: number
        unhealthy_policies:
          allOf:
          - "$ref": "#/components/schemas/_global.health_report.SlmIndicatorUnhealthyPolicies"
      required:
      - slm_status
      - policies
    _global.health_report.SlmIndicatorUnhealthyPolicies:
      type: object
      properties:
        count:
          type: number
        invocations_since_last_success:
          type: object
          additionalProperties:
            type: number
      required:
      - count
    _global.health_report.ShardsCapacityIndicator:
      description: SHARDS_CAPACITY
      allOf:
      - "$ref": "#/components/schemas/_global.health_report.BaseIndicator"
      - type: object
        properties:
          details:
            allOf:
            - "$ref": "#/components/schemas/_global.health_report.ShardsCapacityIndicatorDetails"
    _global.health_report.ShardsCapacityIndicatorDetails:
      type: object
      properties:
        data:
          allOf:
          - "$ref": "#/components/schemas/_global.health_report.ShardsCapacityIndicatorTierDetail"
        frozen:
          allOf:
          - "$ref": "#/components/schemas/_global.health_report.ShardsCapacityIndicatorTierDetail"
      required:
      - data
      - frozen
    _global.health_report.ShardsCapacityIndicatorTierDetail:
      type: object
      properties:
        max_shards_in_cluster:
          type: number
        current_used_shards:
          type: number
      required:
      - max_shards_in_cluster
    _global.health_report.FileSettingsIndicator:
      description: FILE_SETTINGS
      allOf:
      - "$ref": "#/components/schemas/_global.health_report.BaseIndicator"
      - type: object
        properties:
          details:
            allOf:
            - "$ref": "#/components/schemas/_global.health_report.FileSettingsIndicatorDetails"
    _global.health_report.FileSettingsIndicatorDetails:
      type: object
      properties:
        failure_streak:
          type: number
        most_recent_failure:
          type: string
      required:
      - failure_streak
      - most_recent_failure
    ilm.explain_lifecycle.LifecycleExplain:
      discriminator:
        propertyName: managed
        mapping:
          'false': "#/components/schemas/ilm.explain_lifecycle.LifecycleExplainUnmanaged"
          'true': "#/components/schemas/ilm.explain_lifecycle.LifecycleExplainManaged"
      oneOf:
      - "$ref": "#/components/schemas/ilm.explain_lifecycle.LifecycleExplainManaged"
      - "$ref": "#/components/schemas/ilm.explain_lifecycle.LifecycleExplainUnmanaged"
    ilm.explain_lifecycle.LifecycleExplainManaged:
      type: object
      properties:
        action:
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        action_time:
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
        action_time_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
        age:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        age_in_millis:
          x-state: Generally available; Added in 9.2.0
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
        failed_step:
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        failed_step_retry_count:
          type: number
        index:
          allOf:
          - "$ref": "#/components/schemas/_types.IndexName"
        index_creation_date:
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
        index_creation_date_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
        is_auto_retryable_error:
          type: boolean
        lifecycle_date:
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
        lifecycle_date_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
        managed:
          type: string
          enum:
          - 'true'
        phase:
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        phase_time:
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
        phase_time_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
        policy:
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        previous_step_info:
          type: object
          additionalProperties:
            type: object
        repository_name:
          type: string
        snapshot_name:
          type: string
        shrink_index_name:
          type: string
        step:
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        step_info:
          type: object
          additionalProperties:
            type: object
        step_time:
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
        step_time_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
        phase_execution:
          allOf:
          - "$ref": "#/components/schemas/ilm.explain_lifecycle.LifecycleExplainPhaseExecution"
        time_since_index_creation:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        skip:
          type: boolean
      required:
      - index
      - managed
      - skip
    ilm.explain_lifecycle.LifecycleExplainPhaseExecution:
      type: object
      properties:
        phase_definition:
          allOf:
          - "$ref": "#/components/schemas/ilm._types.Phase"
        policy:
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        version:
          allOf:
          - "$ref": "#/components/schemas/_types.VersionNumber"
        modified_date_in_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
      required:
      - policy
      - version
      - modified_date_in_millis
    ilm._types.Phase:
      type: object
      properties:
        actions:
          allOf:
          - "$ref": "#/components/schemas/ilm._types.Actions"
        min_age:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
    ilm._types.Actions:
      type: object
      properties:
        allocate:
          description: 'Phases allowed: warm, cold.'
          allOf:
          - "$ref": "#/components/schemas/ilm._types.AllocateAction"
        delete:
          description: 'Phases allowed: delete.'
          allOf:
          - "$ref": "#/components/schemas/ilm._types.DeleteAction"
        downsample:
          description: 'Phases allowed: hot, warm, cold.'
          allOf:
          - "$ref": "#/components/schemas/ilm._types.DownsampleAction"
        freeze:
          deprecated: true
          description: The freeze action is a noop in 8.x
          allOf:
          - "$ref": "#/components/schemas/_types.EmptyObject"
        forcemerge:
          description: 'Phases allowed: hot, warm.'
          allOf:
          - "$ref": "#/components/schemas/ilm._types.ForceMergeAction"
        migrate:
          description: 'Phases allowed: warm, cold.'
          allOf:
          - "$ref": "#/components/schemas/ilm._types.MigrateAction"
        readonly:
          description: 'Phases allowed: hot, warm, cold.'
          allOf:
          - "$ref": "#/components/schemas/_types.EmptyObject"
        rollover:
          description: 'Phases allowed: hot.'
          allOf:
          - "$ref": "#/components/schemas/ilm._types.RolloverAction"
        set_priority:
          description: 'Phases allowed: hot, warm, cold.'
          allOf:
          - "$ref": "#/components/schemas/ilm._types.SetPriorityAction"
        searchable_snapshot:
          description: 'Phases allowed: hot, cold, frozen.'
          allOf:
          - "$ref": "#/components/schemas/ilm._types.SearchableSnapshotAction"
        shrink:
          description: 'Phases allowed: hot, warm.'
          allOf:
          - "$ref": "#/components/schemas/ilm._types.ShrinkAction"
        unfollow:
          description: 'Phases allowed: hot, warm, cold, frozen.'
          allOf:
          - "$ref": "#/components/schemas/_types.EmptyObject"
        wait_for_snapshot:
          description: 'Phases allowed: delete.'
          allOf:
          - "$ref": "#/components/schemas/ilm._types.WaitForSnapshotAction"
    ilm._types.AllocateAction:
      type: object
      properties:
        number_of_replicas:
          type: number
        total_shards_per_node:
          type: number
        include:
          type: object
          additionalProperties:
            type: string
        exclude:
          type: object
          additionalProperties:
            type: string
        require:
          type: object
          additionalProperties:
            type: string
    ilm._types.DeleteAction:
      type: object
      properties:
        delete_searchable_snapshot:
          type: boolean
    ilm._types.DownsampleAction:
      type: object
      properties:
        fixed_interval:
          allOf:
          - "$ref": "#/components/schemas/_types.DurationLarge"
        wait_timeout:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
      required:
      - fixed_interval
    ilm._types.ForceMergeAction:
      type: object
      properties:
        max_num_segments:
          type: number
        index_codec:
          type: string
      required:
      - max_num_segments
    ilm._types.MigrateAction:
      type: object
      properties:
        enabled:
          type: boolean
    ilm._types.RolloverAction:
      type: object
      properties:
        max_size:
          deprecated: true
          description: The `max_size` condition has been deprecated in 9.3.0 and `max_primary_shard_size`
            should be used instead
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        max_primary_shard_size:
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        max_age:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        max_docs:
          type: number
        max_primary_shard_docs:
          type: number
        min_size:
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        min_primary_shard_size:
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        min_age:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        min_docs:
          type: number
        min_primary_shard_docs:
          type: number
    ilm._types.SetPriorityAction:
      type: object
      properties:
        priority:
          type: number
    ilm._types.SearchableSnapshotAction:
      type: object
      properties:
        snapshot_repository:
          type: string
        force_merge_index:
          type: boolean
      required:
      - snapshot_repository
    ilm._types.ShrinkAction:
      type: object
      properties:
        number_of_shards:
          type: number
        max_primary_shard_size:
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        allow_write_after_shrink:
          type: boolean
    ilm._types.WaitForSnapshotAction:
      type: object
      properties:
        policy:
          type: string
      required:
      - policy
    ilm.explain_lifecycle.LifecycleExplainUnmanaged:
      type: object
      properties:
        index:
          allOf:
          - "$ref": "#/components/schemas/_types.IndexName"
        managed:
          type: string
          enum:
          - 'false'
      required:
      - index
      - managed
    ilm.get_lifecycle.Lifecycle:
      type: object
      properties:
        modified_date:
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
        policy:
          allOf:
          - "$ref": "#/components/schemas/ilm._types.Policy"
        version:
          allOf:
          - "$ref": "#/components/schemas/_types.VersionNumber"
      required:
      - modified_date
      - policy
      - version
    ilm._types.Policy:
      type: object
      properties:
        phases:
          allOf:
          - "$ref": "#/components/schemas/ilm._types.Phases"
        _meta:
          description: Arbitrary metadata that is not automatically generated or used
            by Elasticsearch.
          allOf:
          - "$ref": "#/components/schemas/_types.Metadata"
      required:
      - phases
    ilm._types.Phases:
      type: object
      properties:
        cold:
          allOf:
          - "$ref": "#/components/schemas/ilm._types.Phase"
        delete:
          allOf:
          - "$ref": "#/components/schemas/ilm._types.Phase"
        frozen:
          allOf:
          - "$ref": "#/components/schemas/ilm._types.Phase"
        hot:
          allOf:
          - "$ref": "#/components/schemas/ilm._types.Phase"
        warm:
          allOf:
          - "$ref": "#/components/schemas/ilm._types.Phase"
    ilm.move_to_step.StepKey:
      type: object
      properties:
        action:
          description: The optional action to which the index will be moved.
          type: string
        name:
          description: The optional step name to which the index will be moved.
          type: string
        phase:
          type: string
      required:
      - phase
    _types.OpType:
      type: string
      enum:
      - index
      - create
    indices._types.IndicesBlockOptions:
      type: string
      enum:
      - metadata
      - read
      - read_only
      - write
    indices.add_block.AddIndicesBlockStatus:
      type: object
      properties:
        name:
          allOf:
          - "$ref": "#/components/schemas/_types.IndexName"
        blocked:
          type: boolean
      required:
      - name
      - blocked
    indices.analyze.TextToAnalyze:
      oneOf:
      - type: string
      - type: array
        items:
          type: string
    indices.analyze.AnalyzeDetail:
      type: object
      properties:
        analyzer:
          allOf:
          - "$ref": "#/components/schemas/indices.analyze.AnalyzerDetail"
        charfilters:
          type: array
          items:
            "$ref": "#/components/schemas/indices.analyze.CharFilterDetail"
        custom_analyzer:
          type: boolean
        tokenfilters:
          type: array
          items:
            "$ref": "#/components/schemas/indices.analyze.TokenDetail"
        tokenizer:
          allOf:
          - "$ref": "#/components/schemas/indices.analyze.TokenDetail"
      required:
      - custom_analyzer
    indices.analyze.AnalyzerDetail:
      type: object
      properties:
        name:
          type: string
        tokens:
          type: array
          items:
            "$ref": "#/components/schemas/indices.analyze.ExplainAnalyzeToken"
      required:
      - name
      - tokens
    indices.analyze.ExplainAnalyzeToken:
      type: object
      properties:
        bytes:
          type: string
        end_offset:
          type: number
        keyword:
          type: boolean
        position:
          type: number
        positionLength:
          type: number
        start_offset:
          type: number
        termFrequency:
          type: number
        token:
          type: string
        type:
          type: string
      required:
      - bytes
      - end_offset
      - position
      - positionLength
      - start_offset
      - termFrequency
      - token
      - type
    indices.analyze.CharFilterDetail:
      type: object
      properties:
        filtered_text:
          type: array
          items:
            type: string
        name:
          type: string
      required:
      - filtered_text
      - name
    indices.analyze.TokenDetail:
      type: object
      properties:
        name:
          type: string
        tokens:
          type: array
          items:
            "$ref": "#/components/schemas/indices.analyze.ExplainAnalyzeToken"
      required:
      - name
      - tokens
    indices.analyze.AnalyzeToken:
      type: object
      properties:
        end_offset:
          type: number
        position:
          type: number
        positionLength:
          type: number
        start_offset:
          type: number
        token:
          type: string
        type:
          type: string
      required:
      - end_offset
      - position
      - start_offset
      - token
      - type
    _types.ShardsOperationResponseBase:
      type: object
      properties:
        _shards:
          allOf:
          - "$ref": "#/components/schemas/_types.ShardStatistics"
    indices.close.CloseIndexResult:
      type: object
      properties:
        closed:
          type: boolean
        shards:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/indices.close.CloseShardResult"
      required:
      - closed
    indices.close.CloseShardResult:
      type: object
      properties:
        failures:
          type: array
          items:
            "$ref": "#/components/schemas/_types.ShardFailure"
      required:
      - failures
    _types.DataStreamName:
      type: string
    indices.create_from.CreateFrom:
      type: object
      properties:
        mappings_override:
          description: Mappings overrides to be applied to the destination index (optional)
          allOf:
          - "$ref": "#/components/schemas/_types.mapping.TypeMapping"
        settings_override:
          description: Settings overrides to be applied to the destination index (optional)
          allOf:
          - "$ref": "#/components/schemas/indices._types.IndexSettings"
        remove_index_blocks:
          description: If index blocks should be removed when creating destination
            index (optional)
          default: true
          type: boolean
    indices.data_streams_stats.DataStreamsStatsItem:
      type: object
      properties:
        backing_indices:
          description: Current number of backing indices for the data stream.
          type: number
        data_stream:
          description: Name of the data stream.
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        maximum_timestamp:
          description: |-
            The data stream’s highest `@timestamp` value, converted to milliseconds since the Unix epoch.
            NOTE: This timestamp is provided as a best effort.
            The data stream may contain `@timestamp` values higher than this if one or more of the following conditions are met:
            The stream contains closed backing indices;
            Backing indices with a lower generation contain higher `@timestamp` values.
          allOf:
          - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
        store_size:
          description: |-
            Total size of all shards for the data stream’s backing indices.
            This parameter is only returned if the `human` query parameter is `true`.
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        store_size_bytes:
          description: Total size, in bytes, of all shards for the data stream’s backing
            indices.
          type: number
      required:
      - backing_indices
      - data_stream
      - maximum_timestamp
      - store_size_bytes
    _types.IndicesResponseBase:
      allOf:
      - "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
      - type: object
        properties:
          _shards:
            allOf:
            - "$ref": "#/components/schemas/_types.ShardStatistics"
    indices.delete_alias.IndicesAliasesResponseBody:
      allOf:
      - "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
      - type: object
        properties:
          errors:
            type: boolean
    _types.DataStreamNames:
      oneOf:
      - "$ref": "#/components/schemas/_types.DataStreamName"
      - type: array
        items:
          "$ref": "#/components/schemas/_types.DataStreamName"
    indices._types.DownsampleConfig:
      type: object
      properties:
        fixed_interval:
          description: The interval at which to aggregate the original time series
            index.
          allOf:
          - "$ref": "#/components/schemas/_types.DurationLarge"
        sampling_method:
          description: The sampling method used to reduce the documents; it can be
            either `aggregate` or `last_value`. Defaults to `aggregate`.
          allOf:
          - "$ref": "#/components/schemas/indices._types.SamplingMethod"
      required:
      - fixed_interval
    indices.explain_data_lifecycle.DataStreamLifecycleExplain:
      type: object
      properties:
        index:
          allOf:
          - "$ref": "#/components/schemas/_types.IndexName"
        managed_by_lifecycle:
          type: boolean
        index_creation_date_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
        time_since_index_creation:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        rollover_date_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
        time_since_rollover:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        lifecycle:
          allOf:
          - "$ref": "#/components/schemas/indices._types.DataStreamLifecycleWithRollover"
        generation_time:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        error:
          type: string
      required:
      - index
      - managed_by_lifecycle
    indices.field_usage_stats.FieldsUsageBody:
      type: object
      properties:
        _shards:
          allOf:
          - "$ref": "#/components/schemas/_types.ShardStatistics"
      required:
      - _shards
    indices.forcemerge._types.ForceMergeResponseBody:
      allOf:
      - "$ref": "#/components/schemas/_types.ShardsOperationResponseBase"
      - type: object
        properties:
          task:
            description: |-
              task contains a task id returned when wait_for_completion=false,
              you can use the task_id to get the status of the task at _tasks/<task_id>
            type: string
    indices.get.Features:
      oneOf:
      - "$ref": "#/components/schemas/indices.get.Feature"
      - type: array
        items:
          "$ref": "#/components/schemas/indices.get.Feature"
    indices.get.Feature:
      type: string
      enum:
      - aliases
      - mappings
      - settings
    indices._types.IndexState:
      type: object
      properties:
        aliases:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/indices._types.Alias"
        mappings:
          allOf:
          - "$ref": "#/components/schemas/_types.mapping.TypeMapping"
        settings:
          allOf:
          - "$ref": "#/components/schemas/indices._types.IndexSettings"
        defaults:
          description: Default settings, included when the request's `include_default`
            is `true`.
          allOf:
          - "$ref": "#/components/schemas/indices._types.IndexSettings"
        data_stream:
          allOf:
          - "$ref": "#/components/schemas/_types.DataStreamName"
        lifecycle:
          description: Data stream lifecycle applicable if this is a data stream.
          x-state: Generally available; Added in 8.11.0
          allOf:
          - "$ref": "#/components/schemas/indices._types.DataStreamLifecycle"
    indices.get_alias._types.IndexAliases:
      type: object
      properties:
        aliases:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/indices._types.AliasDefinition"
      required:
      - aliases
    indices.get_data_lifecycle.DataStreamWithLifecycle:
      type: object
      properties:
        name:
          allOf:
          - "$ref": "#/components/schemas/_types.DataStreamName"
        lifecycle:
          allOf:
          - "$ref": "#/components/schemas/indices._types.DataStreamLifecycleWithRollover"
      required:
      - name
    indices.get_data_lifecycle_stats.DataStreamStats:
      type: object
      properties:
        backing_indices_in_error:
          description: The count of the backing indices for the data stream.
          type: number
        backing_indices_in_total:
          description: The count of the backing indices for the data stream that have
            encountered an error.
          type: number
        name:
          description: The name of the data stream.
          allOf:
          - "$ref": "#/components/schemas/_types.DataStreamName"
      required:
      - backing_indices_in_error
      - backing_indices_in_total
      - name
    indices._types.DataStream:
      type: object
      properties:
        _meta:
          description: |-
            Custom metadata for the stream, copied from the `_meta` object of the stream’s matching index template.
            If empty, the response omits this property.
          allOf:
          - "$ref": "#/components/schemas/_types.Metadata"
        allow_custom_routing:
          description: If `true`, the data stream allows custom routing on write request.
          type: boolean
        failure_store:
          description: Information about failure store backing indices
          allOf:
          - "$ref": "#/components/schemas/indices._types.FailureStore"
        generation:
          description: Current generation for the data stream. This number acts as
            a cumulative count of the stream’s rollovers, starting at 1.
          type: number
        hidden:
          description: If `true`, the data stream is hidden.
          type: boolean
        ilm_policy:
          description: |-
            Name of the current ILM lifecycle policy in the stream’s matching index template.
            This lifecycle policy is set in the `index.lifecycle.name` setting.
            If the template does not include a lifecycle policy, this property is not included in the response.
            NOTE: A data stream’s backing indices may be assigned different lifecycle policies. To retrieve the lifecycle policy for individual backing indices, use the get index settings API.
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        next_generation_managed_by:
          description: Name of the lifecycle system that'll manage the next generation
            of the data stream.
          allOf:
          - "$ref": "#/components/schemas/indices._types.ManagedBy"
        prefer_ilm:
          description: Indicates if ILM should take precedence over DSL in case both
            are configured to managed this data stream.
          type: boolean
        indices:
          description: |-
            Array of objects containing information about the data stream’s backing indices.
            The last item in this array contains information about the stream’s current write index.
          type: array
          items:
            "$ref": "#/components/schemas/indices._types.DataStreamIndex"
        lifecycle:
          description: Contains the configuration for the data stream lifecycle of
            this data stream.
          x-state: Generally available; Added in 8.11.0
          allOf:
          - "$ref": "#/components/schemas/indices._types.DataStreamLifecycleWithRollover"
        name:
          description: Name of the data stream.
          allOf:
          - "$ref": "#/components/schemas/_types.DataStreamName"
        replicated:
          description: If `true`, the data stream is created and managed by cross-cluster
            replication and the local cluster can not write into this data stream
            or change its mappings.
          type: boolean
        rollover_on_write:
          description: If `true`, the next write to this data stream will trigger
            a rollover first and the document will be indexed in the new backing index.
            If the rollover fails the indexing request will fail too.
          type: boolean
        settings:
          description: |-
            The settings specific to this data stream that will take precedence over the settings in the matching index
            template.
          allOf:
          - "$ref": "#/components/schemas/indices._types.IndexSettings"
        mappings:
          description: |-
            The mappings specific to this data stream that will take precedence over the mappings in the matching index
            template.
          allOf:
          - "$ref": "#/components/schemas/_types.mapping.TypeMapping"
        status:
          description: |+
            Health status of the data stream.
            This health status is based on the state of the primary and replica shards of the stream’s backing indices.

            Supported values include:
              - `green` (or `GREEN`): All shards are assigned.
              - `yellow` (or `YELLOW`): All primary shards are assigned, but one or more replica shards are unassigned. If a node in the cluster fails, some data could be unavailable until that node is repaired.
              - `red` (or `RED`): One or more primary shards are unassigned, so some data is unavailable. This can occur briefly during cluster startup as primary shards are assigned.
              - `unknown`
              - `unavailable`

          allOf:
          - "$ref": "#/components/schemas/_types.HealthStatus"
        system:
          description: If `true`, the data stream is created and managed by an Elastic
            stack component and cannot be modified through normal user interaction.
          x-state: Generally available; Added in 7.10.0
          type: boolean
        template:
          description: |-
            Name of the index template used to create the data stream’s backing indices.
            The template’s index pattern must match the name of this data stream.
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        timestamp_field:
          description: Information about the `@timestamp` field in the data stream.
          allOf:
          - "$ref": "#/components/schemas/indices._types.DataStreamTimestampField"
        index_mode:
          description: The index mode for the data stream that will be used for newly
            created backing indices.
          allOf:
          - "$ref": "#/components/schemas/indices._types.IndexMode"
      required:
      - generation
      - hidden
      - next_generation_managed_by
      - prefer_ilm
      - indices
      - name
      - rollover_on_write
      - settings
      - status
      - template
      - timestamp_field
    indices._types.FailureStore:
      type: object
      properties:
        enabled:
          type: boolean
        indices:
          type: array
          items:
            "$ref": "#/components/schemas/indices._types.DataStreamIndex"
        rollover_on_write:
          type: boolean
      required:
      - enabled
      - indices
      - rollover_on_write
    indices._types.DataStreamIndex:
      type: object
      properties:
        index_name:
          description: Name of the backing index.
          allOf:
          - "$ref": "#/components/schemas/_types.IndexName"
        index_uuid:
          description: Universally unique identifier (UUID) for the index.
          allOf:
          - "$ref": "#/components/schemas/_types.Uuid"
        ilm_policy:
          description: Name of the current ILM lifecycle policy configured for this
            backing index.
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        managed_by:
          description: Name of the lifecycle system that's currently managing this
            backing index.
          allOf:
          - "$ref": "#/components/schemas/indices._types.ManagedBy"
        prefer_ilm:
          description: Indicates if ILM should take precedence over DSL in case both
            are configured to manage this index.
          type: boolean
        index_mode:
          description: The index mode of this backing index of the data stream.
          allOf:
          - "$ref": "#/components/schemas/indices._types.IndexMode"
      required:
      - index_name
      - index_uuid
    indices._types.ManagedBy:
      type: string
      enum:
      - Index Lifecycle Management
      - Data stream lifecycle
      - Unmanaged
    indices._types.IndexMode:
      type: string
      enum:
      - standard
      - time_series
      - logsdb
      - lookup
    indices._types.DataStreamTimestampField:
      type: object
      properties:
        name:
          description: Name of the timestamp field for the data stream, which must
            be `@timestamp`. The `@timestamp` field must be included in every document
            indexed to the data stream.
          allOf:
          - "$ref": "#/components/schemas/_types.Field"
      required:
      - name
    indices.get_data_stream_mappings.DataStreamMappings:
      type: object
      properties:
        name:
          description: The name of the data stream.
          type: string
        mappings:
          description: The settings specific to this data stream
          allOf:
          - "$ref": "#/components/schemas/_types.mapping.TypeMapping"
        effective_mappings:
          description: |-
            The settings specific to this data stream merged with the settings from its template. These `effective_settings`
            are the settings that will be used when a new index is created for this data stream.
          allOf:
          - "$ref": "#/components/schemas/_types.mapping.TypeMapping"
      required:
      - name
      - mappings
      - effective_mappings
    indices.get_data_stream_options.DataStreamWithOptions:
      type: object
      properties:
        name:
          allOf:
          - "$ref": "#/components/schemas/_types.DataStreamName"
        options:
          allOf:
          - "$ref": "#/components/schemas/indices._types.DataStreamOptions"
      required:
      - name
    indices.get_data_stream_settings.DataStreamSettings:
      type: object
      properties:
        name:
          description: The name of the data stream.
          type: string
        settings:
          description: The settings specific to this data stream
          allOf:
          - "$ref": "#/components/schemas/indices._types.IndexSettings"
        effective_settings:
          description: |-
            The settings specific to this data stream merged with the settings from its template. These `effective_settings`
            are the settings that will be used when a new index is created for this data stream.
          allOf:
          - "$ref": "#/components/schemas/indices._types.IndexSettings"
      required:
      - name
      - settings
      - effective_settings
    indices.get_field_mapping.TypeFieldMappings:
      type: object
      properties:
        mappings:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/_types.mapping.FieldMapping"
      required:
      - mappings
    _types.mapping.FieldMapping:
      type: object
      properties:
        full_name:
          type: string
        mapping:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/_types.mapping.Property"
          minProperties: 1
          maxProperties: 1
      required:
      - full_name
      - mapping
    indices.get_index_template.IndexTemplateItem:
      type: object
      properties:
        name:
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        index_template:
          allOf:
          - "$ref": "#/components/schemas/indices._types.IndexTemplate"
      required:
      - name
      - index_template
    indices._types.IndexTemplate:
      type: object
      properties:
        index_patterns:
          description: Array of wildcard (`*`) expressions used to match the names
            of data streams and indices during creation.
          allOf:
          - "$ref": "#/components/schemas/_types.Names"
        composed_of:
          description: |-
            An ordered list of component template names.
            Component templates are merged in the order specified, meaning that the last component template specified has the highest precedence.
          type: array
          items:
            "$ref": "#/components/schemas/_types.Name"
        template:
          description: |-
            Template to be applied.
            It may optionally include an `aliases`, `mappings`, or `settings` configuration.
          allOf:
          - "$ref": "#/components/schemas/indices._types.IndexTemplateSummary"
        version:
          description: |-
            Version number used to manage index templates externally.
            This number is not automatically generated by Elasticsearch.
          allOf:
          - "$ref": "#/components/schemas/_types.VersionNumber"
        priority:
          description: |-
            Priority to determine index template precedence when a new data stream or index is created.
            The index template with the highest priority is chosen.
            If no priority is specified the template is treated as though it is of priority 0 (lowest priority).
            This number is not automatically generated by Elasticsearch.
          type: number
        _meta:
          description: |-
            Optional user metadata about the index template. May have any contents.
            This map is not automatically generated by Elasticsearch.
          allOf:
          - "$ref": "#/components/schemas/_types.Metadata"
        allow_auto_create:
          type: boolean
        data_stream:
          description: |-
            If this object is included, the template is used to create data streams and their backing indices.
            Supports an empty object.
            Data streams require a matching index template with a `data_stream` object.
          allOf:
          - "$ref": "#/components/schemas/indices._types.IndexTemplateDataStreamConfiguration"
        deprecated:
          description: |-
            Marks this index template as deprecated.
            When creating or updating a non-deprecated index template that uses deprecated components,
            Elasticsearch will emit a deprecation warning.
          x-state: Generally available; Added in 8.12.0
          type: boolean
        ignore_missing_component_templates:
          description: A list of component template names that are allowed to be absent.
          x-state: Generally available; Added in 8.7.0
          allOf:
          - "$ref": "#/components/schemas/_types.Names"
        created_date:
          description: Date and time when the index template was created. Only returned
            if the `human` query parameter is `true`.
          x-state: Generally available; Added in 9.2.0
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
        created_date_millis:
          description: Date and time when the index template was created, in milliseconds
            since the epoch.
          x-state: Generally available; Added in 9.2.0
          allOf:
          - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
        modified_date:
          description: Date and time when the index template was last modified. Only
            returned if the `human` query parameter is `true`.
          x-state: Generally available; Added in 9.2.0
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
        modified_date_millis:
          description: Date and time when the index template was last modified, in
            milliseconds since the epoch.
          x-state: Generally available; Added in 9.2.0
          allOf:
          - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
      required:
      - index_patterns
      - composed_of
    indices._types.IndexTemplateSummary:
      type: object
      properties:
        aliases:
          description: |-
            Aliases to add.
            If the index template includes a `data_stream` object, these are data stream aliases.
            Otherwise, these are index aliases.
            Data stream aliases ignore the `index_routing`, `routing`, and `search_routing` options.
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/indices._types.Alias"
        mappings:
          description: |-
            Mapping for fields in the index.
            If specified, this mapping can include field names, field data types, and mapping parameters.
          allOf:
          - "$ref": "#/components/schemas/_types.mapping.TypeMapping"
        settings:
          description: Configuration options for the index.
          allOf:
          - "$ref": "#/components/schemas/indices._types.IndexSettings"
        lifecycle:
          x-state: Generally available; Added in 8.11.0
          allOf:
          - "$ref": "#/components/schemas/indices._types.DataStreamLifecycleWithRollover"
        data_stream_options:
          x-state: Generally available; Added in 8.19.0
          allOf:
          - "$ref": "#/components/schemas/indices._types.DataStreamOptions"
    indices._types.IndexTemplateDataStreamConfiguration:
      type: object
      properties:
        hidden:
          description: If true, the data stream is hidden.
          default: false
          type: boolean
        allow_custom_routing:
          description: If true, the data stream supports custom routing.
          default: false
          type: boolean
    indices.get_mapping.IndexMappingRecord:
      type: object
      properties:
        item:
          allOf:
          - "$ref": "#/components/schemas/_types.mapping.TypeMapping"
        mappings:
          allOf:
          - "$ref": "#/components/schemas/_types.mapping.TypeMapping"
      required:
      - mappings
    indices.get_migrate_reindex_status.StatusInProgress:
      type: object
      properties:
        index:
          type: string
        total_doc_count:
          type: number
        reindexed_doc_count:
          type: number
      required:
      - index
      - total_doc_count
      - reindexed_doc_count
    indices.get_migrate_reindex_status.StatusError:
      type: object
      properties:
        index:
          type: string
        message:
          type: string
      required:
      - index
      - message
    indices._types.TemplateMapping:
      type: object
      properties:
        aliases:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/indices._types.Alias"
        index_patterns:
          type: array
          items:
            "$ref": "#/components/schemas/_types.Name"
        mappings:
          allOf:
          - "$ref": "#/components/schemas/_types.mapping.TypeMapping"
        order:
          type: number
        settings:
          type: object
          additionalProperties:
            type: object
        version:
          allOf:
          - "$ref": "#/components/schemas/_types.VersionNumber"
      required:
      - aliases
      - index_patterns
      - mappings
      - order
      - settings
    indices.migrate_reindex.MigrateReindex:
      type: object
      properties:
        mode:
          description: Reindex mode. Currently only 'upgrade' is supported.
          allOf:
          - "$ref": "#/components/schemas/indices.migrate_reindex.ModeEnum"
        source:
          description: The source index or data stream (only data streams are currently
            supported).
          allOf:
          - "$ref": "#/components/schemas/indices.migrate_reindex.SourceIndex"
      required:
      - mode
      - source
    indices.migrate_reindex.ModeEnum:
      type: string
      enum:
      - upgrade
    indices.migrate_reindex.SourceIndex:
      type: object
      properties:
        index:
          allOf:
          - "$ref": "#/components/schemas/_types.IndexName"
      required:
      - index
    indices.modify_data_stream.Action:
      type: object
      properties:
        add_backing_index:
          description: |-
            Adds an existing index as a backing index for a data stream.
            The index is hidden as part of this operation.
            WARNING: Adding indices with the `add_backing_index` action can potentially result in improper data stream behavior.
            This should be considered an expert level API.
          allOf:
          - "$ref": "#/components/schemas/indices.modify_data_stream.IndexAndDataStreamAction"
        remove_backing_index:
          description: |-
            Removes a backing index from a data stream.
            The index is unhidden as part of this operation.
            A data stream’s write index cannot be removed.
          allOf:
          - "$ref": "#/components/schemas/indices.modify_data_stream.IndexAndDataStreamAction"
      minProperties: 1
      maxProperties: 1
    indices.modify_data_stream.IndexAndDataStreamAction:
      type: object
      properties:
        data_stream:
          description: Data stream targeted by the action.
          allOf:
          - "$ref": "#/components/schemas/_types.DataStreamName"
        index:
          description: Index for the action.
          allOf:
          - "$ref": "#/components/schemas/_types.IndexName"
      required:
      - data_stream
      - index
    indices.put_data_stream_mappings.UpdatedDataStreamMappings:
      type: object
      properties:
        name:
          description: The data stream name.
          allOf:
          - "$ref": "#/components/schemas/_types.IndexName"
        applied_to_data_stream:
          description: |-
            If the mappings were successfully applied to the data stream (or would have been, if running in `dry_run`
            mode), it is `true`. If an error occurred, it is `false`.
          type: boolean
        error:
          description: A message explaining why the mappings could not be applied
            to the data stream.
          type: string
        mappings:
          description: The mappings that are specfic to this data stream that will
            override any mappings from the matching index template.
          allOf:
          - "$ref": "#/components/schemas/_types.mapping.TypeMapping"
        effective_mappings:
          description: |-
            The mappings that are effective on this data stream, taking into account the mappings from the matching index
            template and the mappings specific to this data stream.
          allOf:
          - "$ref": "#/components/schemas/_types.mapping.TypeMapping"
      required:
      - name
      - applied_to_data_stream
    indices.put_data_stream_settings.UpdatedDataStreamSettings:
      type: object
      properties:
        name:
          description: The data stream name.
          allOf:
          - "$ref": "#/components/schemas/_types.IndexName"
        applied_to_data_stream:
          description: |-
            If the settings were successfully applied to the data stream (or would have been, if running in `dry_run`
            mode), it is `true`. If an error occurred, it is `false`.
          type: boolean
        error:
          description: A message explaining why the settings could not be applied
            to the data stream.
          type: string
        settings:
          description: The settings that are specfic to this data stream that will
            override any settings from the matching index template.
          allOf:
          - "$ref": "#/components/schemas/indices._types.IndexSettings"
        effective_settings:
          description: |-
            The settings that are effective on this data stream, taking into account the settings from the matching index
            template and the settings specific to this data stream.
          allOf:
          - "$ref": "#/components/schemas/indices._types.IndexSettings"
        index_settings_results:
          description: Information about whether and where each setting was applied.
          allOf:
          - "$ref": "#/components/schemas/indices.put_data_stream_settings.IndexSettingResults"
      required:
      - name
      - applied_to_data_stream
      - settings
      - effective_settings
      - index_settings_results
    indices.put_data_stream_settings.IndexSettingResults:
      type: object
      properties:
        applied_to_data_stream_only:
          description: |-
            The list of settings that were applied to the data stream but not to backing indices. These will be applied to
            the write index the next time the data stream is rolled over.
          type: array
          items:
            type: string
        applied_to_data_stream_and_backing_indices:
          description: |-
            The list of settings that were applied to the data stream and to all of its backing indices. These settings will
            also be applied to the write index the next time the data stream is rolled over.
          type: array
          items:
            type: string
        errors:
          type: array
          items:
            "$ref": "#/components/schemas/indices.put_data_stream_settings.DataStreamSettingsError"
      required:
      - applied_to_data_stream_only
      - applied_to_data_stream_and_backing_indices
    indices.put_data_stream_settings.DataStreamSettingsError:
      type: object
      properties:
        index:
          allOf:
          - "$ref": "#/components/schemas/_types.IndexName"
        error:
          description: A message explaining why the settings could not be applied
            to specific indices.
          type: string
      required:
      - index
      - error
    indices._types.DataStreamVisibility:
      type: object
      properties:
        hidden:
          type: boolean
        allow_custom_routing:
          type: boolean
    indices.recovery.RecoveryStatus:
      type: object
      properties:
        shards:
          type: array
          items:
            "$ref": "#/components/schemas/indices.recovery.ShardRecovery"
      required:
      - shards
    indices.recovery.ShardRecovery:
      type: object
      properties:
        id:
          type: number
        index:
          allOf:
          - "$ref": "#/components/schemas/indices.recovery.RecoveryIndexStatus"
        primary:
          type: boolean
        source:
          allOf:
          - "$ref": "#/components/schemas/indices.recovery.RecoveryOrigin"
        stage:
          type: string
        start:
          allOf:
          - "$ref": "#/components/schemas/indices.recovery.RecoveryStartStatus"
        start_time:
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
        start_time_in_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
        stop_time:
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
        stop_time_in_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
        target:
          allOf:
          - "$ref": "#/components/schemas/indices.recovery.RecoveryOrigin"
        total_time:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        total_time_in_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
        translog:
          allOf:
          - "$ref": "#/components/schemas/indices.recovery.TranslogStatus"
        type:
          type: string
        verify_index:
          allOf:
          - "$ref": "#/components/schemas/indices.recovery.VerifyIndex"
      required:
      - id
      - index
      - primary
      - source
      - stage
      - start_time_in_millis
      - target
      - total_time_in_millis
      - translog
      - type
      - verify_index
    indices.recovery.RecoveryIndexStatus:
      type: object
      properties:
        bytes:
          allOf:
          - "$ref": "#/components/schemas/indices.recovery.RecoveryBytes"
        files:
          allOf:
          - "$ref": "#/components/schemas/indices.recovery.RecoveryFiles"
        size:
          allOf:
          - "$ref": "#/components/schemas/indices.recovery.RecoveryBytes"
        source_throttle_time:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        source_throttle_time_in_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
        target_throttle_time:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        target_throttle_time_in_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
        total_time:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        total_time_in_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
      required:
      - files
      - size
      - source_throttle_time_in_millis
      - target_throttle_time_in_millis
      - total_time_in_millis
    indices.recovery.RecoveryBytes:
      type: object
      properties:
        percent:
          allOf:
          - "$ref": "#/components/schemas/_types.Percentage"
        recovered:
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        recovered_in_bytes:
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        recovered_from_snapshot:
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        recovered_from_snapshot_in_bytes:
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        reused:
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        reused_in_bytes:
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        total:
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        total_in_bytes:
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
      required:
      - percent
      - recovered_in_bytes
      - reused_in_bytes
      - total_in_bytes
    indices.recovery.RecoveryFiles:
      type: object
      properties:
        details:
          type: array
          items:
            "$ref": "#/components/schemas/indices.recovery.FileDetails"
        percent:
          allOf:
          - "$ref": "#/components/schemas/_types.Percentage"
        recovered:
          type: number
        reused:
          type: number
        total:
          type: number
      required:
      - percent
      - recovered
      - reused
      - total
    indices.recovery.FileDetails:
      type: object
      properties:
        length:
          type: number
        name:
          type: string
        recovered:
          type: number
      required:
      - length
      - name
      - recovered
    indices.recovery.RecoveryOrigin:
      type: object
      properties:
        hostname:
          type: string
        host:
          allOf:
          - "$ref": "#/components/schemas/_types.Host"
        transport_address:
          allOf:
          - "$ref": "#/components/schemas/_types.TransportAddress"
        id:
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        ip:
          allOf:
          - "$ref": "#/components/schemas/_types.Ip"
        name:
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        bootstrap_new_history_uuid:
          type: boolean
        repository:
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        snapshot:
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        version:
          allOf:
          - "$ref": "#/components/schemas/_types.VersionString"
        restoreUUID:
          allOf:
          - "$ref": "#/components/schemas/_types.Uuid"
        index:
          allOf:
          - "$ref": "#/components/schemas/_types.IndexName"
    indices.recovery.RecoveryStartStatus:
      type: object
      properties:
        check_index_time:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        check_index_time_in_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
        total_time:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        total_time_in_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
      required:
      - check_index_time_in_millis
      - total_time_in_millis
    indices.recovery.TranslogStatus:
      type: object
      properties:
        percent:
          allOf:
          - "$ref": "#/components/schemas/_types.Percentage"
        recovered:
          type: number
        total:
          type: number
        total_on_start:
          type: number
        total_time:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        total_time_in_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
      required:
      - percent
      - recovered
      - total
      - total_on_start
      - total_time_in_millis
    indices.recovery.VerifyIndex:
      type: object
      properties:
        check_index_time:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        check_index_time_in_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
        total_time:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        total_time_in_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
      required:
      - check_index_time_in_millis
      - total_time_in_millis
    indices.reload_search_analyzers.ReloadResult:
      type: object
      properties:
        reload_details:
          type: array
          items:
            "$ref": "#/components/schemas/indices.reload_search_analyzers.ReloadDetails"
        _shards:
          allOf:
          - "$ref": "#/components/schemas/_types.ShardStatistics"
      required:
      - reload_details
      - _shards
    indices.reload_search_analyzers.ReloadDetails:
      type: object
      properties:
        index:
          type: string
        reloaded_analyzers:
          type: array
          items:
            type: string
        reloaded_node_ids:
          type: array
          items:
            type: string
      required:
      - index
      - reloaded_analyzers
      - reloaded_node_ids
    indices.remove_block.RemoveIndicesBlockStatus:
      type: object
      properties:
        name:
          allOf:
          - "$ref": "#/components/schemas/_types.IndexName"
        unblocked:
          type: boolean
        exception:
          allOf:
          - "$ref": "#/components/schemas/_types.ErrorCause"
      required:
      - name
    indices.resolve_cluster.ResolveClusterInfo:
      description: Provides information about each cluster request relevant to doing
        a cross-cluster search.
      type: object
      properties:
        connected:
          description: Whether the remote cluster is connected to the local (querying)
            cluster.
          type: boolean
        skip_unavailable:
          description: The `skip_unavailable` setting for a remote cluster.
          type: boolean
        matching_indices:
          description: |-
            Whether the index expression provided in the request matches any indices, aliases or data streams
            on the cluster.
          type: boolean
        error:
          description: |-
            Provides error messages that are likely to occur if you do a search with this index expression
            on the specified cluster (for example, lack of security privileges to query an index).
          type: string
        version:
          description: Provides version information about the cluster.
          allOf:
          - "$ref": "#/components/schemas/_types.ElasticsearchVersionMinInfo"
      required:
      - connected
      - skip_unavailable
    _types.ElasticsearchVersionMinInfo:
      description: Reduced (minimal) info ElasticsearchVersion
      type: object
      properties:
        build_flavor:
          type: string
        minimum_index_compatibility_version:
          allOf:
          - "$ref": "#/components/schemas/_types.VersionString"
        minimum_wire_compatibility_version:
          allOf:
          - "$ref": "#/components/schemas/_types.VersionString"
        number:
          type: string
      required:
      - build_flavor
      - minimum_index_compatibility_version
      - minimum_wire_compatibility_version
      - number
    indices.resolve_index.ResolveIndexItem:
      type: object
      properties:
        name:
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        aliases:
          type: array
          items:
            type: string
        attributes:
          type: array
          items:
            type: string
        data_stream:
          allOf:
          - "$ref": "#/components/schemas/_types.DataStreamName"
        mode:
          allOf:
          - "$ref": "#/components/schemas/indices._types.IndexMode"
      required:
      - name
      - attributes
    indices.resolve_index.ResolveIndexAliasItem:
      type: object
      properties:
        name:
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        indices:
          allOf:
          - "$ref": "#/components/schemas/_types.Indices"
      required:
      - name
      - indices
    indices.resolve_index.ResolveIndexDataStreamsItem:
      type: object
      properties:
        name:
          allOf:
          - "$ref": "#/components/schemas/_types.DataStreamName"
        timestamp_field:
          allOf:
          - "$ref": "#/components/schemas/_types.Field"
        backing_indices:
          allOf:
          - "$ref": "#/components/schemas/_types.Indices"
      required:
      - name
      - timestamp_field
      - backing_indices
    indices.rollover.RolloverConditions:
      type: object
      properties:
        min_age:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        max_age:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        max_age_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
        min_docs:
          type: number
        max_docs:
          type: number
        max_size:
          deprecated: true
          description: The `max_size` condition has been deprecated in 9.3.0 and `max_primary_shard_size`
            should be used instead
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        max_size_bytes:
          type: number
        min_size:
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        min_size_bytes:
          type: number
        max_primary_shard_size:
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        max_primary_shard_size_bytes:
          type: number
        min_primary_shard_size:
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        min_primary_shard_size_bytes:
          type: number
        max_primary_shard_docs:
          type: number
        min_primary_shard_docs:
          type: number
    indices.segments.IndexSegment:
      type: object
      properties:
        shards:
          type: object
          additionalProperties:
            oneOf:
            - "$ref": "#/components/schemas/indices.segments.ShardsSegment"
            - type: array
              items:
                "$ref": "#/components/schemas/indices.segments.ShardsSegment"
      required:
      - shards
    indices.segments.ShardsSegment:
      type: object
      properties:
        num_committed_segments:
          type: number
        routing:
          allOf:
          - "$ref": "#/components/schemas/indices.segments.ShardSegmentRouting"
        num_search_segments:
          type: number
        segments:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/indices.segments.Segment"
      required:
      - num_committed_segments
      - routing
      - num_search_segments
      - segments
    indices.segments.ShardSegmentRouting:
      type: object
      properties:
        node:
          type: string
        primary:
          type: boolean
        state:
          type: string
      required:
      - node
      - primary
      - state
    indices.segments.Segment:
      type: object
      properties:
        attributes:
          type: object
          additionalProperties:
            type: string
        committed:
          type: boolean
        compound:
          type: boolean
        deleted_docs:
          type: number
        generation:
          type: number
        search:
          type: boolean
        size_in_bytes:
          type: number
        num_docs:
          type: number
        version:
          allOf:
          - "$ref": "#/components/schemas/_types.VersionString"
      required:
      - attributes
      - committed
      - compound
      - deleted_docs
      - generation
      - search
      - size_in_bytes
      - num_docs
      - version
    indices.shard_stores.ShardStoreStatus:
      type: string
      enum:
      - green
      - yellow
      - red
      - all
    indices.shard_stores.IndicesShardStores:
      type: object
      properties:
        shards:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/indices.shard_stores.ShardStoreWrapper"
      required:
      - shards
    indices.shard_stores.ShardStoreWrapper:
      type: object
      properties:
        stores:
          type: array
          items:
            "$ref": "#/components/schemas/indices.shard_stores.ShardStore"
      required:
      - stores
    indices.shard_stores.ShardStore:
      type: object
      properties:
        allocation:
          allOf:
          - "$ref": "#/components/schemas/indices.shard_stores.ShardStoreAllocation"
        allocation_id:
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        store_exception:
          allOf:
          - "$ref": "#/components/schemas/indices.shard_stores.ShardStoreException"
      required:
      - allocation
    indices.shard_stores.ShardStoreAllocation:
      type: string
      enum:
      - primary
      - replica
      - unused
    indices.shard_stores.ShardStoreException:
      type: object
      properties:
        reason:
          type: string
        type:
          type: string
      required:
      - reason
      - type
    indices.simulate_template.Overlapping:
      type: object
      properties:
        name:
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        index_patterns:
          type: array
          items:
            type: string
      required:
      - name
      - index_patterns
    indices.simulate_template.Template:
      type: object
      properties:
        aliases:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/indices._types.Alias"
        mappings:
          allOf:
          - "$ref": "#/components/schemas/_types.mapping.TypeMapping"
        settings:
          allOf:
          - "$ref": "#/components/schemas/indices._types.IndexSettings"
      required:
      - aliases
      - mappings
      - settings
    _types.CommonStatsFlags:
      oneOf:
      - "$ref": "#/components/schemas/_types.CommonStatsFlag"
      - type: array
        items:
          "$ref": "#/components/schemas/_types.CommonStatsFlag"
    _types.CommonStatsFlag:
      type: string
      enum:
      - _all
      - store
      - indexing
      - get
      - search
      - merge
      - flush
      - refresh
      - query_cache
      - fielddata
      - docs
      - warmer
      - completion
      - segments
      - translog
      - request_cache
      - recovery
      - bulk
      - shard_stats
      - mappings
      - dense_vector
      - sparse_vector
    indices.stats.IndicesStats:
      type: object
      properties:
        primaries:
          allOf:
          - "$ref": "#/components/schemas/indices.stats.IndexStats"
        shards:
          type: object
          additionalProperties:
            type: array
            items:
              "$ref": "#/components/schemas/indices.stats.ShardStats"
        total:
          allOf:
          - "$ref": "#/components/schemas/indices.stats.IndexStats"
        uuid:
          allOf:
          - "$ref": "#/components/schemas/_types.Uuid"
        health:
          description: |2+


            Supported values include:
              - `green` (or `GREEN`): All shards are assigned.
              - `yellow` (or `YELLOW`): All primary shards are assigned, but one or more replica shards are unassigned. If a node in the cluster fails, some data could be unavailable until that node is repaired.
              - `red` (or `RED`): One or more primary shards are unassigned, so some data is unavailable. This can occur briefly during cluster startup as primary shards are assigned.
              - `unknown`
              - `unavailable`

          x-state: Generally available; Added in 8.1.0
          allOf:
          - "$ref": "#/components/schemas/_types.HealthStatus"
        status:
          x-state: Generally available; Added in 8.1.0
          allOf:
          - "$ref": "#/components/schemas/indices.stats.IndexMetadataState"
    indices.stats.IndexStats:
      type: object
      properties:
        completion:
          description: Contains statistics about completions across all shards assigned
            to the node.
          allOf:
          - "$ref": "#/components/schemas/_types.CompletionStats"
        docs:
          description: Contains statistics about documents across all primary shards
            assigned to the node.
          allOf:
          - "$ref": "#/components/schemas/_types.DocStats"
        fielddata:
          description: Contains statistics about the field data cache across all shards
            assigned to the node.
          allOf:
          - "$ref": "#/components/schemas/_types.FielddataStats"
        flush:
          description: Contains statistics about flush operations for the node.
          allOf:
          - "$ref": "#/components/schemas/_types.FlushStats"
        get:
          description: Contains statistics about get operations for the node.
          allOf:
          - "$ref": "#/components/schemas/_types.GetStats"
        indexing:
          description: Contains statistics about indexing operations for the node.
          allOf:
          - "$ref": "#/components/schemas/_types.IndexingStats"
        indices:
          description: Contains statistics about indices operations for the node.
          allOf:
          - "$ref": "#/components/schemas/indices.stats.IndicesStats"
        merges:
          description: Contains statistics about merge operations for the node.
          allOf:
          - "$ref": "#/components/schemas/_types.MergesStats"
        query_cache:
          description: Contains statistics about the query cache across all shards
            assigned to the node.
          allOf:
          - "$ref": "#/components/schemas/_types.QueryCacheStats"
        recovery:
          description: Contains statistics about recovery operations for the node.
          allOf:
          - "$ref": "#/components/schemas/_types.RecoveryStats"
        refresh:
          description: Contains statistics about refresh operations for the node.
          allOf:
          - "$ref": "#/components/schemas/_types.RefreshStats"
        request_cache:
          description: Contains statistics about the request cache across all shards
            assigned to the node.
          allOf:
          - "$ref": "#/components/schemas/_types.RequestCacheStats"
        search:
          description: Contains statistics about search operations for the node.
          allOf:
          - "$ref": "#/components/schemas/_types.SearchStats"
        segments:
          description: Contains statistics about segments across all shards assigned
            to the node.
          allOf:
          - "$ref": "#/components/schemas/_types.SegmentsStats"
        store:
          description: Contains statistics about the size of shards assigned to the
            node.
          allOf:
          - "$ref": "#/components/schemas/_types.StoreStats"
        translog:
          description: Contains statistics about transaction log operations for the
            node.
          allOf:
          - "$ref": "#/components/schemas/_types.TranslogStats"
        warmer:
          description: Contains statistics about index warming operations for the
            node.
          allOf:
          - "$ref": "#/components/schemas/_types.WarmerStats"
        bulk:
          allOf:
          - "$ref": "#/components/schemas/_types.BulkStats"
        shard_stats:
          x-state: Generally available; Added in 7.15.0
          allOf:
          - "$ref": "#/components/schemas/indices.stats.ShardsTotalStats"
    _types.FlushStats:
      type: object
      properties:
        periodic:
          type: number
        total:
          type: number
        total_time:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        total_time_in_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
      required:
      - periodic
      - total
      - total_time_in_millis
    _types.GetStats:
      type: object
      properties:
        current:
          type: number
        exists_time:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        exists_time_in_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
        exists_total:
          type: number
        missing_time:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        missing_time_in_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
        missing_total:
          type: number
        time:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        time_in_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
        total:
          type: number
      required:
      - current
      - exists_time_in_millis
      - exists_total
      - missing_time_in_millis
      - missing_total
      - time_in_millis
      - total
    _types.IndexingStats:
      type: object
      properties:
        index_current:
          type: number
        delete_current:
          type: number
        delete_time:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        delete_time_in_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
        delete_total:
          type: number
        is_throttled:
          type: boolean
        noop_update_total:
          type: number
        throttle_time:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        throttle_time_in_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
        index_time:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        index_time_in_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
        index_total:
          type: number
        index_failed:
          type: number
        types:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/_types.IndexingStats"
        write_load:
          type: number
        recent_write_load:
          type: number
        peak_write_load:
          type: number
      required:
      - index_current
      - delete_current
      - delete_time_in_millis
      - delete_total
      - is_throttled
      - noop_update_total
      - throttle_time_in_millis
      - index_time_in_millis
      - index_total
      - index_failed
    _types.MergesStats:
      type: object
      properties:
        current:
          type: number
        current_docs:
          type: number
        current_size:
          type: string
        current_size_in_bytes:
          type: number
        total:
          type: number
        total_auto_throttle:
          type: string
        total_auto_throttle_in_bytes:
          type: number
        total_docs:
          type: number
        total_size:
          type: string
        total_size_in_bytes:
          type: number
        total_stopped_time:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        total_stopped_time_in_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
        total_throttled_time:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        total_throttled_time_in_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
        total_time:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        total_time_in_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
      required:
      - current
      - current_docs
      - current_size_in_bytes
      - total
      - total_auto_throttle_in_bytes
      - total_docs
      - total_size_in_bytes
      - total_stopped_time_in_millis
      - total_throttled_time_in_millis
      - total_time_in_millis
    _types.RecoveryStats:
      type: object
      properties:
        current_as_source:
          type: number
        current_as_target:
          type: number
        throttle_time:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        throttle_time_in_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
      required:
      - current_as_source
      - current_as_target
      - throttle_time_in_millis
    _types.RefreshStats:
      type: object
      properties:
        external_total:
          type: number
        external_total_time_in_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
        listeners:
          type: number
        total:
          type: number
        total_time:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        total_time_in_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
      required:
      - external_total
      - external_total_time_in_millis
      - listeners
      - total
      - total_time_in_millis
    _types.RequestCacheStats:
      type: object
      properties:
        evictions:
          type: number
        hit_count:
          type: number
        memory_size:
          type: string
        memory_size_in_bytes:
          type: number
        miss_count:
          type: number
      required:
      - evictions
      - hit_count
      - memory_size_in_bytes
      - miss_count
    _types.SearchStats:
      type: object
      properties:
        fetch_current:
          type: number
        fetch_time:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        fetch_time_in_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
        fetch_total:
          type: number
        open_contexts:
          type: number
        query_current:
          type: number
        query_time:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        query_time_in_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
        query_total:
          type: number
        scroll_current:
          type: number
        scroll_time:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        scroll_time_in_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
        scroll_total:
          type: number
        suggest_current:
          type: number
        suggest_time:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        suggest_time_in_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
        suggest_total:
          type: number
        recent_search_load:
          type: number
        groups:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/_types.SearchStats"
      required:
      - fetch_current
      - fetch_time_in_millis
      - fetch_total
      - query_current
      - query_time_in_millis
      - query_total
      - scroll_current
      - scroll_time_in_millis
      - scroll_total
      - suggest_current
      - suggest_time_in_millis
      - suggest_total
    _types.TranslogStats:
      type: object
      properties:
        earliest_last_modified_age:
          type: number
        operations:
          type: number
        size:
          type: string
        size_in_bytes:
          type: number
        uncommitted_operations:
          type: number
        uncommitted_size:
          type: string
        uncommitted_size_in_bytes:
          type: number
      required:
      - earliest_last_modified_age
      - operations
      - size_in_bytes
      - uncommitted_operations
      - uncommitted_size_in_bytes
    _types.WarmerStats:
      type: object
      properties:
        current:
          type: number
        total:
          type: number
        total_time:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        total_time_in_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
      required:
      - current
      - total
      - total_time_in_millis
    _types.BulkStats:
      type: object
      properties:
        total_operations:
          type: number
        total_time:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        total_time_in_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
        total_size:
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        total_size_in_bytes:
          type: number
        avg_time:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        avg_time_in_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
        avg_size:
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        avg_size_in_bytes:
          type: number
      required:
      - total_operations
      - total_time_in_millis
      - total_size_in_bytes
      - avg_time_in_millis
      - avg_size_in_bytes
    indices.stats.ShardsTotalStats:
      type: object
      properties:
        total_count:
          type: number
      required:
      - total_count
    indices.stats.ShardStats:
      type: object
      properties:
        commit:
          allOf:
          - "$ref": "#/components/schemas/indices.stats.ShardCommit"
        completion:
          allOf:
          - "$ref": "#/components/schemas/_types.CompletionStats"
        docs:
          allOf:
          - "$ref": "#/components/schemas/_types.DocStats"
        fielddata:
          allOf:
          - "$ref": "#/components/schemas/_types.FielddataStats"
        flush:
          allOf:
          - "$ref": "#/components/schemas/_types.FlushStats"
        get:
          allOf:
          - "$ref": "#/components/schemas/_types.GetStats"
        indexing:
          allOf:
          - "$ref": "#/components/schemas/_types.IndexingStats"
        mappings:
          allOf:
          - "$ref": "#/components/schemas/indices.stats.MappingStats"
        merges:
          allOf:
          - "$ref": "#/components/schemas/_types.MergesStats"
        shard_path:
          allOf:
          - "$ref": "#/components/schemas/indices.stats.ShardPath"
        query_cache:
          allOf:
          - "$ref": "#/components/schemas/indices.stats.ShardQueryCache"
        recovery:
          allOf:
          - "$ref": "#/components/schemas/_types.RecoveryStats"
        refresh:
          allOf:
          - "$ref": "#/components/schemas/_types.RefreshStats"
        request_cache:
          allOf:
          - "$ref": "#/components/schemas/_types.RequestCacheStats"
        retention_leases:
          allOf:
          - "$ref": "#/components/schemas/indices.stats.ShardRetentionLeases"
        routing:
          allOf:
          - "$ref": "#/components/schemas/indices.stats.ShardRouting"
        search:
          allOf:
          - "$ref": "#/components/schemas/_types.SearchStats"
        segments:
          allOf:
          - "$ref": "#/components/schemas/_types.SegmentsStats"
        seq_no:
          allOf:
          - "$ref": "#/components/schemas/indices.stats.ShardSequenceNumber"
        store:
          allOf:
          - "$ref": "#/components/schemas/_types.StoreStats"
        translog:
          allOf:
          - "$ref": "#/components/schemas/_types.TranslogStats"
        warmer:
          allOf:
          - "$ref": "#/components/schemas/_types.WarmerStats"
        bulk:
          allOf:
          - "$ref": "#/components/schemas/_types.BulkStats"
        shards:
          x-state: Generally available; Added in 7.15.0
          type: object
          additionalProperties:
            type: object
        shard_stats:
          allOf:
          - "$ref": "#/components/schemas/indices.stats.ShardsTotalStats"
        indices:
          allOf:
          - "$ref": "#/components/schemas/indices.stats.IndicesStats"
    indices.stats.ShardCommit:
      type: object
      properties:
        generation:
          type: number
        id:
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        num_docs:
          type: number
        user_data:
          type: object
          additionalProperties:
            type: string
      required:
      - generation
      - id
      - num_docs
      - user_data
    indices.stats.MappingStats:
      type: object
      properties:
        total_count:
          type: number
        total_estimated_overhead:
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        total_estimated_overhead_in_bytes:
          type: number
      required:
      - total_count
      - total_estimated_overhead_in_bytes
    indices.stats.ShardPath:
      type: object
      properties:
        data_path:
          type: string
        is_custom_data_path:
          type: boolean
        state_path:
          type: string
      required:
      - data_path
      - is_custom_data_path
      - state_path
    indices.stats.ShardQueryCache:
      type: object
      properties:
        cache_count:
          type: number
        cache_size:
          type: number
        evictions:
          type: number
        hit_count:
          type: number
        memory_size_in_bytes:
          type: number
        miss_count:
          type: number
        total_count:
          type: number
      required:
      - cache_count
      - cache_size
      - evictions
      - hit_count
      - memory_size_in_bytes
      - miss_count
      - total_count
    indices.stats.ShardRetentionLeases:
      type: object
      properties:
        primary_term:
          type: number
        version:
          allOf:
          - "$ref": "#/components/schemas/_types.VersionNumber"
        leases:
          type: array
          items:
            "$ref": "#/components/schemas/indices.stats.ShardLease"
      required:
      - primary_term
      - version
      - leases
    indices.stats.ShardLease:
      type: object
      properties:
        id:
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        retaining_seq_no:
          allOf:
          - "$ref": "#/components/schemas/_types.SequenceNumber"
        timestamp:
          type: number
        source:
          type: string
      required:
      - id
      - retaining_seq_no
      - timestamp
      - source
    indices.stats.ShardRouting:
      type: object
      properties:
        node:
          type: string
        primary:
          type: boolean
        relocating_node:
          oneOf:
          - type: string
          - nullable: true
            type: string
        state:
          allOf:
          - "$ref": "#/components/schemas/indices.stats.ShardRoutingState"
      required:
      - node
      - primary
      - state
    indices.stats.ShardRoutingState:
      type: string
      enum:
      - UNASSIGNED
      - INITIALIZING
      - STARTED
      - RELOCATING
    indices.stats.ShardSequenceNumber:
      type: object
      properties:
        global_checkpoint:
          type: number
        local_checkpoint:
          type: number
        max_seq_no:
          allOf:
          - "$ref": "#/components/schemas/_types.SequenceNumber"
      required:
      - global_checkpoint
      - local_checkpoint
      - max_seq_no
    indices.stats.IndexMetadataState:
      type: string
      enum:
      - open
      - close
    indices.update_aliases.Action:
      type: object
      properties:
        add:
          description: |-
            Adds a data stream or index to an alias.
            If the alias doesn’t exist, the `add` action creates it.
          allOf:
          - "$ref": "#/components/schemas/indices.update_aliases.AddAction"
        remove:
          description: Removes a data stream or index from an alias.
          allOf:
          - "$ref": "#/components/schemas/indices.update_aliases.RemoveAction"
        remove_index:
          description: |-
            Deletes an index.
            You cannot use this action on aliases or data streams.
          allOf:
          - "$ref": "#/components/schemas/indices.update_aliases.RemoveIndexAction"
      minProperties: 1
      maxProperties: 1
    indices.update_aliases.AddAction:
      type: object
      properties:
        alias:
          description: |-
            Alias for the action.
            Index alias names support date math.
          allOf:
          - "$ref": "#/components/schemas/_types.IndexAlias"
        aliases:
          description: |-
            Aliases for the action.
            Index alias names support date math.
          oneOf:
          - "$ref": "#/components/schemas/_types.IndexAlias"
          - type: array
            items:
              "$ref": "#/components/schemas/_types.IndexAlias"
        filter:
          description: Query used to limit documents the alias can access.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.QueryContainer"
        index:
          description: |-
            Data stream or index for the action.
            Supports wildcards (`*`).
          allOf:
          - "$ref": "#/components/schemas/_types.IndexName"
        indices:
          description: |-
            Data streams or indices for the action.
            Supports wildcards (`*`).
          allOf:
          - "$ref": "#/components/schemas/_types.Indices"
        index_routing:
          description: |-
            Value used to route indexing operations to a specific shard.
            If specified, this overwrites the `routing` value for indexing operations.
            Data stream aliases don’t support this parameter.
          type: string
        is_hidden:
          description: If `true`, the alias is hidden.
          default: false
          type: boolean
        is_write_index:
          description: If `true`, sets the write index or data stream for the alias.
          type: boolean
        routing:
          description: |-
            Value used to route indexing and search operations to a specific shard.
            Data stream aliases don’t support this parameter.
          type: string
        search_routing:
          description: |-
            Value used to route search operations to a specific shard.
            If specified, this overwrites the `routing` value for search operations.
            Data stream aliases don’t support this parameter.
          type: string
        must_exist:
          description: If `true`, the alias must exist to perform the action.
          default: false
          type: boolean
    indices.update_aliases.RemoveAction:
      type: object
      properties:
        alias:
          description: |-
            Alias for the action.
            Index alias names support date math.
          allOf:
          - "$ref": "#/components/schemas/_types.IndexAlias"
        aliases:
          description: |-
            Aliases for the action.
            Index alias names support date math.
          oneOf:
          - "$ref": "#/components/schemas/_types.IndexAlias"
          - type: array
            items:
              "$ref": "#/components/schemas/_types.IndexAlias"
        index:
          description: |-
            Data stream or index for the action.
            Supports wildcards (`*`).
          allOf:
          - "$ref": "#/components/schemas/_types.IndexName"
        indices:
          description: |-
            Data streams or indices for the action.
            Supports wildcards (`*`).
          allOf:
          - "$ref": "#/components/schemas/_types.Indices"
        must_exist:
          description: If `true`, the alias must exist to perform the action.
          default: false
          type: boolean
    indices.update_aliases.RemoveIndexAction:
      type: object
      properties:
        index:
          description: |-
            Data stream or index for the action.
            Supports wildcards (`*`).
          allOf:
          - "$ref": "#/components/schemas/_types.IndexName"
        indices:
          description: |-
            Data streams or indices for the action.
            Supports wildcards (`*`).
          allOf:
          - "$ref": "#/components/schemas/_types.Indices"
        must_exist:
          description: If `true`, the alias must exist to perform the action.
          default: false
          type: boolean
    indices.validate_query.IndicesValidationExplanation:
      type: object
      properties:
        error:
          type: string
        explanation:
          type: string
        index:
          allOf:
          - "$ref": "#/components/schemas/_types.IndexName"
        valid:
          type: boolean
      required:
      - index
      - valid
    inference._types.RequestChatCompletion:
      type: object
      properties:
        messages:
          description: |-
            A list of objects representing the conversation.
            Requests should generally only add new messages from the user (role `user`).
            The other message roles (`assistant`, `system`, or `tool`) should generally only be copied from the response to a previous completion request, such that the messages array is built up throughout a conversation.
          type: array
          items:
            "$ref": "#/components/schemas/inference._types.Message"
        model:
          description: The ID of the model to use. By default, the model ID is set
            to the value included when creating the inference endpoint.
          type: string
        max_completion_tokens:
          description: The upper bound limit for the number of tokens that can be
            generated for a completion request.
          type: number
        stop:
          description: A sequence of strings to control when the model should stop
            generating additional tokens.
          type: array
          items:
            type: string
        temperature:
          description: The sampling temperature to use.
          type: number
        tool_choice:
          description: |-
            Controls which tool is called by the model.
            String representation: One of `auto`, `none`, or `requrired`. `auto` allows the model to choose between calling tools and generating a message. `none` causes the model to not call any tools. `required` forces the model to call one or more tools.
            Example (object representation):
            ```
            {
              "tool_choice": {
                  "type": "function",
                  "function": {
                      "name": "get_current_weather"
                  }
              }
            }
            ```
          allOf:
          - "$ref": "#/components/schemas/inference._types.CompletionToolType"
        tools:
          description: |-
            A list of tools that the model can call.
            Example:
            ```
            {
              "tools": [
                  {
                      "type": "function",
                      "function": {
                          "name": "get_price_of_item",
                          "description": "Get the current price of an item",
                          "parameters": {
                              "type": "object",
                              "properties": {
                                  "item": {
                                      "id": "12345"
                                  },
                                  "unit": {
                                      "type": "currency"
                                  }
                              }
                          }
                      }
                  }
              ]
            }
            ```
          type: array
          items:
            "$ref": "#/components/schemas/inference._types.CompletionTool"
        top_p:
          description: Nucleus sampling, an alternative to sampling with temperature.
          type: number
      required:
      - messages
    inference._types.Message:
      description: An object representing part of the conversation.
      type: object
      properties:
        content:
          description: |-
            The content of the message.

            String example:
            ```
            {
               "content": "Some string"
            }
            ```

            Object example:
            ```
            {
              "content": [
                  {
                   "text": "Some text",
                   "type": "text"
                  }
               ]
            }
            ```
          allOf:
          - "$ref": "#/components/schemas/inference._types.MessageContent"
        role:
          description: The role of the message author. Valid values are `user`, `assistant`,
            `system`, and `tool`.
          type: string
        tool_call_id:
          description: Only for `tool` role messages. The tool call that this message
            is responding to.
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        tool_calls:
          description: |-
            Only for `assistant` role messages. The tool calls generated by the model. If it's specified, the `content` field is optional.
            Example:
            ```
            {
              "tool_calls": [
                  {
                      "id": "call_KcAjWtAww20AihPHphUh46Gd",
                      "type": "function",
                      "function": {
                          "name": "get_current_weather",
                          "arguments": "{\"location\":\"Boston, MA\"}"
                      }
                  }
              ]
            }
            ```
          type: array
          items:
            "$ref": "#/components/schemas/inference._types.ToolCall"
      required:
      - role
    inference._types.MessageContent:
      oneOf:
      - type: string
      - type: array
        items:
          "$ref": "#/components/schemas/inference._types.ContentObject"
    inference._types.ContentObject:
      description: An object style representation of a single portion of a conversation.
      type: object
      properties:
        text:
          description: The text content.
          type: string
        type:
          description: The type of content.
          type: string
      required:
      - text
      - type
    inference._types.ToolCall:
      description: A tool call generated by the model.
      type: object
      properties:
        id:
          description: The identifier of the tool call.
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        function:
          description: The function that the model called.
          allOf:
          - "$ref": "#/components/schemas/inference._types.ToolCallFunction"
        type:
          description: The type of the tool call.
          type: string
      required:
      - id
      - function
      - type
    inference._types.ToolCallFunction:
      description: The function that the model called.
      type: object
      properties:
        arguments:
          description: The arguments to call the function with in JSON format.
          type: string
        name:
          description: The name of the function to call.
          type: string
      required:
      - arguments
      - name
    inference._types.CompletionToolType:
      oneOf:
      - type: string
      - "$ref": "#/components/schemas/inference._types.CompletionToolChoice"
    inference._types.CompletionToolChoice:
      description: Controls which tool is called by the model.
      type: object
      properties:
        type:
          description: The type of the tool.
          type: string
        function:
          description: The tool choice function.
          allOf:
          - "$ref": "#/components/schemas/inference._types.CompletionToolChoiceFunction"
      required:
      - type
      - function
    inference._types.CompletionToolChoiceFunction:
      description: The tool choice function.
      type: object
      properties:
        name:
          description: The name of the function to call.
          type: string
      required:
      - name
    inference._types.CompletionTool:
      description: A list of tools that the model can call.
      type: object
      properties:
        type:
          description: The type of tool.
          type: string
        function:
          description: The function definition.
          allOf:
          - "$ref": "#/components/schemas/inference._types.CompletionToolFunction"
      required:
      - type
      - function
    inference._types.CompletionToolFunction:
      description: The completion tool function definition.
      type: object
      properties:
        description:
          description: |-
            A description of what the function does.
            This is used by the model to choose when and how to call the function.
          type: string
        name:
          description: The name of the function.
          type: string
        parameters:
          description: The parameters the functional accepts. This should be formatted
            as a JSON object.
          type: object
        strict:
          description: Whether to enable schema adherence when generating the function
            call.
          type: boolean
      required:
      - name
    _types.StreamResult:
      type: object
    inference._types.TaskSettings:
      type: object
    inference._types.CompletionInferenceResult:
      description: Defines the completion result.
      type: object
      properties:
        completion:
          type: array
          items:
            "$ref": "#/components/schemas/inference._types.CompletionResult"
      required:
      - completion
    inference._types.CompletionResult:
      description: The completion result object
      type: object
      properties:
        result:
          type: string
      required:
      - result
    inference._types.TaskType:
      type: string
      enum:
      - sparse_embedding
      - text_embedding
      - rerank
      - completion
      - chat_completion
      - embedding
    inference._types.DeleteInferenceEndpointResult:
      description: Acknowledged response. For dry_run, contains the list of pipelines
        which reference the inference endpoint
      allOf:
      - "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
      - type: object
        properties:
          pipelines:
            type: array
            items:
              type: string
        required:
        - pipelines
    inference._types.RequestEmbedding:
      type: object
      properties:
        input:
          description: |-
            Inference input.
            Either a string, an array of strings, a `content` object, or an array of `content` objects.

            string example:
            ```
            "input": "Some text"
            ```
            string array example:
            ```
            "input": ["Some text", "Some more text"]
            ```
            `content` object example:
            ```
            "input": {
                "content": {
                  "type": "image",
                  "format": "base64",
                  "value": "data:image/jpg;base64,..."
                }
              }
            ```
            `content` object array example:
            ```
            "input": [
              {
                "content": {
                  "type": "text",
                  "format": "text",
                  "value": "Some text to generate an embedding"
                }
              },
              {
                "content": {
                  "type": "image",
                  "format": "base64",
                  "value": "data:image/jpg;base64,..."
                }
              }
            ]
            ```
          allOf:
          - "$ref": "#/components/schemas/inference._types.EmbeddingInput"
        input_type:
          description: |-
            The input data type for the embedding model. Possible values include:
            * `SEARCH`
            * `INGEST`
            * `CLASSIFICATION`
            * `CLUSTERING`

            Not all models support all values. Unsupported values will trigger a validation exception.
            Accepted values depend on the configured inference service, refer to the relevant service-specific documentation for more info.

            > info
            > The `input_type` parameter specified on the root level of the request body will take precedence over the `input_type` parameter specified in `task_settings`.
          type: string
        task_settings:
          description: Task settings for the individual inference request. These settings
            are specific to the <task_type> you specified and override the task settings
            specified when initializing the service.
          allOf:
          - "$ref": "#/components/schemas/inference._types.TaskSettings"
      required:
      - input
    inference._types.EmbeddingInput:
      description: |-
        Inference input.
        Either a string, an array of strings, a `content` object, or an array of `content` objects.
      oneOf:
      - "$ref": "#/components/schemas/inference._types.EmbeddingStringInput"
      - "$ref": "#/components/schemas/inference._types.EmbeddingContentInput"
    inference._types.EmbeddingStringInput:
      description: Allows specifying text-only inputs for the `embedding` task.
      oneOf:
      - type: string
      - type: array
        items:
          type: string
    inference._types.EmbeddingContentInput:
      description: Allows specifying multimodal inputs for the `embedding` task.
      oneOf:
      - "$ref": "#/components/schemas/inference._types.EmbeddingContentObject"
      - type: array
        items:
          "$ref": "#/components/schemas/inference._types.EmbeddingContentObject"
    inference._types.EmbeddingContentObject:
      description: A wrapper object which contains the fields required to specify
        multimodal inputs
      type: object
      properties:
        content:
          description: An object containing the input data for the model to embed
          allOf:
          - "$ref": "#/components/schemas/inference._types.EmbeddingContentObjectContents"
      required:
      - content
    inference._types.EmbeddingContentObjectContents:
      description: An object containing the input data for the model to embed.
      type: object
      properties:
        type:
          description: The type of input to embed.
          allOf:
          - "$ref": "#/components/schemas/inference._types.EmbeddingContentType"
        format:
          description: The format of the input. For the `text` type this defaults
            to `text`. For the `image` type, this defaults to `base64`.
          allOf:
          - "$ref": "#/components/schemas/inference._types.EmbeddingContentFormat"
        value:
          description: The value of the input to embed.
          type: string
      required:
      - type
      - value
    inference._types.EmbeddingContentType:
      type: string
      enum:
      - text
      - image
    inference._types.EmbeddingContentFormat:
      type: string
      enum:
      - text
      - base64
    inference._types.EmbeddingInferenceResult:
      description: EmbeddingInferenceResult is an aggregation of mutually exclusive
        embeddings variants
      type: object
      properties:
        embeddings_bytes:
          type: array
          items:
            "$ref": "#/components/schemas/inference._types.DenseEmbeddingByteResult"
        embeddings_bits:
          type: array
          items:
            "$ref": "#/components/schemas/inference._types.DenseEmbeddingByteResult"
        embeddings:
          type: array
          items:
            "$ref": "#/components/schemas/inference._types.DenseEmbeddingResult"
      minProperties: 1
      maxProperties: 1
    inference._types.DenseEmbeddingByteResult:
      description: The dense embedding result object for byte representation
      type: object
      properties:
        embedding:
          allOf:
          - "$ref": "#/components/schemas/inference._types.DenseByteVector"
      required:
      - embedding
    inference._types.DenseByteVector:
      description: |-
        Dense Embedding results containing bytes are represented as Dense
        Vectors of bytes.
      type: array
      items:
        "$ref": "#/components/schemas/_types.byte"
    inference._types.DenseEmbeddingResult:
      description: The dense embedding result object for float representation
      type: object
      properties:
        embedding:
          allOf:
          - "$ref": "#/components/schemas/inference._types.DenseVector"
      required:
      - embedding
    inference._types.DenseVector:
      description: |-
        Dense Embedding results are represented as Dense Vectors
        of floats.
      type: array
      items:
        type: number
    inference._types.InferenceEndpointInfo:
      description: Represents an inference endpoint as returned by the GET API
      allOf:
      - "$ref": "#/components/schemas/inference._types.InferenceEndpoint"
      - type: object
        properties:
          inference_id:
            description: The inference Id
            type: string
          task_type:
            description: The task type
            allOf:
            - "$ref": "#/components/schemas/inference._types.TaskType"
        required:
        - inference_id
        - task_type
    inference._types.InferenceEndpoint:
      description: Configuration options when storing the inference endpoint
      type: object
      properties:
        chunking_settings:
          description: |-
            The chunking configuration object.
            Applies only to the `embedding`, `sparse_embedding` and `text_embedding` task types.
            Not applicable to the `rerank`, `completion`, or `chat_completion` task types.
          allOf:
          - "$ref": "#/components/schemas/inference._types.InferenceChunkingSettings"
        service:
          description: The service type
          type: string
        service_settings:
          description: Settings specific to the service
          allOf:
          - "$ref": "#/components/schemas/inference._types.ServiceSettings"
        task_settings:
          description: Task settings specific to the service and task type
          allOf:
          - "$ref": "#/components/schemas/inference._types.TaskSettings"
      required:
      - service
      - service_settings
    inference._types.InferenceChunkingSettings:
      description: Chunking configuration object
      type: object
      properties:
        max_chunk_size:
          description: |-
            The maximum size of a chunk in words.
            This value cannot be lower than `20` (for `sentence` strategy) or `10` (for `word` strategy).
            This value should not exceed the window size for the associated model.
          default: 250
          type: number
        overlap:
          description: |-
            The number of overlapping words for chunks.
            It is applicable only to a `word` chunking strategy.
            This value cannot be higher than half the `max_chunk_size` value.
          default: 100
          type: number
        sentence_overlap:
          description: |-
            The number of overlapping sentences for chunks.
            It is applicable only for a `sentence` chunking strategy.
            It can be either `1` or `0`.
          default: 1
          type: number
        separator_group:
          description: |-
            Only applicable to the `recursive` strategy and required when using it.

            Sets a predefined list of separators in the saved chunking settings based on the selected text type.
            Values can be `markdown` or `plaintext`.

            Using this parameter is an alternative to manually specifying a custom `separators` list.
          type: string
        separators:
          description: |-
            Only applicable to the `recursive` strategy and required when using it.

            A list of strings used as possible split points when chunking text.

            Each string can be a plain string or a regular expression (regex) pattern.
            The system tries each separator in order to split the text, starting from the first item in the list.

            After splitting, it attempts to recombine smaller pieces into larger chunks that stay within
            the `max_chunk_size` limit, to reduce the total number of chunks generated.
          type: array
          items:
            type: string
        strategy:
          externalDocs:
            url: https://www.elastic.co/docs/explore-analyze/elastic-inference/inference-api#chunking-strategies
          description: |-
            The chunking strategy: `sentence`, `word`, `none` or `recursive`.

             * If `strategy` is set to `recursive`, you must also specify:

            - `max_chunk_size`
            - either `separators` or`separator_group`

            Learn more about different chunking strategies in the linked documentation.
          default: sentence
          type: string
    inference._types.ServiceSettings:
      type: object
    inference._types.InferenceResult:
      description: InferenceResult is an aggregation of mutually exclusive variants
      type: object
      properties:
        embeddings_bytes:
          type: array
          items:
            "$ref": "#/components/schemas/inference._types.DenseEmbeddingByteResult"
        embeddings_bits:
          type: array
          items:
            "$ref": "#/components/schemas/inference._types.DenseEmbeddingByteResult"
        embeddings:
          type: array
          items:
            "$ref": "#/components/schemas/inference._types.DenseEmbeddingResult"
        text_embedding_bytes:
          type: array
          items:
            "$ref": "#/components/schemas/inference._types.DenseEmbeddingByteResult"
        text_embedding_bits:
          type: array
          items:
            "$ref": "#/components/schemas/inference._types.DenseEmbeddingByteResult"
        text_embedding:
          type: array
          items:
            "$ref": "#/components/schemas/inference._types.DenseEmbeddingResult"
        sparse_embedding:
          type: array
          items:
            "$ref": "#/components/schemas/inference._types.SparseEmbeddingResult"
        completion:
          type: array
          items:
            "$ref": "#/components/schemas/inference._types.CompletionResult"
        rerank:
          type: array
          items:
            "$ref": "#/components/schemas/inference._types.RankedDocument"
      minProperties: 1
      maxProperties: 1
    inference._types.SparseEmbeddingResult:
      type: object
      properties:
        is_truncated:
          description: Indicates if the text input was truncated in the request sent
            to the service
          type: boolean
        embedding:
          allOf:
          - "$ref": "#/components/schemas/inference._types.SparseVector"
      required:
      - is_truncated
      - embedding
    inference._types.SparseVector:
      description: |-
        Sparse Embedding tokens are represented as a dictionary
        of string to double.
      type: object
      additionalProperties:
        type: number
    inference._types.RankedDocument:
      description: |-
        The rerank result object representing a single ranked document
        id: the original index of the document in the request
        relevance_score: the relevance_score of the document relative to the query
        text: Optional, the text of the document, if requested
      type: object
      properties:
        index:
          type: number
        relevance_score:
          type: number
        text:
          type: string
      required:
      - index
      - relevance_score
    inference._types.Ai21TaskType:
      type: string
      enum:
      - completion
      - chat_completion
    inference._types.Ai21ServiceType:
      type: string
      enum:
      - ai21
    inference._types.Ai21ServiceSettings:
      type: object
      properties:
        model_id:
          externalDocs:
            url: https://docs.ai21.com/docs/jamba-foundation-models
          description: |-
            The name of the model to use for the inference task.
            Refer to the AI21 models documentation for the list of supported models and versions.
            Service has been tested and confirmed to be working for `completion` and `chat_completion` tasks with the following models:
            * `jamba-mini`
            * `jamba-large`
          type: string
        api_key:
          description: |-
            A valid API key for accessing AI21 API.

            IMPORTANT: You need to provide the API key only once, during the inference model creation.
            The get inference endpoint API does not retrieve your API key.
          type: string
        rate_limit:
          externalDocs:
            url: https://docs.ai21.com/reference/api-rate-limits
          description: |-
            This setting helps to minimize the number of rate limit errors returned from the AI21 API.
            By default, the `ai21` service sets the number of requests allowed per minute to 200. Please refer to AI21 documentation for more details.
          allOf:
          - "$ref": "#/components/schemas/inference._types.RateLimitSetting"
      required:
      - model_id
    inference._types.RateLimitSetting:
      description: This setting helps to minimize the number of rate limit errors
        returned from the service.
      type: object
      properties:
        requests_per_minute:
          description: |-
            The number of requests allowed per minute.
            By default, the number of requests allowed per minute is set by each service as follows:

            * `alibabacloud-ai-search` service: `1000`
            * `amazonbedrock` service: `240`
            * `anthropic` service: `50`
            * `azureaistudio` service: `240`
            * `azureopenai` service and task type `text_embedding`: `1440`
            * `azureopenai` service and task types `completion` or `chat_completion`: `120`
            * `cohere` service: `10000`
            * `contextualai` service: `1000`
            * `elastic` service and task type `chat_completion`: `240`
            * `googleaistudio` service: `360`
            * `googlevertexai` service: `30000`
            * `hugging_face` service: `3000`
            * `jinaai` service: `2000`
            * `llama` service: `3000`
            * `mistral` service: `240`
            * `openai` service and task type `text_embedding`: `3000`
            * `openai` service and task type `completion`: `500`
            * `openshift_ai` service: `3000`
            * `voyageai` service: `2000`
            * `watsonxai` service: `120`
          type: number
    inference._types.InferenceEndpointInfoAi21:
      allOf:
      - "$ref": "#/components/schemas/inference._types.InferenceEndpoint"
      - type: object
        properties:
          inference_id:
            description: The inference Id
            type: string
          task_type:
            description: The task type
            allOf:
            - "$ref": "#/components/schemas/inference._types.TaskTypeAi21"
        required:
        - inference_id
        - task_type
    inference._types.TaskTypeAi21:
      type: string
      enum:
      - completion
      - chat_completion
    inference._types.AlibabaCloudTaskType:
      type: string
      enum:
      - completion
      - rerank
      - sparse_embedding
      - text_embedding
    inference._types.AlibabaCloudServiceType:
      type: string
      enum:
      - alibabacloud-ai-search
    inference._types.AlibabaCloudServiceSettings:
      type: object
      properties:
        api_key:
          description: A valid API key for the AlibabaCloud AI Search API.
          type: string
        host:
          externalDocs:
            url: https://opensearch.console.aliyun.com/cn-shanghai/rag/api-key
          description: |-
            The name of the host address used for the inference task.
            You can find the host address in the API keys section of the documentation.
          type: string
        rate_limit:
          description: |-
            This setting helps to minimize the number of rate limit errors returned from AlibabaCloud AI Search.
            By default, the `alibabacloud-ai-search` service sets the number of requests allowed per minute to `1000`.
          allOf:
          - "$ref": "#/components/schemas/inference._types.RateLimitSetting"
        service_id:
          description: |-
            The name of the model service to use for the inference task.
            The following service IDs are available for the `completion` task:

            * `ops-qwen-turbo`
            * `qwen-turbo`
            * `qwen-plus`
            * `qwen-max ÷ qwen-max-longcontext`

            The following service ID is available for the `rerank` task:

            * `ops-bge-reranker-larger`

            The following service ID is available for the `sparse_embedding` task:

            * `ops-text-sparse-embedding-001`

            The following service IDs are available for the `text_embedding` task:

            `ops-text-embedding-001`
            `ops-text-embedding-zh-001`
            `ops-text-embedding-en-001`
            `ops-text-embedding-002`
          type: string
        workspace:
          description: The name of the workspace used for the inference task.
          type: string
      required:
      - api_key
      - host
      - service_id
      - workspace
    inference._types.AlibabaCloudTaskSettings:
      type: object
      properties:
        input_type:
          description: |-
            For a `sparse_embedding` or `text_embedding` task, specify the type of input passed to the model.
            Valid values are:

            * `ingest` for storing document embeddings in a vector database.
            * `search` for storing embeddings of search queries run against a vector database to find relevant documents.
          type: string
        return_token:
          description: |-
            For a `sparse_embedding` task, it affects whether the token name will be returned in the response.
            It defaults to `false`, which means only the token ID will be returned in the response.
          type: boolean
    inference._types.InferenceEndpointInfoAlibabaCloudAI:
      allOf:
      - "$ref": "#/components/schemas/inference._types.InferenceEndpoint"
      - type: object
        properties:
          inference_id:
            description: The inference Id
            type: string
          task_type:
            description: The task type
            allOf:
            - "$ref": "#/components/schemas/inference._types.TaskTypeAlibabaCloudAI"
        required:
        - inference_id
        - task_type
    inference._types.TaskTypeAlibabaCloudAI:
      type: string
      enum:
      - text_embedding
      - rerank
      - completion
      - sparse_embedding
    inference._types.AmazonBedrockTaskType:
      type: string
      enum:
      - chat_completion
      - completion
      - text_embedding
    inference._types.AmazonBedrockServiceType:
      type: string
      enum:
      - amazonbedrock
    inference._types.AmazonBedrockServiceSettings:
      type: object
      properties:
        access_key:
          description: A valid AWS access key that has permissions to use Amazon Bedrock
            and access to models for inference requests.
          type: string
        model:
          externalDocs:
            url: https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html
          description: |-
            The base model ID or an ARN to a custom model based on a foundational model.
            The base model IDs can be found in the Amazon Bedrock documentation.
            Note that the model ID must be available for the provider chosen and your IAM user must have access to the model.
          type: string
        provider:
          description: |-
            The model provider for your deployment.
            Note that some providers may support only certain task types.
            Supported providers include:

            * `amazontitan` - available for `text_embedding` and `completion` task types
            * `anthropic` - available for `chat_completion` and `completion` task types
            * `ai21labs` - available for `chat_completion` and `completion` task types
            * `cohere` - available for `chat_completion`, `completion` and `text_embedding` task types
            * `meta` - available for `chat_completion` and `completion` task types
            * `mistral` - available for `chat_completion` and `completion` task types
          type: string
        region:
          externalDocs:
            url: https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html
          description: |-
            The region that your model or ARN is deployed in.
            The list of available regions per model can be found in the Amazon Bedrock documentation.
          type: string
        rate_limit:
          description: |-
            This setting helps to minimize the number of rate limit errors returned from Amazon Bedrock.
            By default, the `amazonbedrock` service sets the number of requests allowed per minute to 240.
          allOf:
          - "$ref": "#/components/schemas/inference._types.RateLimitSetting"
        secret_key:
          externalDocs:
            url: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html
          description: |-
            A valid AWS secret key that is paired with the `access_key`.
            For informationg about creating and managing access and secret keys, refer to the AWS documentation.
          type: string
      required:
      - access_key
      - model
      - region
      - secret_key
    inference._types.AmazonBedrockTaskSettings:
      type: object
      properties:
        max_new_tokens:
          description: For `chat_completion` and `completion` tasks, it sets the maximum
            number for the output tokens to be generated.
          default: 64
          type: number
        temperature:
          description: |-
            For `chat_completion` and `completion` tasks, it is a number between 0.0 and 1.0 that controls the apparent creativity of the results.
            At temperature 0.0 the model is most deterministic, at temperature 1.0 most random.
            It should not be used if `top_p` or `top_k` is specified.
          type: number
        top_k:
          description: |-
            For `chat_completion` and `completion` tasks, it limits samples to the top-K most likely words, balancing coherence and variability.
            It is only available for anthropic, cohere, and mistral providers.
            It is an alternative to `temperature`; it should not be used if `temperature` is specified.
          type: number
        top_p:
          description: |-
            For `chat_completion` and `completion` tasks, it is a number in the range of 0.0 to 1.0, to eliminate low-probability tokens.
            Top-p uses nucleus sampling to select top tokens whose sum of likelihoods does not exceed a certain value, ensuring both variety and coherence.
            It is an alternative to `temperature`; it should not be used if `temperature` is specified.
          type: number
    inference._types.InferenceEndpointInfoAmazonBedrock:
      allOf:
      - "$ref": "#/components/schemas/inference._types.InferenceEndpoint"
      - type: object
        properties:
          inference_id:
            description: The inference Id
            type: string
          task_type:
            description: The task type
            allOf:
            - "$ref": "#/components/schemas/inference._types.TaskTypeAmazonBedrock"
        required:
        - inference_id
        - task_type
    inference._types.TaskTypeAmazonBedrock:
      type: string
      enum:
      - chat_completion
      - completion
      - text_embedding
    inference._types.TaskTypeAmazonSageMaker:
      type: string
      enum:
      - text_embedding
      - completion
      - chat_completion
      - sparse_embedding
      - rerank
    inference._types.AmazonSageMakerServiceType:
      type: string
      enum:
      - amazon_sagemaker
    inference._types.AmazonSageMakerServiceSettings:
      type: object
      properties:
        access_key:
          description: A valid AWS access key that has permissions to use Amazon SageMaker
            and access to models for invoking requests.
          type: string
        endpoint_name:
          externalDocs:
            url: https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_runtime_InvokeEndpoint.html
          description: The name of the SageMaker endpoint.
          type: string
        api:
          description: |-
            The API format to use when calling SageMaker.
            Elasticsearch will convert the POST _inference request to this data format when invoking the SageMaker endpoint.
          allOf:
          - "$ref": "#/components/schemas/inference._types.AmazonSageMakerApi"
        region:
          externalDocs:
            url: https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_runtime_InvokeEndpoint.html
          description: |-
            The region that your endpoint or Amazon Resource Name (ARN) is deployed in.
            The list of available regions per model can be found in the Amazon SageMaker documentation.
          type: string
        secret_key:
          externalDocs:
            url: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html
          description: |-
            A valid AWS secret key that is paired with the `access_key`.
            For information about creating and managing access and secret keys, refer to the AWS documentation.
          type: string
        target_model:
          externalDocs:
            url: https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_runtime_InvokeEndpoint.html
          description: The model ID when calling a multi-model endpoint.
          type: string
        target_container_hostname:
          externalDocs:
            url: https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_runtime_InvokeEndpoint.html
          description: The container to directly invoke when calling a multi-container
            endpoint.
          type: string
        inference_component_name:
          externalDocs:
            url: https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_runtime_InvokeEndpoint.html
          description: The inference component to directly invoke when calling a multi-component
            endpoint.
          type: string
        batch_size:
          description: |-
            The maximum number of inputs in each batch. This value is used by inference ingestion pipelines
            when processing semantic values. It correlates to the number of times the SageMaker endpoint is
            invoked (one per batch of input).
          default: 256
          type: number
        dimensions:
          description: |-
            The number of dimensions returned by the text embedding models. If this value is not provided, then
            it is guessed by making invoking the endpoint for the `text_embedding` task.
          type: number
      required:
      - access_key
      - endpoint_name
      - api
      - region
      - secret_key
    inference._types.AmazonSageMakerApi:
      type: string
      enum:
      - openai
      - elastic
    inference._types.AmazonSageMakerTaskSettings:
      type: object
      properties:
        custom_attributes:
          externalDocs:
            url: https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_runtime_InvokeEndpoint.html
          description: |-
            The AWS custom attributes passed verbatim through to the model running in the SageMaker Endpoint.
            Values will be returned in the `X-elastic-sagemaker-custom-attributes` header.
          type: string
        enable_explanations:
          externalDocs:
            url: https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_runtime_InvokeEndpoint.html
          description: The optional JMESPath expression used to override the EnableExplanations
            provided during endpoint creation.
          type: string
        inference_id:
          externalDocs:
            url: https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_runtime_InvokeEndpoint.html
          description: The capture data ID when enabled in the endpoint.
          type: string
        session_id:
          externalDocs:
            url: https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_runtime_InvokeEndpoint.html
          description: |-
            The stateful session identifier for a new or existing session.
            New sessions will be returned in the `X-elastic-sagemaker-new-session-id` header.
            Closed sessions will be returned in the `X-elastic-sagemaker-closed-session-id` header.
          type: string
        target_variant:
          externalDocs:
            url: https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_runtime_InvokeEndpoint.html
          description: Specifies the variant when running with multi-variant Endpoints.
          type: string
    inference._types.InferenceEndpointInfoAmazonSageMaker:
      allOf:
      - "$ref": "#/components/schemas/inference._types.InferenceEndpoint"
      - type: object
        properties:
          inference_id:
            description: The inference Id
            type: string
          task_type:
            description: The task type
            allOf:
            - "$ref": "#/components/schemas/inference._types.TaskTypeAmazonSageMaker"
        required:
        - inference_id
        - task_type
    inference._types.AnthropicTaskType:
      type: string
      enum:
      - completion
    inference._types.AnthropicServiceType:
      type: string
      enum:
      - anthropic
    inference._types.AnthropicServiceSettings:
      type: object
      properties:
        api_key:
          description: A valid API key for the Anthropic API.
          type: string
        model_id:
          description: |-
            The name of the model to use for the inference task.
            Refer to the Anthropic documentation for the list of supported models.
          type: string
        rate_limit:
          description: |-
            This setting helps to minimize the number of rate limit errors returned from Anthropic.
            By default, the `anthropic` service sets the number of requests allowed per minute to 50.
          allOf:
          - "$ref": "#/components/schemas/inference._types.RateLimitSetting"
      required:
      - api_key
      - model_id
    inference._types.AnthropicTaskSettings:
      type: object
      properties:
        max_tokens:
          description: For a `completion` task, it is the maximum number of tokens
            to generate before stopping.
          type: number
        temperature:
          externalDocs:
            url: https://docs.anthropic.com/en/api/messages
          description: |-
            For a `completion` task, it is the amount of randomness injected into the response.
            For more details about the supported range, refer to Anthropic documentation.
          type: number
        top_k:
          description: |-
            For a `completion` task, it specifies to only sample from the top K options for each subsequent token.
            It is recommended for advanced use cases only.
            You usually only need to use `temperature`.
          type: number
        top_p:
          description: |-
            For a `completion` task, it specifies to use Anthropic's nucleus sampling.
            In nucleus sampling, Anthropic computes the cumulative distribution over all the options for each subsequent token in decreasing probability order and cuts it off once it reaches the specified probability.
            You should either alter `temperature` or `top_p`, but not both.
            It is recommended for advanced use cases only.
            You usually only need to use `temperature`.
          type: number
      required:
      - max_tokens
    inference._types.InferenceEndpointInfoAnthropic:
      allOf:
      - "$ref": "#/components/schemas/inference._types.InferenceEndpoint"
      - type: object
        properties:
          inference_id:
            description: The inference Id
            type: string
          task_type:
            description: The task type
            allOf:
            - "$ref": "#/components/schemas/inference._types.TaskTypeAnthropic"
        required:
        - inference_id
        - task_type
    inference._types.TaskTypeAnthropic:
      type: string
      enum:
      - completion
    inference._types.AzureAiStudioTaskType:
      type: string
      enum:
      - completion
      - rerank
      - text_embedding
    inference._types.AzureAiStudioServiceType:
      type: string
      enum:
      - azureaistudio
    inference._types.AzureAiStudioServiceSettings:
      type: object
      properties:
        api_key:
          externalDocs:
            url: https://ai.azure.com/
          description: |-
            A valid API key of your Azure AI Studio model deployment.
            This key can be found on the overview page for your deployment in the management section of your Azure AI Studio account.

            IMPORTANT: You need to provide the API key only once, during the inference model creation.
            The get inference endpoint API does not retrieve your API key.
          type: string
        endpoint_type:
          externalDocs:
            url: https://learn.microsoft.com/en-us/azure/ai-foundry/concepts/deployments-overview#billing-for-deploying-and-inferencing-llms-in-azure-ai-studio
          description: |-
            The type of endpoint that is available for deployment through Azure AI Studio: `token` or `realtime`.
            The `token` endpoint type is for "pay as you go" endpoints that are billed per token.
            The `realtime` endpoint type is for "real-time" endpoints that are billed per hour of usage.
          type: string
        target:
          description: |-
            The target URL of your Azure AI Studio model deployment.
            This can be found on the overview page for your deployment in the management section of your Azure AI Studio account.
          type: string
        provider:
          description: |-
            The model provider for your deployment.
            Note that some providers may support only certain task types.
            Supported providers include:

            * `cohere` - available for `text_embedding`, `rerank` and `completion` task types
            * `databricks` - available for `completion` task type only
            * `meta` - available for `completion` task type only
            * `microsoft_phi` - available for `completion` task type only
            * `mistral` - available for `completion` task type only
            * `openai` - available for `text_embedding` and `completion` task types
          type: string
        rate_limit:
          description: |-
            This setting helps to minimize the number of rate limit errors returned from Azure AI Studio.
            By default, the `azureaistudio` service sets the number of requests allowed per minute to 240.
          allOf:
          - "$ref": "#/components/schemas/inference._types.RateLimitSetting"
      required:
      - api_key
      - endpoint_type
      - target
      - provider
    inference._types.AzureAiStudioTaskSettings:
      type: object
      properties:
        do_sample:
          description: |-
            For a `completion` task, instruct the inference process to perform sampling.
            It has no effect unless `temperature` or `top_p` is specified.
          type: number
        max_new_tokens:
          description: For a `completion` task, provide a hint for the maximum number
            of output tokens to be generated.
          default: 64
          type: number
        temperature:
          description: |-
            For a `completion` task, control the apparent creativity of generated completions with a sampling temperature.
            It must be a number in the range of 0.0 to 2.0.
            It should not be used if `top_p` is specified.
          type: number
        top_p:
          description: |-
            For a `completion` task, make the model consider the results of the tokens with nucleus sampling probability.
            It is an alternative value to `temperature` and must be a number in the range of 0.0 to 2.0.
            It should not be used if `temperature` is specified.
          type: number
        user:
          description: |-
            For a `text_embedding` task, specify the user issuing the request.
            This information can be used for abuse detection.
          type: string
        return_documents:
          description: For a `rerank` task, return doc text within the results.
          type: boolean
        top_n:
          description: |-
            For a `rerank` task, the number of most relevant documents to return.
            It defaults to the number of the documents.
          type: number
    inference._types.InferenceEndpointInfoAzureAIStudio:
      allOf:
      - "$ref": "#/components/schemas/inference._types.InferenceEndpoint"
      - type: object
        properties:
          inference_id:
            description: The inference Id
            type: string
          task_type:
            description: The task type
            allOf:
            - "$ref": "#/components/schemas/inference._types.TaskTypeAzureAIStudio"
        required:
        - inference_id
        - task_type
    inference._types.TaskTypeAzureAIStudio:
      type: string
      enum:
      - text_embedding
      - completion
      - rerank
    inference._types.AzureOpenAITaskType:
      type: string
      enum:
      - completion
      - chat_completion
      - text_embedding
    inference._types.AzureOpenAIServiceType:
      type: string
      enum:
      - azureopenai
    inference._types.AzureOpenAIServiceSettings:
      type: object
      properties:
        api_key:
          externalDocs:
            url: https://learn.microsoft.com/en-us/azure/ai-services/openai/reference#authentication
          description: |-
            A valid API key for your Azure OpenAI account.
            You must specify either `api_key` or `entra_id`.
            If you do not provide either or you provide both, you will receive an error when you try to create your model.

            IMPORTANT: You need to provide the API key only once, during the inference model creation.
            The get inference endpoint API does not retrieve your API key.
          type: string
        api_version:
          description: |-
            The Azure API version ID to use.
            It is recommended to use the latest supported non-preview version.
          type: string
        deployment_id:
          externalDocs:
            url: https://oai.azure.com/
          description: |-
            The deployment name of your deployed models.
            Your Azure OpenAI deployments can be found though the Azure OpenAI Studio portal that is linked to your subscription.
          type: string
        entra_id:
          externalDocs:
            url: https://learn.microsoft.com/en-us/azure/ai-services/openai/reference#authentication
          description: |-
            A valid Microsoft Entra token.
            You must specify either `api_key` or `entra_id`.
            If you do not provide either or you provide both, you will receive an error when you try to create your model.
          type: string
        rate_limit:
          externalDocs:
            url: https://learn.microsoft.com/en-us/azure/ai-services/openai/quotas-limits
          description: |-
            This setting helps to minimize the number of rate limit errors returned from Azure.
            The `azureopenai` service sets a default number of requests allowed per minute depending on the task type.
            For `text_embedding`, it is set to `1440`.
            For `completion` and `chat_completion`, it is set to `120`.
          allOf:
          - "$ref": "#/components/schemas/inference._types.RateLimitSetting"
        resource_name:
          externalDocs:
            url: https://portal.azure.com/#view/HubsExtension/BrowseAll
          description: |-
            The name of your Azure OpenAI resource.
            You can find this from the list of resources in the Azure Portal for your subscription.
          type: string
      required:
      - api_version
      - deployment_id
      - resource_name
    inference._types.AzureOpenAITaskSettings:
      type: object
      properties:
        user:
          description: |-
            For a `completion`, `chat_completion` or `text_embedding` task, specify the user issuing the request.
            This information can be used for abuse detection.
          type: string
    inference._types.InferenceEndpointInfoAzureOpenAI:
      allOf:
      - "$ref": "#/components/schemas/inference._types.InferenceEndpoint"
      - type: object
        properties:
          inference_id:
            description: The inference Id
            type: string
          task_type:
            description: The task type
            allOf:
            - "$ref": "#/components/schemas/inference._types.TaskTypeAzureOpenAI"
        required:
        - inference_id
        - task_type
    inference._types.TaskTypeAzureOpenAI:
      type: string
      enum:
      - text_embedding
      - completion
      - chat_completion
    inference._types.CohereTaskType:
      type: string
      enum:
      - completion
      - rerank
      - text_embedding
    inference._types.CohereServiceType:
      type: string
      enum:
      - cohere
    inference._types.CohereServiceSettings:
      type: object
      properties:
        api_key:
          externalDocs:
            url: https://dashboard.cohere.com/api-keys
          description: |-
            A valid API key for your Cohere account.
            You can find or create your Cohere API keys on the Cohere API key settings page.

            IMPORTANT: You need to provide the API key only once, during the inference model creation.
            The get inference endpoint API does not retrieve your API key.
          type: string
        embedding_type:
          description: |-
            For a `text_embedding` task, the types of embeddings you want to get back.
            Use `binary` for binary embeddings, which are encoded as bytes with signed int8 precision.
            Use `bit` for binary embeddings, which are encoded as bytes with signed int8 precision (this is a synonym of `binary`).
            Use `byte` for signed int8 embeddings (this is a synonym of `int8`).
            Use `float` for the default float embeddings.
            Use `int8` for signed int8 embeddings.
          default: float
          allOf:
          - "$ref": "#/components/schemas/inference._types.CohereEmbeddingType"
        model_id:
          description: |-
            For a `completion`, `rerank`, or `text_embedding` task, the name of the model to use for the inference task.

            * For the available `completion` models, refer to the [Cohere command docs](https://docs.cohere.com/docs/models#command).
            * For the available `rerank` models, refer to the [Cohere rerank docs](https://docs.cohere.com/reference/rerank-1).
            * For the available `text_embedding` models, refer to [Cohere embed docs](https://docs.cohere.com/reference/embed).
          type: string
        rate_limit:
          description: |-
            This setting helps to minimize the number of rate limit errors returned from Cohere.
            By default, the `cohere` service sets the number of requests allowed per minute to 10000.
          allOf:
          - "$ref": "#/components/schemas/inference._types.RateLimitSetting"
        similarity:
          description: |-
            The similarity measure.
            If the `embedding_type` is `float`, the default value is `dot_product`.
            If the `embedding_type` is `int8` or `byte`, the default value is `cosine`.
          allOf:
          - "$ref": "#/components/schemas/inference._types.CohereSimilarityType"
      required:
      - api_key
      - model_id
    inference._types.CohereEmbeddingType:
      type: string
      enum:
      - binary
      - bit
      - byte
      - float
      - int8
    inference._types.CohereSimilarityType:
      type: string
      enum:
      - cosine
      - dot_product
      - l2_norm
    inference._types.CohereTaskSettings:
      type: object
      properties:
        input_type:
          description: |-
            For a `text_embedding` task, the type of input passed to the model.
            Valid values are:

            * `classification`: Use it for embeddings passed through a text classifier.
            * `clustering`: Use it for the embeddings run through a clustering algorithm.
            * `ingest`: Use it for storing document embeddings in a vector database.
            * `search`: Use it for storing embeddings of search queries run against a vector database to find relevant documents.

            IMPORTANT: The `input_type` field is required when using embedding models `v3` and higher.
          allOf:
          - "$ref": "#/components/schemas/inference._types.CohereInputType"
        return_documents:
          description: For a `rerank` task, return doc text within the results.
          type: boolean
        top_n:
          description: |-
            For a `rerank` task, the number of most relevant documents to return.
            It defaults to the number of the documents.
            If this inference endpoint is used in a `text_similarity_reranker` retriever query and `top_n` is set, it must be greater than or equal to `rank_window_size` in the query.
          type: number
        truncate:
          description: |-
            For a `text_embedding` task, the method to handle inputs longer than the maximum token length.
            Valid values are:

            * `END`: When the input exceeds the maximum input token length, the end of the input is discarded.
            * `NONE`: When the input exceeds the maximum input token length, an error is returned.
            * `START`: When the input exceeds the maximum input token length, the start of the input is discarded.
          allOf:
          - "$ref": "#/components/schemas/inference._types.CohereTruncateType"
      required:
      - input_type
    inference._types.CohereInputType:
      type: string
      enum:
      - classification
      - clustering
      - ingest
      - search
    inference._types.CohereTruncateType:
      type: string
      enum:
      - END
      - NONE
      - START
    inference._types.InferenceEndpointInfoCohere:
      allOf:
      - "$ref": "#/components/schemas/inference._types.InferenceEndpoint"
      - type: object
        properties:
          inference_id:
            description: The inference Id
            type: string
          task_type:
            description: The task type
            allOf:
            - "$ref": "#/components/schemas/inference._types.TaskTypeCohere"
        required:
        - inference_id
        - task_type
    inference._types.TaskTypeCohere:
      type: string
      enum:
      - text_embedding
      - rerank
      - completion
    inference._types.TaskTypeContextualAI:
      type: string
      enum:
      - rerank
    inference._types.ContextualAIServiceType:
      type: string
      enum:
      - contextualai
    inference._types.ContextualAIServiceSettings:
      type: object
      properties:
        api_key:
          description: |-
            A valid API key for your Contexutual AI account.

            IMPORTANT: You need to provide the API key only once, during the inference model creation.
            The get inference endpoint API does not retrieve your API key.
          type: string
        model_id:
          description: |-
            The name of the model to use for the inference task.
            Refer to the Contextual AI documentation for the list of available rerank models.
          type: string
        rate_limit:
          description: |-
            This setting helps to minimize the number of rate limit errors returned from Contextual AI.
            The `contextualai` service sets a default number of requests allowed per minute depending on the task type.
            For `rerank`, it is set to `1000`.
          allOf:
          - "$ref": "#/components/schemas/inference._types.RateLimitSetting"
      required:
      - api_key
      - model_id
    inference._types.ContextualAITaskSettings:
      type: object
      properties:
        instruction:
          description: |-
            Instructions for the reranking model. Refer to <https://docs.contextual.ai/api-reference/rerank/rerank#body-instruction>
            Only for the `rerank` task type.
          type: string
        return_documents:
          description: |-
            Whether to return the source documents in the response.
            Only for the `rerank` task type.
          default: false
          type: boolean
        top_k:
          description: |-
            The number of most relevant documents to return.
            If not specified, the reranking results of all documents will be returned.
            Only for the `rerank` task type.
          type: number
    inference._types.InferenceEndpointInfoContextualAi:
      allOf:
      - "$ref": "#/components/schemas/inference._types.InferenceEndpoint"
      - type: object
        properties:
          inference_id:
            description: The inference Id
            type: string
          task_type:
            description: The task type
            allOf:
            - "$ref": "#/components/schemas/inference._types.TaskTypeContextualAI"
        required:
        - inference_id
        - task_type
    inference._types.CustomTaskType:
      type: string
      enum:
      - text_embedding
      - sparse_embedding
      - rerank
      - completion
    inference._types.CustomServiceType:
      type: string
      enum:
      - custom
    inference._types.CustomServiceSettings:
      type: object
      properties:
        batch_size:
          externalDocs:
            url: https://www.elastic.co/docs/reference/elasticsearch/mapping-reference/semantic-text#auto-text-chunking
          description: |-
            Specifies the batch size used for the semantic_text field. If the field is not provided, the default is 10.
            The batch size is the maximum number of inputs in a single request to the upstream service.
            The chunk within the batch are controlled by the selected chunking strategy for the semantic_text field.
          type: number
        headers:
          description: |-
            Specifies the HTTP header parameters – such as `Authentication` or `Content-Type` – that are required to access the custom service.
            For example:
            ```
            "headers":{
              "Authorization": "Bearer ${api_key}",
              "Content-Type": "application/json;charset=utf-8"
            }
            ```
          type: object
        input_type:
          description: |-
            Specifies the input type translation values that are used to replace the `${input_type}` template in the request body.
            For example:
            ```
            "input_type": {
              "translation": {
                "ingest": "do_ingest",
                "search": "do_search"
              },
              "default": "a_default"
            },
            ```
            If the subsequent inference requests come from a search context, the `search` key will be used and the template will be replaced with `do_search`.
            If it comes from the ingest context `do_ingest` is used. If it's a different context that is not specified, the default value will be used. If no default is specified an empty string is used.
            `translation` can be:
            * `classification`
            * `clustering`
            * `ingest`
            * `search`
          type: object
        query_parameters:
          description: |-
            Specifies the query parameters as a list of tuples. The arrays inside the `query_parameters` must have two items, a key and a value.
            For example:
            ```
            "query_parameters":[
              ["param_key", "some_value"],
              ["param_key", "another_value"],
              ["other_key", "other_value"]
            ]
            ```
            If the base url is `https://www.elastic.co` it results in: `https://www.elastic.co?param_key=some_value&param_key=another_value&other_key=other_value`.
          type: object
        request:
          description: The request configuration object.
          allOf:
          - "$ref": "#/components/schemas/inference._types.CustomRequestParams"
        response:
          description: The response configuration object.
          allOf:
          - "$ref": "#/components/schemas/inference._types.CustomResponseParams"
        secret_parameters:
          description: |-
            Specifies secret parameters, like `api_key` or `api_token`, that are required to access the custom service.
            For example:
            ```
            "secret_parameters":{
              "api_key":"<api_key>"
            }
            ```
          type: object
        url:
          description: The URL endpoint to use for the requests.
          type: string
      required:
      - request
      - response
      - secret_parameters
    inference._types.CustomRequestParams:
      type: object
      properties:
        content:
          description: |-
            The body structure of the request. It requires passing in the string-escaped result of the JSON format HTTP request body.
            For example:
            ```
            "request": "{\"input\":${input}}"
            ```
            > info
            > The content string needs to be a single line except when using the Kibana console.
          type: string
      required:
      - content
    inference._types.CustomResponseParams:
      type: object
      properties:
        json_parser:
          description: |-
            Specifies the JSON parser that is used to parse the response from the custom service.
            Different task types require different json_parser parameters.
            For example:
            ```
            # text_embedding
            # For a response like this:

            {
             "object": "list",
             "data": [
                 {
                   "object": "embedding",
                   "index": 0,
                   "embedding": [
                       0.014539449,
                       -0.015288644
                   ]
                 }
             ],
             "model": "text-embedding-ada-002-v2",
             "usage": {
                 "prompt_tokens": 8,
                 "total_tokens": 8
             }
            }

            # the json_parser definition should look like this:

            "response":{
              "json_parser":{
                "text_embeddings":"$.data[*].embedding[*]"
              }
            }

            # Elasticsearch supports the following embedding types:
            * float
            * byte
            * bit (or binary)

            To specify the embedding type for the response, the `embedding_type`
            field should be added in the `json_parser` object. Here's an example:
            "response":{
              "json_parser":{
                "text_embeddings":"$.data[*].embedding[*]",
                "embedding_type":"bit"
              }
            }

            If `embedding_type` is not specified, it defaults to `float`.

            # sparse_embedding
            # For a response like this:

            {
              "request_id": "75C50B5B-E79E-4930-****-F48DBB392231",
              "latency": 22,
              "usage": {
                 "token_count": 11
              },
              "result": {
                 "sparse_embeddings": [
                    {
                      "index": 0,
                      "embedding": [
                        {
                          "token_id": 6,
                          "weight": 0.101
                        },
                        {
                          "token_id": 163040,
                          "weight": 0.28417
                        }
                      ]
                    }
                 ]
              }
            }

            # the json_parser definition should look like this:

            "response":{
              "json_parser":{
                "token_path":"$.result.sparse_embeddings[*].embedding[*].token_id",
                "weight_path":"$.result.sparse_embeddings[*].embedding[*].weight"
              }
            }

            # rerank
            # For a response like this:

            {
              "results": [
                {
                  "index": 3,
                  "relevance_score": 0.999071,
                  "document": "abc"
                },
                {
                  "index": 4,
                  "relevance_score": 0.7867867,
                  "document": "123"
                },
                {
                  "index": 0,
                  "relevance_score": 0.32713068,
                  "document": "super"
                }
              ],
            }

            # the json_parser definition should look like this:

            "response":{
              "json_parser":{
                "reranked_index":"$.result.scores[*].index",    // optional
                "relevance_score":"$.result.scores[*].score",
                "document_text":"xxx"    // optional
              }
            }

            # completion
            # For a response like this:

            {
             "id": "chatcmpl-B9MBs8CjcvOU2jLn4n570S5qMJKcT",
             "object": "chat.completion",
             "created": 1741569952,
             "model": "gpt-4.1-2025-04-14",
             "choices": [
               {
                "index": 0,
                "message": {
                  "role": "assistant",
                  "content": "Hello! How can I assist you today?",
                  "refusal": null,
                  "annotations": []
                },
                "logprobs": null,
                "finish_reason": "stop"
              }
             ]
            }

            # the json_parser definition should look like this:

            "response":{
              "json_parser":{
                "completion_result":"$.choices[*].message.content"
              }
            }
          type: object
      required:
      - json_parser
    inference._types.CustomTaskSettings:
      type: object
      properties:
        parameters:
          description: |-
            Specifies parameters that are required to run the custom service. The parameters depend on the model your custom service uses.
            For example:
            ```
            "task_settings":{
              "parameters":{
                "input_type":"query",
                "return_token":true
              }
            }
            ```
          type: object
    inference._types.InferenceEndpointInfoCustom:
      allOf:
      - "$ref": "#/components/schemas/inference._types.InferenceEndpoint"
      - type: object
        properties:
          inference_id:
            description: The inference Id
            type: string
          task_type:
            description: The task type
            allOf:
            - "$ref": "#/components/schemas/inference._types.TaskTypeCustom"
        required:
        - inference_id
        - task_type
    inference._types.TaskTypeCustom:
      type: string
      enum:
      - text_embedding
      - sparse_embedding
      - rerank
      - completion
    inference._types.TaskTypeDeepSeek:
      type: string
      enum:
      - completion
      - chat_completion
    inference._types.DeepSeekServiceType:
      type: string
      enum:
      - deepseek
    inference._types.DeepSeekServiceSettings:
      type: object
      properties:
        api_key:
          externalDocs:
            url: https://api-docs.deepseek.com/
          description: |-
            A valid API key for your DeepSeek account.
            You can find or create your DeepSeek API keys on the DeepSeek API key page.

            IMPORTANT: You need to provide the API key only once, during the inference model creation.
            The get inference endpoint API does not retrieve your API key.
          type: string
        model_id:
          description: |-
            For a `completion` or `chat_completion` task, the name of the model to use for the inference task.

            For the available `completion` and `chat_completion` models, refer to the [DeepSeek Models & Pricing docs](https://api-docs.deepseek.com/quick_start/pricing).
          type: string
        url:
          description: The URL endpoint to use for the requests. Defaults to `https://api.deepseek.com/chat/completions`.
          type: string
      required:
      - api_key
      - model_id
    inference._types.InferenceEndpointInfoDeepSeek:
      allOf:
      - "$ref": "#/components/schemas/inference._types.InferenceEndpoint"
      - type: object
        properties:
          inference_id:
            description: The inference Id
            type: string
          task_type:
            description: The task type
            allOf:
            - "$ref": "#/components/schemas/inference._types.TaskTypeDeepSeek"
        required:
        - inference_id
        - task_type
    inference._types.ElasticsearchTaskType:
      type: string
      enum:
      - rerank
      - sparse_embedding
      - text_embedding
    inference._types.ElasticsearchServiceType:
      type: string
      enum:
      - elasticsearch
    inference._types.ElasticsearchServiceSettings:
      type: object
      properties:
        adaptive_allocations:
          description: |-
            Adaptive allocations configuration details.
            If `enabled` is true, the number of allocations of the model is set based on the current load the process gets.
            When the load is high, a new model allocation is automatically created, respecting the value of `max_number_of_allocations` if it's set.
            When the load is low, a model allocation is automatically removed, respecting the value of `min_number_of_allocations` if it's set.
            If `enabled` is true, do not set the number of allocations manually.
          allOf:
          - "$ref": "#/components/schemas/inference._types.AdaptiveAllocations"
        deployment_id:
          description: |-
            The deployment identifier for a trained model deployment.
            When `deployment_id` is used the `model_id` is optional.
          type: string
        model_id:
          externalDocs:
            url: https://www.elastic.co/docs/explore-analyze/machine-learning/nlp/ml-nlp-import-model#ml-nlp-import-script
          description: |-
            The name of the model to use for the inference task.
            It can be the ID of a built-in model (for example, `.multilingual-e5-small` for E5) or a text embedding model that was uploaded by using the Eland client.
          type: string
        num_allocations:
          description: |-
            The total number of allocations that are assigned to the model across machine learning nodes.
            Increasing this value generally increases the throughput.
            If adaptive allocations are enabled, do not set this value because it's automatically set.
          type: number
        num_threads:
          description: |-
            The number of threads used by each model allocation during inference.
            This setting generally increases the speed per inference request.
            The inference process is a compute-bound process; `threads_per_allocations` must not exceed the number of available allocated processors per node.
            The value must be a power of 2.
            The maximum value is 32.
          type: number
        long_document_strategy:
          description: |-
            Available only for the `rerank` task type using the Elastic reranker model.
            Controls the strategy used for processing long documents during inference.

            Possible values:
            - `truncate` (default): Processes only the beginning of each document.
            - `chunk`: Splits long documents into smaller parts (chunks) before inference.

            When `long_document_strategy` is set to `chunk`, Elasticsearch splits each document into smaller parts but still returns a single score per document.
            That score reflects the highest relevance score among all chunks.
          x-state: Technical preview
          type: string
        max_chunks_per_doc:
          description: |-
            Only for the `rerank` task type.
            Limits the number of chunks per document that are sent for inference when chunking is enabled.
            If not set, all chunks generated for the document are processed.
          x-state: Technical preview
          type: number
      required:
      - model_id
      - num_threads
    inference._types.AdaptiveAllocations:
      type: object
      properties:
        enabled:
          description: Turn on `adaptive_allocations`.
          default: false
          type: boolean
        max_number_of_allocations:
          description: |-
            The maximum number of allocations to scale to.
            If set, it must be greater than or equal to `min_number_of_allocations`.
          type: number
        min_number_of_allocations:
          description: |-
            The minimum number of allocations to scale to.
            If set, it must be greater than or equal to 0.
            If not defined, the deployment scales to 0.
          type: number
    inference._types.ElasticsearchTaskSettings:
      type: object
      properties:
        return_documents:
          description: For a `rerank` task, return the document instead of only the
            index.
          default: true
          type: boolean
    inference._types.InferenceEndpointInfoElasticsearch:
      allOf:
      - "$ref": "#/components/schemas/inference._types.InferenceEndpoint"
      - type: object
        properties:
          inference_id:
            description: The inference Id
            type: string
          task_type:
            description: The task type
            allOf:
            - "$ref": "#/components/schemas/inference._types.TaskTypeElasticsearch"
        required:
        - inference_id
        - task_type
    inference._types.TaskTypeElasticsearch:
      type: string
      enum:
      - sparse_embedding
      - text_embedding
      - rerank
    inference._types.ElserTaskType:
      type: string
      enum:
      - sparse_embedding
    inference._types.ElserServiceType:
      type: string
      enum:
      - elser
    inference._types.ElserServiceSettings:
      type: object
      properties:
        adaptive_allocations:
          description: |-
            Adaptive allocations configuration details.
            If `enabled` is true, the number of allocations of the model is set based on the current load the process gets.
            When the load is high, a new model allocation is automatically created, respecting the value of `max_number_of_allocations` if it's set.
            When the load is low, a model allocation is automatically removed, respecting the value of `min_number_of_allocations` if it's set.
            If `enabled` is true, do not set the number of allocations manually.
          allOf:
          - "$ref": "#/components/schemas/inference._types.AdaptiveAllocations"
        num_allocations:
          description: |-
            The total number of allocations this model is assigned across machine learning nodes.
            Increasing this value generally increases the throughput.
            If adaptive allocations is enabled, do not set this value because it's automatically set.
          type: number
        num_threads:
          description: |-
            The number of threads used by each model allocation during inference.
            Increasing this value generally increases the speed per inference request.
            The inference process is a compute-bound process; `threads_per_allocations` must not exceed the number of available allocated processors per node.
            The value must be a power of 2.
            The maximum value is 32.

            > info
            > If you want to optimize your ELSER endpoint for ingest, set the number of threads to 1. If you want to optimize your ELSER endpoint for search, set the number of threads to greater than 1.
          type: number
      required:
      - num_allocations
      - num_threads
    inference._types.InferenceEndpointInfoELSER:
      allOf:
      - "$ref": "#/components/schemas/inference._types.InferenceEndpoint"
      - type: object
        properties:
          inference_id:
            description: The inference Id
            type: string
          task_type:
            description: The task type
            allOf:
            - "$ref": "#/components/schemas/inference._types.TaskTypeELSER"
        required:
        - inference_id
        - task_type
    inference._types.TaskTypeELSER:
      type: string
      enum:
      - sparse_embedding
    inference._types.GoogleAiStudioTaskType:
      type: string
      enum:
      - completion
      - text_embedding
    inference._types.GoogleAiServiceType:
      type: string
      enum:
      - googleaistudio
    inference._types.GoogleAiStudioServiceSettings:
      type: object
      properties:
        api_key:
          description: A valid API key of your Google Gemini account.
          type: string
        model_id:
          externalDocs:
            url: https://ai.google.dev/gemini-api/docs/models
          description: |-
            The name of the model to use for the inference task.
            Refer to the Google documentation for the list of supported models.
          type: string
        rate_limit:
          description: |-
            This setting helps to minimize the number of rate limit errors returned from Google AI Studio.
            By default, the `googleaistudio` service sets the number of requests allowed per minute to 360.
          allOf:
          - "$ref": "#/components/schemas/inference._types.RateLimitSetting"
      required:
      - api_key
      - model_id
    inference._types.InferenceEndpointInfoGoogleAIStudio:
      allOf:
      - "$ref": "#/components/schemas/inference._types.InferenceEndpoint"
      - type: object
        properties:
          inference_id:
            description: The inference Id
            type: string
          task_type:
            description: The task type
            allOf:
            - "$ref": "#/components/schemas/inference._types.TaskTypeGoogleAIStudio"
        required:
        - inference_id
        - task_type
    inference._types.TaskTypeGoogleAIStudio:
      type: string
      enum:
      - text_embedding
      - completion
    inference._types.GoogleVertexAITaskType:
      type: string
      enum:
      - rerank
      - text_embedding
      - completion
      - chat_completion
    inference._types.GoogleVertexAIServiceType:
      type: string
      enum:
      - googlevertexai
    inference._types.GoogleVertexAIServiceSettings:
      type: object
      properties:
        provider:
          description: |-
            The name of the Google Model Garden Provider for `completion` and `chat_completion` tasks.
            In order for a Google Model Garden endpoint to be used `provider` must be defined and be other than `google`.
            Modes:
            - Google Model Garden (third-party models): set `provider` to a supported non-`google` value and provide `url` and/or `streaming_url`.
            - Google Vertex AI: omit `provider` or set it to `google`. In this mode, do not set `url` or `streaming_url` and Elastic will construct the endpoint url from `location`, `model_id`, and `project_id` parameters.
          allOf:
          - "$ref": "#/components/schemas/inference._types.GoogleModelGardenProvider"
        url:
          description: |-
            The URL for non-streaming `completion` requests to a Google Model Garden provider endpoint.
            If both `url` and `streaming_url` are provided, each is used for its respective mode.
            If `streaming_url` is not provided, `url` is also used for streaming `completion` and `chat_completion`.
            If `provider` is not provided or set to `google` (Google Vertex AI), do not set `url` (or `streaming_url`).
            At least one of `url` or `streaming_url` must be provided for Google Model Garden endpoint usage.
            Certain providers require separate URLs for streaming and non-streaming operations (e.g., Anthropic, Mistral, AI21). Others support both operation types through a single URL (e.g., Meta, Hugging Face).
            Information on constructing the URL for various providers can be found in the Google Model Garden documentation for the model, or on the endpoint’s `Sample request` page. The request examples also illustrate the proper formatting for the `url`.
          type: string
        streaming_url:
          description: |-
            The URL for streaming `completion` and `chat_completion` requests to a Google Model Garden provider endpoint.
            If both `streaming_url` and `url` are provided, each is used for its respective mode.
            If `url` is not provided, `streaming_url` is also used for non-streaming `completion` requests.
            If `provider` is not provided or set to `google` (Google Vertex AI), do not set `streaming_url` (or `url`).
            At least one of `streaming_url` or `url` must be provided for Google Model Garden endpoint usage.
            Certain providers require separate URLs for streaming and non-streaming operations (e.g., Anthropic, Mistral, AI21). Others support both operation types through a single URL (e.g., Meta, Hugging Face).
            Information on constructing the URL for various providers can be found in the Google Model Garden documentation for the model, or on the endpoint’s `Sample request` page. The request examples also illustrate the proper formatting for the `streaming_url`.
          type: string
        location:
          externalDocs:
            url: https://cloud.google.com/vertex-ai/generative-ai/docs/learn/locations
          description: |-
            The name of the location to use for the inference task for the Google Vertex AI inference task.
            For Google Vertex AI, when `provider` is omitted or `google` `location` is mandatory.
            For Google Model Garden's `completion` and `chat_completion` tasks, when `provider` is a supported non-`google` value - `location` is ignored.
            Refer to the Google documentation for the list of supported locations.
          type: string
        model_id:
          externalDocs:
            url: https://cloud.google.com/vertex-ai/generative-ai/docs/model-reference/text-embeddings-api
          description: |-
            The name of the model to use for the inference task.
            For Google Vertex AI `model_id` is mandatory.
            For Google Model Garden's `completion` and `chat_completion` tasks, when `provider` is a supported non-`google` value - `model_id` will be used for some providers that require it, otherwise - ignored.
            Refer to the Google documentation for the list of supported models for Google Vertex AI.
          type: string
        project_id:
          description: |-
            The name of the project to use for the Google Vertex AI inference task.
            For Google Vertex AI `project_id` is mandatory.
            For Google Model Garden's `completion` and `chat_completion` tasks, when `provider` is a supported non-`google` value - `project_id` is ignored.
          type: string
        rate_limit:
          description: |-
            This setting helps to minimize the number of rate limit errors returned from Google Vertex AI.
            By default, the `googlevertexai` service sets the number of requests allowed per minute to 30.000.
          allOf:
          - "$ref": "#/components/schemas/inference._types.RateLimitSetting"
        service_account_json:
          description: A valid service account in JSON format for the Google Vertex
            AI API.
          type: string
        dimensions:
          externalDocs:
            url: https://cloud.google.com/vertex-ai/generative-ai/docs/embeddings/get-text-embeddings
          description: |-
            For a `text_embedding` task, the number of dimensions the resulting output embeddings should have.
            By default, the model's standard output dimension is used.
            Refer to the Google documentation for more information.
          type: number
        max_batch_size:
          description: |-
            Only applicable for the `text_embedding` task type.
            Controls the batch size of chunked inference requests sent to Google Vertex AI.

            Setting this parameter lower reduces the risk of exceeding token limits but may result in more API calls. Setting it higher increases throughput but may risk hitting token limits.

            To estimate a safe `max_batch_size` value, you can use it together with the `max_chunk_size` parameter using the following formula:
            `max_batch_size ≈ max_chunk_size × 1.3 × 512 ÷ 20000`

            Where:
            - `1.3` is an approximate tokens-per-word ratio
            - `512` is the maximum number of chunks that can be generated per document
            - `20000` is the Google Vertex AI token limit per request

            This estimate assumes the worst-case scenario with a document generating the maximum 512 chunks.
          default: 250
          type: number
      required:
      - service_account_json
    inference._types.GoogleModelGardenProvider:
      type: string
      enum:
      - google
      - anthropic
      - meta
      - hugging_face
      - mistral
      - ai21
    inference._types.GoogleVertexAITaskSettings:
      type: object
      properties:
        auto_truncate:
          description: For a `text_embedding` task, truncate inputs longer than the
            maximum token length automatically.
          type: boolean
        top_n:
          description: For a `rerank` task, the number of the top N documents that
            should be returned.
          type: number
        thinking_config:
          externalDocs:
            url: https://ai.google.dev/gemini-api/docs/thinking#set-budget
          description: |-
            For a `completion` or `chat_completion` task, allows configuration of the thinking features for the model.
            Refer to the Google documentation for the allowable configurations for each model type.
          allOf:
          - "$ref": "#/components/schemas/inference._types.ThinkingConfig"
        max_tokens:
          externalDocs:
            url: https://docs.claude.com/en/api/messages#body-max-tokens
          description: |-
            For `completion` and `chat_completion` tasks, specifies the `max_tokens` value for requests sent to the Google Model Garden `anthropic` provider.
            If `provider` is not set to `anthropic`, this field is ignored.
            If `max_tokens` is specified - it must be a positive integer. If not specified, the default value of 1024 is used.
            Anthropic models require `max_tokens` to be set for each request. Please refer to the Anthropic documentation for more information.
          type: number
    inference._types.ThinkingConfig:
      type: object
      properties:
        thinking_budget:
          description: Indicates the desired thinking budget in tokens.
          type: number
    inference._types.InferenceEndpointInfoGoogleVertexAI:
      allOf:
      - "$ref": "#/components/schemas/inference._types.InferenceEndpoint"
      - type: object
        properties:
          inference_id:
            description: The inference Id
            type: string
          task_type:
            description: The task type
            allOf:
            - "$ref": "#/components/schemas/inference._types.TaskTypeGoogleVertexAI"
        required:
        - inference_id
        - task_type
    inference._types.TaskTypeGoogleVertexAI:
      type: string
      enum:
      - chat_completion
      - completion
      - text_embedding
      - rerank
    inference._types.GroqTaskType:
      type: string
      enum:
      - chat_completion
    inference._types.GroqServiceType:
      type: string
      enum:
      - groq
    inference._types.GroqServiceSettings:
      type: object
      properties:
        model_id:
          externalDocs:
            url: https://console.groq.com/docs/models
          description: |-
            The name of the model to use for the inference task.
            Refer to the Groq model documentation for the list of supported models and versions.
            Service has been tested and confirmed to be working for `completion` and `chat_completion` tasks with the following models:
            * `llama-3.3-70b-versatile`
          type: string
        api_key:
          description: |-
            A valid API key for accessing Groq API.

            IMPORTANT: You need to provide the API key only once, during the inference model creation.
            The get inference endpoint API does not retrieve your API key.
          type: string
        rate_limit:
          externalDocs:
            url: https://console.groq.com/docs/rate-limits
          description: |-
            This setting helps to minimize the number of rate limit errors returned from the Groq API.
            By default, the `groq` service sets the number of requests allowed per minute to 1000. Refer to Groq documentation for more details.
          allOf:
          - "$ref": "#/components/schemas/inference._types.RateLimitSetting"
      required:
      - model_id
    inference._types.InferenceEndpointInfoGroq:
      allOf:
      - "$ref": "#/components/schemas/inference._types.InferenceEndpoint"
      - type: object
        properties:
          inference_id:
            description: The inference Id
            type: string
          task_type:
            description: The task type
            allOf:
            - "$ref": "#/components/schemas/inference._types.TaskTypeGroq"
        required:
        - inference_id
        - task_type
    inference._types.TaskTypeGroq:
      type: string
      enum:
      - chat_completion
    inference._types.HuggingFaceTaskType:
      type: string
      enum:
      - chat_completion
      - completion
      - rerank
      - text_embedding
    inference._types.HuggingFaceServiceType:
      type: string
      enum:
      - hugging_face
    inference._types.HuggingFaceServiceSettings:
      type: object
      properties:
        api_key:
          externalDocs:
            url: https://huggingface.co/settings/tokens
          description: |-
            A valid access token for your HuggingFace account.
            You can create or find your access tokens on the HuggingFace settings page.

            IMPORTANT: You need to provide the API key only once, during the inference model creation.
            The get inference endpoint API does not retrieve your API key.
          type: string
        rate_limit:
          description: |-
            This setting helps to minimize the number of rate limit errors returned from Hugging Face.
            By default, the `hugging_face` service sets the number of requests allowed per minute to 3000 for all supported tasks.
            Hugging Face does not publish a universal rate limit — actual limits may vary.
            It is recommended to adjust this value based on the capacity and limits of your specific deployment environment.
          allOf:
          - "$ref": "#/components/schemas/inference._types.RateLimitSetting"
        url:
          externalDocs:
            url: https://huggingface.co/docs/inference-providers/en/tasks/chat-completion#conversational-large-language-models-llms
          description: |-
            The URL endpoint to use for the requests.
            For `completion` and `chat_completion` tasks, the deployed model must be compatible with the Hugging Face Chat Completion interface (see the linked external documentation for details). The endpoint URL for the request must include `/v1/chat/completions`.
            If the model supports the OpenAI Chat Completion schema, a toggle should appear in the interface. Enabling this toggle doesn't change any model behavior, it reveals the full endpoint URL needed (which should include `/v1/chat/completions`) when configuring the inference endpoint in Elasticsearch. If the model doesn't support this schema, the toggle may not be shown.
          type: string
        model_id:
          description: |-
            The name of the HuggingFace model to use for the inference task.
            For `completion` and `chat_completion` tasks, this field is optional but may be required for certain models — particularly when using serverless inference endpoints.
            For the `text_embedding` task, this field should not be included. Otherwise, the request will fail.
          type: string
      required:
      - api_key
      - url
    inference._types.HuggingFaceTaskSettings:
      type: object
      properties:
        return_documents:
          description: For a `rerank` task, return doc text within the results.
          type: boolean
        top_n:
          description: |-
            For a `rerank` task, the number of most relevant documents to return.
            It defaults to the number of the documents.
          type: number
    inference._types.InferenceEndpointInfoHuggingFace:
      allOf:
      - "$ref": "#/components/schemas/inference._types.InferenceEndpoint"
      - type: object
        properties:
          inference_id:
            description: The inference Id
            type: string
          task_type:
            description: The task type
            allOf:
            - "$ref": "#/components/schemas/inference._types.TaskTypeHuggingFace"
        required:
        - inference_id
        - task_type
    inference._types.TaskTypeHuggingFace:
      type: string
      enum:
      - chat_completion
      - completion
      - rerank
      - text_embedding
    inference._types.JinaAITaskType:
      type: string
      enum:
      - embedding
      - rerank
      - text_embedding
    inference._types.JinaAIServiceType:
      type: string
      enum:
      - jinaai
    inference._types.JinaAIServiceSettings:
      type: object
      properties:
        api_key:
          externalDocs:
            url: https://jina.ai/embeddings/
          description: |-
            A valid API key of your JinaAI account.

            IMPORTANT: You need to provide the API key only once, during the inference model creation.
            The get inference endpoint API does not retrieve your API key.
          type: string
        model_id:
          description: The name of the model to use for the inference task.
          type: string
        rate_limit:
          externalDocs:
            url: https://jina.ai/contact-sales/#rate-limit
          description: |-
            This setting helps to minimize the number of rate limit errors returned from JinaAI.
            By default, the `jinaai` service sets the number of requests allowed per minute to 2000 for all task types.
          allOf:
          - "$ref": "#/components/schemas/inference._types.RateLimitSetting"
        similarity:
          description: |-
            For an `embedding` or `text_embedding` task, the similarity measure. One of cosine, dot_product, l2_norm.
            The default values varies with the embedding type.
            For example, a float embedding type uses a `dot_product` similarity measure by default.
          allOf:
          - "$ref": "#/components/schemas/inference._types.JinaAISimilarityType"
        dimensions:
          externalDocs:
            url: https://jina.ai/embeddings/
          description: |-
            For an `embedding` or `text_embedding` task, the number of dimensions the resulting output embeddings should have.
            By default, the model's standard output dimension is used.
            Refer to the Jina documentation for more information.
          type: number
        element_type:
          description: |-
            For an `embedding` or `text_embedding` task, the data type returned by the model.
            Use `bit` for binary embeddings, which are encoded as bytes with signed int8 precision.
            Use `binary` for binary embeddings, which are encoded as bytes with signed int8 precision (this is a synonym of `bit`).
            Use `float` for the default float embeddings.
          default: float
          allOf:
          - "$ref": "#/components/schemas/inference._types.JinaAIElementType"
        multimodal_model:
          description: |-
            For the `embedding` task, whether the model supports multimodal inputs. If true, requests sent to the Jina model
            will use the multimodal request format (a list of objects). If false, requests sent to the model will use the same
            format as the `text_embedding` task (a list of strings). Setting this to `false` allows the `embedding` task to be
            used with models that do not support multimodal requests.
          default: true
          type: boolean
      required:
      - api_key
      - model_id
    inference._types.JinaAISimilarityType:
      type: string
      enum:
      - cosine
      - dot_product
      - l2_norm
    inference._types.JinaAIElementType:
      type: string
      enum:
      - binary
      - bit
      - float
    inference._types.JinaAITaskSettings:
      type: object
      properties:
        return_documents:
          description: For a `rerank` task, return the doc text within the results.
          type: boolean
        input_type:
          description: |-
            For an `embedding` or `text_embedding` task, the task passed to the model.
            Valid values are:

            * `classification`: Use it for embeddings passed through a classifier.
            * `clustering`: Use it for the embeddings run through a clustering algorithm.
            * `ingest`: Use it for storing document embeddings in a vector database.
            * `search`: Use it for storing embeddings of search queries run against a vector database to find relevant documents.
          allOf:
          - "$ref": "#/components/schemas/inference._types.JinaAITextEmbeddingTask"
        late_chunking:
          description: |-
            For an `embedding` or `text_embedding` task, controls when text is split into chunks.
            When set to `true`, a request from Elasticsearch contains only chunks related to a single document. Instead of batching chunks across documents, Elasticsearch sends them in separate requests. This ensures that chunk embeddings retain context from the entire document, improving semantic quality.

            If a document exceeds the model's context limits, or if the document contains non-text inputs (relevant when using the multimodal `embedding` task), late chunking is automatically disabled for that document only and standard chunking is used instead.

            If not specified, defaults to `false`.
          type: boolean
        top_n:
          description: |-
            For a `rerank` task, the number of most relevant documents to return.
            It defaults to the number of the documents.
            If this inference endpoint is used in a `text_similarity_reranker` retriever query and `top_n` is set, it must be greater than or equal to `rank_window_size` in the query.
          type: number
    inference._types.JinaAITextEmbeddingTask:
      type: string
      enum:
      - classification
      - clustering
      - ingest
      - search
    inference._types.InferenceEndpointInfoJinaAi:
      allOf:
      - "$ref": "#/components/schemas/inference._types.InferenceEndpoint"
      - type: object
        properties:
          inference_id:
            description: The inference Id
            type: string
          task_type:
            description: The task type
            allOf:
            - "$ref": "#/components/schemas/inference._types.TaskTypeJinaAi"
        required:
        - inference_id
        - task_type
    inference._types.TaskTypeJinaAi:
      type: string
      enum:
      - embedding
      - text_embedding
      - rerank
    inference._types.LlamaTaskType:
      type: string
      enum:
      - text_embedding
      - completion
      - chat_completion
    inference._types.LlamaServiceType:
      type: string
      enum:
      - llama
    inference._types.LlamaServiceSettings:
      type: object
      properties:
        url:
          description: |-
            The URL endpoint of the Llama stack endpoint.
            URL must contain:
            * For `text_embedding` task - `/v1/inference/embeddings`.
            * For `completion` and `chat_completion` tasks - `/v1/openai/v1/chat/completions`.
          type: string
        model_id:
          externalDocs:
            url: https://llama-stack.readthedocs.io/en/latest/references/llama_cli_reference/download_models.html/
          description: |-
            The name of the model to use for the inference task.
            Refer to the Llama downloading models documentation for different ways of getting a list of available models and downloading them.
            Service has been tested and confirmed to be working with the following models:
            * For `text_embedding` task - `all-MiniLM-L6-v2`.
            * For `completion` and `chat_completion` tasks - `llama3.2:3b`.
          type: string
        max_input_tokens:
          description: For a `text_embedding` task, the maximum number of tokens per
            input before chunking occurs.
          type: number
        similarity:
          description: For a `text_embedding` task, the similarity measure. One of
            cosine, dot_product, l2_norm.
          allOf:
          - "$ref": "#/components/schemas/inference._types.LlamaSimilarityType"
        rate_limit:
          description: |-
            This setting helps to minimize the number of rate limit errors returned from the Llama API.
            By default, the `llama` service sets the number of requests allowed per minute to 3000.
          allOf:
          - "$ref": "#/components/schemas/inference._types.RateLimitSetting"
      required:
      - url
      - model_id
    inference._types.LlamaSimilarityType:
      type: string
      enum:
      - cosine
      - dot_product
      - l2_norm
    inference._types.InferenceEndpointInfoLlama:
      allOf:
      - "$ref": "#/components/schemas/inference._types.InferenceEndpoint"
      - type: object
        properties:
          inference_id:
            description: The inference Id
            type: string
          task_type:
            description: The task type
            allOf:
            - "$ref": "#/components/schemas/inference._types.TaskTypeLlama"
        required:
        - inference_id
        - task_type
    inference._types.TaskTypeLlama:
      type: string
      enum:
      - text_embedding
      - chat_completion
      - completion
    inference._types.MistralTaskType:
      type: string
      enum:
      - text_embedding
      - completion
      - chat_completion
    inference._types.MistralServiceType:
      type: string
      enum:
      - mistral
    inference._types.MistralServiceSettings:
      type: object
      properties:
        api_key:
          externalDocs:
            url: https://console.mistral.ai/api-keys/
          description: |-
            A valid API key of your Mistral account.
            You can find your Mistral API keys or you can create a new one on the API Keys page.

            IMPORTANT: You need to provide the API key only once, during the inference model creation.
            The get inference endpoint API does not retrieve your API key.
          type: string
        max_input_tokens:
          description: The maximum number of tokens per input before chunking occurs.
          type: number
        model:
          externalDocs:
            url: https://docs.mistral.ai/getting-started/models/
          description: |-
            The name of the model to use for the inference task.
            Refer to the Mistral models documentation for the list of available models.
          type: string
        rate_limit:
          description: |-
            This setting helps to minimize the number of rate limit errors returned from the Mistral API.
            By default, the `mistral` service sets the number of requests allowed per minute to 240.
          allOf:
          - "$ref": "#/components/schemas/inference._types.RateLimitSetting"
      required:
      - api_key
      - model
    inference._types.InferenceEndpointInfoMistral:
      allOf:
      - "$ref": "#/components/schemas/inference._types.InferenceEndpoint"
      - type: object
        properties:
          inference_id:
            description: The inference Id
            type: string
          task_type:
            description: The task type
            allOf:
            - "$ref": "#/components/schemas/inference._types.TaskTypeMistral"
        required:
        - inference_id
        - task_type
    inference._types.TaskTypeMistral:
      type: string
      enum:
      - text_embedding
      - chat_completion
      - completion
    inference._types.NvidiaTaskType:
      type: string
      enum:
      - chat_completion
      - completion
      - rerank
      - text_embedding
    inference._types.NvidiaServiceType:
      type: string
      enum:
      - nvidia
    inference._types.NvidiaServiceSettings:
      type: object
      properties:
        api_key:
          description: |-
            A valid API key for your Nvidia endpoint.
            Can be found in `API Keys` section of Nvidia account settings.
          type: string
        url:
          description: |-
            The URL of the Nvidia model endpoint. If not provided, the default endpoint URL is used depending on the task type:

            * For `text_embedding` task - `https://integrate.api.nvidia.com/v1/embeddings`.
            * For `completion` and `chat_completion` tasks - `https://integrate.api.nvidia.com/v1/chat/completions`.
            * For `rerank` task - `https://ai.api.nvidia.com/v1/retrieval/nvidia/reranking`.
          type: string
        model_id:
          description: |-
            The name of the model to use for the inference task.
            Refer to the model's documentation for the name if needed.
            Service has been tested and confirmed to be working with the following models:

            * For `text_embedding` task - `nvidia/llama-3.2-nv-embedqa-1b-v2`.
            * For `completion` and `chat_completion` tasks - `microsoft/phi-3-mini-128k-instruct`.
            * For `rerank` task - `nv-rerank-qa-mistral-4b:1`.
            Service doesn't support `text_embedding` task `baai/bge-m3` and `nvidia/nvclip` models due to them not recognizing the `input_type` parameter.
          type: string
        max_input_tokens:
          description: For a `text_embedding` task, the maximum number of tokens per
            input. Inputs exceeding this value are truncated prior to sending to the
            Nvidia API.
          type: number
        similarity:
          description: For a `text_embedding` task, the similarity measure. One of
            cosine, dot_product, l2_norm.
          allOf:
          - "$ref": "#/components/schemas/inference._types.NvidiaSimilarityType"
        rate_limit:
          description: |-
            This setting helps to minimize the number of rate limit errors returned from the Nvidia API.
            By default, the `nvidia` service sets the number of requests allowed per minute to 3000.
          allOf:
          - "$ref": "#/components/schemas/inference._types.RateLimitSetting"
      required:
      - api_key
      - model_id
    inference._types.NvidiaSimilarityType:
      type: string
      enum:
      - cosine
      - dot_product
      - l2_norm
    inference._types.NvidiaTaskSettings:
      type: object
      properties:
        input_type:
          description: |-
            For a `text_embedding` task, type of input sent to the Nvidia endpoint.
            Valid values are:

            * `ingest`: Mapped to Nvidia's `passage` value in request. Used when generating embeddings during indexing.
            * `search`: Mapped to Nvidia's `query` value in request. Used when generating embeddings during querying.

            IMPORTANT: For Nvidia endpoints, if the `input_type` field is not specified, it defaults to `query`.
          allOf:
          - "$ref": "#/components/schemas/inference._types.NvidiaInputType"
        truncate:
          description: |-
            For a `text_embedding` task, the method used by the Nvidia model to handle inputs longer than the maximum token length.
            Valid values are:

            * `END`: When the input exceeds the maximum input token length, the end of the input is discarded.
            * `NONE`: When the input exceeds the maximum input token length, an error is returned.
            * `START`: When the input exceeds the maximum input token length, the start of the input is discarded.
          allOf:
          - "$ref": "#/components/schemas/inference._types.CohereTruncateType"
    inference._types.NvidiaInputType:
      type: string
      enum:
      - ingest
      - search
    inference._types.InferenceEndpointInfoNvidia:
      allOf:
      - "$ref": "#/components/schemas/inference._types.InferenceEndpoint"
      - type: object
        properties:
          inference_id:
            description: The inference ID
            type: string
          task_type:
            description: The task type
            allOf:
            - "$ref": "#/components/schemas/inference._types.TaskTypeNvidia"
        required:
        - inference_id
        - task_type
    inference._types.TaskTypeNvidia:
      type: string
      enum:
      - chat_completion
      - completion
      - rerank
      - text_embedding
    inference._types.OpenAITaskType:
      type: string
      enum:
      - chat_completion
      - completion
      - text_embedding
    inference._types.OpenAIServiceType:
      type: string
      enum:
      - openai
    inference._types.OpenAIServiceSettings:
      type: object
      properties:
        api_key:
          externalDocs:
            url: https://platform.openai.com/api-keys
          description: |-
            A valid API key of your OpenAI account.
            You can find your OpenAI API keys in your OpenAI account under the API keys section.

            IMPORTANT: You need to provide the API key only once, during the inference model creation.
            The get inference endpoint API does not retrieve your API key.
          type: string
        dimensions:
          description: |-
            The number of dimensions the resulting output embeddings should have.
            It is supported only in `text-embedding-3` and later models.
            If it is not set, the OpenAI defined default for the model is used.
          type: number
        model_id:
          externalDocs:
            url: https://platform.openai.com/docs/guides/embeddings/what-are-embeddings
          description: |-
            The name of the model to use for the inference task.
            Refer to the OpenAI documentation for the list of available text embedding models.
          type: string
        organization_id:
          description: |-
            The unique identifier for your organization.
            You can find the Organization ID in your OpenAI account under *Settings > Organizations*.
          type: string
        rate_limit:
          description: |-
            This setting helps to minimize the number of rate limit errors returned from OpenAI.
            The `openai` service sets a default number of requests allowed per minute depending on the task type.
            For `text_embedding`, it is set to `3000`.
            For `completion`, it is set to `500`.
          allOf:
          - "$ref": "#/components/schemas/inference._types.RateLimitSetting"
        similarity:
          description: For a `text_embedding` task, the similarity measure. One of
            cosine, dot_product, l2_norm. Defaults to `dot_product`.
          allOf:
          - "$ref": "#/components/schemas/inference._types.OpenAISimilarityType"
        url:
          description: |-
            The URL endpoint to use for the requests.
            It can be changed for testing purposes.
          default: https://api.openai.com/v1/embeddings.
          type: string
      required:
      - api_key
      - model_id
    inference._types.OpenAISimilarityType:
      type: string
      enum:
      - cosine
      - dot_product
      - l2_norm
    inference._types.OpenAITaskSettings:
      type: object
      properties:
        user:
          description: |-
            For a `completion` or `text_embedding` task, specify the user issuing the request.
            This information can be used for abuse detection.
          type: string
        headers:
          description: |-
            Specifies custom HTTP header parameters.
            For example:
            ```
            "headers":{
              "Custom-Header": "Some-Value",
              "Another-Custom-Header": "Another-Value"
            }
            ```
          type: object
    inference._types.InferenceEndpointInfoOpenAI:
      allOf:
      - "$ref": "#/components/schemas/inference._types.InferenceEndpoint"
      - type: object
        properties:
          inference_id:
            description: The inference Id
            type: string
          task_type:
            description: The task type
            allOf:
            - "$ref": "#/components/schemas/inference._types.TaskTypeOpenAI"
        required:
        - inference_id
        - task_type
    inference._types.TaskTypeOpenAI:
      type: string
      enum:
      - text_embedding
      - chat_completion
      - completion
    inference._types.OpenShiftAiTaskType:
      type: string
      enum:
      - text_embedding
      - completion
      - chat_completion
      - rerank
    inference._types.OpenShiftAiServiceType:
      type: string
      enum:
      - openshift_ai
    inference._types.OpenShiftAiServiceSettings:
      type: object
      properties:
        api_key:
          description: |-
            A valid API key for your OpenShift AI endpoint.
            Can be found in `Token authentication` section of model related information.
          type: string
        url:
          description: The URL of the OpenShift AI hosted model endpoint.
          type: string
        model_id:
          description: |-
            The name of the model to use for the inference task.
            Refer to the hosted model's documentation for the name if needed.
            Service has been tested and confirmed to be working with the following models:
            * For `text_embedding` task - `gritlm-7b`.
            * For `completion` and `chat_completion` tasks - `llama-31-8b-instruct`.
            * For `rerank` task - `bge-reranker-v2-m3`.
          type: string
        max_input_tokens:
          description: For a `text_embedding` task, the maximum number of tokens per
            input before chunking occurs.
          type: number
        similarity:
          description: |-
            For a `text_embedding` task, the similarity measure. One of cosine, dot_product, l2_norm.
            If not specified, the default dot_product value is used.
          allOf:
          - "$ref": "#/components/schemas/inference._types.OpenShiftAiSimilarityType"
        rate_limit:
          description: |-
            This setting helps to minimize the number of rate limit errors returned from the OpenShift AI API.
            By default, the `openshift_ai` service sets the number of requests allowed per minute to 3000.
          allOf:
          - "$ref": "#/components/schemas/inference._types.RateLimitSetting"
      required:
      - api_key
      - url
    inference._types.OpenShiftAiSimilarityType:
      type: string
      enum:
      - cosine
      - dot_product
      - l2_norm
    inference._types.OpenShiftAiTaskSettings:
      type: object
      properties:
        return_documents:
          description: For a `rerank` task, whether to return the source documents
            in the response.
          type: boolean
        top_n:
          description: For a `rerank` task, the number of most relevant documents
            to return.
          type: number
    inference._types.InferenceEndpointInfoOpenShiftAi:
      allOf:
      - "$ref": "#/components/schemas/inference._types.InferenceEndpoint"
      - type: object
        properties:
          inference_id:
            description: The inference Id
            type: string
          task_type:
            description: The task type
            allOf:
            - "$ref": "#/components/schemas/inference._types.TaskTypeOpenShiftAi"
        required:
        - inference_id
        - task_type
    inference._types.TaskTypeOpenShiftAi:
      type: string
      enum:
      - text_embedding
      - chat_completion
      - completion
      - rerank
    inference._types.VoyageAITaskType:
      type: string
      enum:
      - text_embedding
      - rerank
    inference._types.VoyageAIServiceType:
      type: string
      enum:
      - voyageai
    inference._types.VoyageAIServiceSettings:
      type: object
      properties:
        dimensions:
          externalDocs:
            url: https://docs.voyageai.com/docs/embeddings
          description: |-
            The number of dimensions for resulting output embeddings.
            This setting maps to `output_dimension` in the VoyageAI documentation.
            Only for the `text_embedding` task type.
          type: number
        model_id:
          externalDocs:
            url: https://docs.voyageai.com/docs/reranker
          description: |-
            The name of the model to use for the inference task.
            Refer to the VoyageAI documentation for the list of available text embedding and rerank models.
          type: string
        rate_limit:
          description: |-
            This setting helps to minimize the number of rate limit errors returned from VoyageAI.
            The `voyageai` service sets a default number of requests allowed per minute depending on the task type.
            For both `text_embedding` and `rerank`, it is set to `2000`.
          allOf:
          - "$ref": "#/components/schemas/inference._types.RateLimitSetting"
        embedding_type:
          externalDocs:
            url: https://docs.voyageai.com/docs/embeddings
          description: |-
            The data type for the embeddings to be returned.
            This setting maps to `output_dtype` in the VoyageAI documentation.
            Permitted values: float, int8, bit.
            `int8` is a synonym of `byte` in the VoyageAI documentation.
            `bit` is a synonym of `binary` in the VoyageAI documentation.
            Only for the `text_embedding` task type.
          type: number
      required:
      - model_id
    inference._types.VoyageAITaskSettings:
      type: object
      properties:
        input_type:
          description: |-
            Type of the input text.
            Permitted values: `ingest` (maps to `document` in the VoyageAI documentation), `search` (maps to `query` in the VoyageAI documentation).
            Only for the `text_embedding` task type.
          type: string
        return_documents:
          description: |-
            Whether to return the source documents in the response.
            Only for the `rerank` task type.
          default: false
          type: boolean
        top_k:
          description: |-
            The number of most relevant documents to return.
            If not specified, the reranking results of all documents will be returned.
            Only for the `rerank` task type.
          type: number
        truncation:
          description: Whether to truncate the input texts to fit within the context
            length.
          default: true
          type: boolean
    inference._types.InferenceEndpointInfoVoyageAI:
      allOf:
      - "$ref": "#/components/schemas/inference._types.InferenceEndpoint"
      - type: object
        properties:
          inference_id:
            description: The inference Id
            type: string
          task_type:
            description: The task type
            allOf:
            - "$ref": "#/components/schemas/inference._types.TaskTypeVoyageAI"
        required:
        - inference_id
        - task_type
    inference._types.TaskTypeVoyageAI:
      type: string
      enum:
      - text_embedding
      - rerank
    inference._types.WatsonxTaskType:
      type: string
      enum:
      - text_embedding
      - rerank
      - chat_completion
      - completion
    inference._types.WatsonxServiceType:
      type: string
      enum:
      - watsonxai
    inference._types.WatsonxServiceSettings:
      type: object
      properties:
        api_key:
          externalDocs:
            url: https://cloud.ibm.com/iam/apikeys
          description: |-
            A valid API key of your Watsonx account.
            You can find your Watsonx API keys or you can create a new one on the API keys page.

            IMPORTANT: You need to provide the API key only once, during the inference model creation.
            The get inference endpoint API does not retrieve your API key.
          type: string
        api_version:
          externalDocs:
            url: https://cloud.ibm.com/apidocs/watsonx-ai#active-version-dates
          description: |-
            A version parameter that takes a version date in the format of `YYYY-MM-DD`.
            For the active version data parameters, refer to the Wastonx documentation.
          type: string
        model_id:
          externalDocs:
            url: https://www.ibm.com/products/watsonx-ai/foundation-models
          description: |-
            The name of the model to use for the inference task.
            Refer to the IBM Embedding Models section in the Watsonx documentation for the list of available text embedding models.
            Refer to the IBM library - Foundation models in Watsonx.ai.
          type: string
        project_id:
          description: The identifier of the IBM Cloud project to use for the inference
            task.
          type: string
        rate_limit:
          description: |-
            This setting helps to minimize the number of rate limit errors returned from Watsonx.
            By default, the `watsonxai` service sets the number of requests allowed per minute to 120.
          allOf:
          - "$ref": "#/components/schemas/inference._types.RateLimitSetting"
        url:
          description: The URL of the inference endpoint that you created on Watsonx.
          type: string
      required:
      - api_key
      - api_version
      - model_id
      - project_id
      - url
    inference._types.InferenceEndpointInfoWatsonx:
      allOf:
      - "$ref": "#/components/schemas/inference._types.InferenceEndpoint"
      - type: object
        properties:
          inference_id:
            description: The inference Id
            type: string
          task_type:
            description: The task type
            allOf:
            - "$ref": "#/components/schemas/inference._types.TaskTypeWatsonx"
        required:
        - inference_id
        - task_type
    inference._types.TaskTypeWatsonx:
      type: string
      enum:
      - text_embedding
      - chat_completion
      - completion
    inference._types.RerankedInferenceResult:
      description: Defines the response for a rerank request.
      type: object
      properties:
        rerank:
          type: array
          items:
            "$ref": "#/components/schemas/inference._types.RankedDocument"
      required:
      - rerank
    inference._types.SparseEmbeddingInferenceResult:
      description: The response format for the sparse embedding request.
      type: object
      properties:
        sparse_embedding:
          type: array
          items:
            "$ref": "#/components/schemas/inference._types.SparseEmbeddingResult"
      required:
      - sparse_embedding
    inference._types.TextEmbeddingInferenceResult:
      description: TextEmbeddingInferenceResult is an aggregation of mutually exclusive
        text_embedding variants
      type: object
      properties:
        text_embedding_bytes:
          type: array
          items:
            "$ref": "#/components/schemas/inference._types.DenseEmbeddingByteResult"
        text_embedding_bits:
          type: array
          items:
            "$ref": "#/components/schemas/inference._types.DenseEmbeddingByteResult"
        text_embedding:
          type: array
          items:
            "$ref": "#/components/schemas/inference._types.DenseEmbeddingResult"
      minProperties: 1
      maxProperties: 1
    _types.ElasticsearchVersionInfo:
      type: object
      properties:
        build_date:
          description: The Elasticsearch Git commit's date.
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
        build_flavor:
          description: The build flavor. For example, `default`.
          type: string
        build_hash:
          description: The Elasticsearch Git commit's SHA hash.
          type: string
        build_snapshot:
          description: Indicates whether the Elasticsearch build was a snapshot.
          type: boolean
        build_type:
          description: |-
            The build type that corresponds to how Elasticsearch was installed.
            For example, `docker`, `rpm`, or `tar`.
          type: string
        lucene_version:
          description: The version number of Elasticsearch's underlying Lucene software.
          allOf:
          - "$ref": "#/components/schemas/_types.VersionString"
        minimum_index_compatibility_version:
          description: The minimum index version with which the responding node can
            read from disk.
          allOf:
          - "$ref": "#/components/schemas/_types.VersionString"
        minimum_wire_compatibility_version:
          description: |-
            The minimum node version with which the responding node can communicate.
            Also the minimum version from which you can perform a rolling upgrade.
          allOf:
          - "$ref": "#/components/schemas/_types.VersionString"
        number:
          description: |-
            The Elasticsearch version number.

            ::: IMPORTANT: For Serverless deployments, this static value is always `8.11.0` and is used solely for backward compatibility with legacy clients.
             Serverless environments are versionless and automatically upgraded, so this value can be safely ignored.
          type: string
      required:
      - build_date
      - build_flavor
      - build_hash
      - build_snapshot
      - build_type
      - lucene_version
      - minimum_index_compatibility_version
      - minimum_wire_compatibility_version
      - number
    ingest.geo_ip_stats.GeoIpDownloadStatistics:
      type: object
      properties:
        successful_downloads:
          description: Total number of successful database downloads.
          type: number
        failed_downloads:
          description: Total number of failed database downloads.
          type: number
        total_download_time:
          description: Total milliseconds spent downloading databases.
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
        databases_count:
          description: Current number of databases available for use.
          type: number
        skipped_updates:
          description: Total number of database updates skipped.
          type: number
        expired_databases:
          description: Total number of databases not updated after 30 days
          type: number
      required:
      - successful_downloads
      - failed_downloads
      - total_download_time
      - databases_count
      - skipped_updates
      - expired_databases
    ingest.geo_ip_stats.GeoIpNodeDatabases:
      description: Downloaded databases for the node. The field key is the node ID.
      type: object
      properties:
        databases:
          description: Downloaded databases for the node.
          type: array
          items:
            "$ref": "#/components/schemas/ingest.geo_ip_stats.GeoIpNodeDatabaseName"
        files_in_temp:
          description: 'Downloaded database files, including related license files.
            Elasticsearch stores these files in the node’s temporary directory: $ES_TMPDIR/geoip-databases/<node_id>.'
          type: array
          items:
            type: string
      required:
      - databases
      - files_in_temp
    ingest.geo_ip_stats.GeoIpNodeDatabaseName:
      type: object
      properties:
        name:
          description: Name of the database.
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
      required:
      - name
    ingest.get_geoip_database.DatabaseConfigurationMetadata:
      type: object
      properties:
        id:
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        version:
          type: number
        modified_date_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
        database:
          allOf:
          - "$ref": "#/components/schemas/ingest._types.DatabaseConfiguration"
      required:
      - id
      - version
      - modified_date_millis
      - database
    ingest._types.DatabaseConfiguration:
      description: |-
        The configuration necessary to identify which IP geolocation provider to use to download a database, as well as any provider-specific configuration necessary for such downloading.
        At present, the only supported providers are `maxmind` and `ipinfo`, and the `maxmind` provider requires that an `account_id` (string) is configured.
        A provider (either `maxmind` or `ipinfo`) must be specified. The web and local providers can be returned as read only configurations.
      allOf:
      - type: object
        properties:
          name:
            description: The provider-assigned name of the IP geolocation database
              to download.
            allOf:
            - "$ref": "#/components/schemas/_types.Name"
        required:
        - name
      - type: object
        properties:
          maxmind:
            allOf:
            - "$ref": "#/components/schemas/ingest._types.Maxmind"
          ipinfo:
            allOf:
            - "$ref": "#/components/schemas/ingest._types.Ipinfo"
        minProperties: 1
        maxProperties: 1
    ingest._types.Maxmind:
      type: object
      properties:
        account_id:
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
      required:
      - account_id
    ingest._types.Ipinfo:
      type: object
    ingest.get_ip_location_database.DatabaseConfigurationMetadata:
      type: object
      properties:
        id:
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        version:
          allOf:
          - "$ref": "#/components/schemas/_types.VersionNumber"
        modified_date_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
        modified_date:
          allOf:
          - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
        database:
          allOf:
          - "$ref": "#/components/schemas/ingest._types.DatabaseConfigurationFull"
      required:
      - id
      - version
      - database
    ingest._types.DatabaseConfigurationFull:
      allOf:
      - type: object
        properties:
          name:
            description: The provider-assigned name of the IP geolocation database
              to download.
            allOf:
            - "$ref": "#/components/schemas/_types.Name"
        required:
        - name
      - type: object
        properties:
          web:
            allOf:
            - "$ref": "#/components/schemas/ingest._types.Web"
          local:
            allOf:
            - "$ref": "#/components/schemas/ingest._types.Local"
          maxmind:
            allOf:
            - "$ref": "#/components/schemas/ingest._types.Maxmind"
          ipinfo:
            allOf:
            - "$ref": "#/components/schemas/ingest._types.Ipinfo"
        minProperties: 1
        maxProperties: 1
    ingest._types.Web:
      type: object
    ingest._types.Local:
      type: object
      properties:
        type:
          type: string
      required:
      - type
    ingest._types.Pipeline:
      type: object
      properties:
        description:
          description: Description of the ingest pipeline.
          type: string
        on_failure:
          description: Processors to run immediately after a processor failure.
          type: array
          items:
            "$ref": "#/components/schemas/ingest._types.ProcessorContainer"
        processors:
          description: |-
            Processors used to perform transformations on documents before indexing.
            Processors run sequentially in the order specified.
          type: array
          items:
            "$ref": "#/components/schemas/ingest._types.ProcessorContainer"
        version:
          description: Version number used by external systems to track ingest pipelines.
          allOf:
          - "$ref": "#/components/schemas/_types.VersionNumber"
        deprecated:
          description: |-
            Marks this ingest pipeline as deprecated.
            When a deprecated ingest pipeline is referenced as the default or final pipeline when creating or updating a non-deprecated index template, Elasticsearch will emit a deprecation warning.
          default: false
          type: boolean
        _meta:
          description: Arbitrary metadata about the ingest pipeline. This map is not
            automatically generated by Elasticsearch.
          allOf:
          - "$ref": "#/components/schemas/_types.Metadata"
        created_date:
          description: Date and time when the pipeline was created. Only returned
            if the `human` query parameter is `true`.
          x-state: Generally available; Added in 9.2.0
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
        created_date_millis:
          description: Date and time when the pipeline was created, in milliseconds
            since the epoch.
          x-state: Generally available; Added in 9.2.0
          allOf:
          - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
        modified_date:
          description: Date and time when the pipeline was last modified. Only returned
            if the `human` query parameter is `true`.
          x-state: Generally available; Added in 9.2.0
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
        modified_date_millis:
          description: Date and time when the pipeline was last modified, in milliseconds
            since the epoch.
          x-state: Generally available; Added in 9.2.0
          allOf:
          - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
        field_access_pattern:
          description: Controls how processors in this pipeline should read and write
            data on a document's source.
          default: classic
          x-state: Generally available; Added in 9.2.0
          allOf:
          - "$ref": "#/components/schemas/ingest._types.FieldAccessPattern"
    ingest._types.ProcessorContainer:
      type: object
      properties:
        append:
          description: |-
            Appends one or more values to an existing array if the field already exists and it is an array.
            Converts a scalar to an array and appends one or more values to it if the field exists and it is a scalar.
            Creates an array containing the provided values if the field doesn’t exist.
            Accepts a single value or an array of values.
          allOf:
          - "$ref": "#/components/schemas/ingest._types.AppendProcessor"
        attachment:
          description: The attachment processor lets Elasticsearch extract file attachments
            in common formats (such as PPT, XLS, and PDF) by using the Apache text
            extraction library Tika.
          allOf:
          - "$ref": "#/components/schemas/ingest._types.AttachmentProcessor"
        bytes:
          description: |-
            Converts a human readable byte value (for example `1kb`) to its value in bytes (for example `1024`).
            If the field is an array of strings, all members of the array will be converted.
            Supported human readable units are "b", "kb", "mb", "gb", "tb", "pb" case insensitive.
            An error will occur if the field is not a supported format or resultant value exceeds 2^63.
          allOf:
          - "$ref": "#/components/schemas/ingest._types.BytesProcessor"
        cef:
          description: Converts a CEF message into a structured format.
          allOf:
          - "$ref": "#/components/schemas/ingest._types.CefProcessor"
        circle:
          description: Converts circle definitions of shapes to regular polygons which
            approximate them.
          allOf:
          - "$ref": "#/components/schemas/ingest._types.CircleProcessor"
        community_id:
          description: |-
            Computes the Community ID for network flow data as defined in the
            Community ID Specification. You can use a community ID to correlate network
            events related to a single flow.
          allOf:
          - "$ref": "#/components/schemas/ingest._types.CommunityIDProcessor"
        convert:
          description: |-
            Converts a field in the currently ingested document to a different type, such as converting a string to an integer.
            If the field value is an array, all members will be converted.
          allOf:
          - "$ref": "#/components/schemas/ingest._types.ConvertProcessor"
        csv:
          description: |-
            Extracts fields from CSV line out of a single text field within a document.
            Any empty field in CSV will be skipped.
          allOf:
          - "$ref": "#/components/schemas/ingest._types.CsvProcessor"
        date:
          description: Parses dates from fields, and then uses the date or timestamp
            as the timestamp for the document.
          allOf:
          - "$ref": "#/components/schemas/ingest._types.DateProcessor"
        date_index_name:
          description: The purpose of this processor is to point documents to the
            right time based index based on a date or timestamp field in a document
            by using the date math index name support.
          allOf:
          - "$ref": "#/components/schemas/ingest._types.DateIndexNameProcessor"
        dissect:
          description: Extracts structured fields out of a single text field by matching
            the text field against a delimiter-based pattern.
          allOf:
          - "$ref": "#/components/schemas/ingest._types.DissectProcessor"
        dot_expander:
          description: |-
            Expands a field with dots into an object field.
            This processor allows fields with dots in the name to be accessible by other processors in the pipeline.
            Otherwise these fields can’t be accessed by any processor.
          allOf:
          - "$ref": "#/components/schemas/ingest._types.DotExpanderProcessor"
        drop:
          description: |-
            Drops the document without raising any errors.
            This is useful to prevent the document from getting indexed based on some condition.
          allOf:
          - "$ref": "#/components/schemas/ingest._types.DropProcessor"
        enrich:
          description: The `enrich` processor can enrich documents with data from
            another index.
          allOf:
          - "$ref": "#/components/schemas/ingest._types.EnrichProcessor"
        fail:
          description: |-
            Raises an exception.
            This is useful for when you expect a pipeline to fail and want to relay a specific message to the requester.
          allOf:
          - "$ref": "#/components/schemas/ingest._types.FailProcessor"
        fingerprint:
          description: |-
            Computes a hash of the document’s content. You can use this hash for
            content fingerprinting.
          allOf:
          - "$ref": "#/components/schemas/ingest._types.FingerprintProcessor"
        foreach:
          description: Runs an ingest processor on each element of an array or object.
          allOf:
          - "$ref": "#/components/schemas/ingest._types.ForeachProcessor"
        ip_location:
          description: Currently an undocumented alias for GeoIP Processor.
          allOf:
          - "$ref": "#/components/schemas/ingest._types.IpLocationProcessor"
        geo_grid:
          description: |-
            Converts geo-grid definitions of grid tiles or cells to regular bounding boxes or polygons which describe their shape.
            This is useful if there is a need to interact with the tile shapes as spatially indexable fields.
          allOf:
          - "$ref": "#/components/schemas/ingest._types.GeoGridProcessor"
        geoip:
          description: The `geoip` processor adds information about the geographical
            location of an IPv4 or IPv6 address.
          allOf:
          - "$ref": "#/components/schemas/ingest._types.GeoIpProcessor"
        grok:
          description: |-
            Extracts structured fields out of a single text field within a document.
            You choose which field to extract matched fields from, as well as the grok pattern you expect will match.
            A grok pattern is like a regular expression that supports aliased expressions that can be reused.
          allOf:
          - "$ref": "#/components/schemas/ingest._types.GrokProcessor"
        gsub:
          description: |-
            Converts a string field by applying a regular expression and a replacement.
            If the field is an array of string, all members of the array will be converted.
            If any non-string values are encountered, the processor will throw an exception.
          allOf:
          - "$ref": "#/components/schemas/ingest._types.GsubProcessor"
        html_strip:
          description: |-
            Removes HTML tags from the field.
            If the field is an array of strings, HTML tags will be removed from all members of the array.
          allOf:
          - "$ref": "#/components/schemas/ingest._types.HtmlStripProcessor"
        inference:
          description: Uses a pre-trained data frame analytics model or a model deployed
            for natural language processing tasks to infer against the data that is
            being ingested in the pipeline.
          allOf:
          - "$ref": "#/components/schemas/ingest._types.InferenceProcessor"
        join:
          description: |-
            Joins each element of an array into a single string using a separator character between each element.
            Throws an error when the field is not an array.
          allOf:
          - "$ref": "#/components/schemas/ingest._types.JoinProcessor"
        json:
          description: Parses a string containing JSON data into a structured object,
            string, or other value.
          allOf:
          - "$ref": "#/components/schemas/ingest._types.JsonProcessor"
        kv:
          description: This processor helps automatically parse messages (or specific
            event fields) which are of the `foo=bar` variety.
          allOf:
          - "$ref": "#/components/schemas/ingest._types.KeyValueProcessor"
        lowercase:
          description: |-
            Converts a string to its lowercase equivalent.
            If the field is an array of strings, all members of the array will be converted.
          allOf:
          - "$ref": "#/components/schemas/ingest._types.LowercaseProcessor"
        network_direction:
          description: |-
            Calculates the network direction given a source IP address, destination IP
            address, and a list of internal networks.
          allOf:
          - "$ref": "#/components/schemas/ingest._types.NetworkDirectionProcessor"
        pipeline:
          description: Executes another pipeline.
          allOf:
          - "$ref": "#/components/schemas/ingest._types.PipelineProcessor"
        redact:
          description: |-
            The Redact processor uses the Grok rules engine to obscure text in the input document matching the given Grok patterns.
            The processor can be used to obscure Personal Identifying Information (PII) by configuring it to detect known patterns such as email or IP addresses.
            Text that matches a Grok pattern is replaced with a configurable string such as `<EMAIL>` where an email address is matched or simply replace all matches with the text `<REDACTED>` if preferred.
          allOf:
          - "$ref": "#/components/schemas/ingest._types.RedactProcessor"
        registered_domain:
          description: |-
            Extracts the registered domain (also known as the effective top-level
            domain or eTLD), sub-domain, and top-level domain from a fully qualified
            domain name (FQDN). Uses the registered domains defined in the Mozilla
            Public Suffix List.
          allOf:
          - "$ref": "#/components/schemas/ingest._types.RegisteredDomainProcessor"
        remove:
          description: |-
            Removes existing fields.
            If one field doesn’t exist, an exception will be thrown.
          allOf:
          - "$ref": "#/components/schemas/ingest._types.RemoveProcessor"
        rename:
          description: |-
            Renames an existing field.
            If the field doesn’t exist or the new name is already used, an exception will be thrown.
          allOf:
          - "$ref": "#/components/schemas/ingest._types.RenameProcessor"
        reroute:
          description: |-
            Routes a document to another target index or data stream.
            When setting the `destination` option, the target is explicitly specified and the dataset and namespace options can’t be set.
            When the `destination` option is not set, this processor is in a data stream mode. Note that in this mode, the reroute processor can only be used on data streams that follow the data stream naming scheme.
          allOf:
          - "$ref": "#/components/schemas/ingest._types.RerouteProcessor"
        script:
          description: |-
            Runs an inline or stored script on incoming documents.
            The script runs in the `ingest` context.
          allOf:
          - "$ref": "#/components/schemas/ingest._types.ScriptProcessor"
        set:
          description: |-
            Adds a field with the specified value.
            If the field already exists, its value will be replaced with the provided one.
          allOf:
          - "$ref": "#/components/schemas/ingest._types.SetProcessor"
        set_security_user:
          description: Sets user-related details (such as `username`, `roles`, `email`,
            `full_name`, `metadata`, `api_key`, `realm` and `authentication_type`)
            from the current authenticated user to the current document by pre-processing
            the ingest.
          allOf:
          - "$ref": "#/components/schemas/ingest._types.SetSecurityUserProcessor"
        sort:
          description: |-
            Sorts the elements of an array ascending or descending.
            Homogeneous arrays of numbers will be sorted numerically, while arrays of strings or heterogeneous arrays of strings + numbers will be sorted lexicographically.
            Throws an error when the field is not an array.
          allOf:
          - "$ref": "#/components/schemas/ingest._types.SortProcessor"
        split:
          description: |-
            Splits a field into an array using a separator character.
            Only works on string fields.
          allOf:
          - "$ref": "#/components/schemas/ingest._types.SplitProcessor"
        terminate:
          description: |-
            Terminates the current ingest pipeline, causing no further processors to be run.
            This will normally be executed conditionally, using the `if` option.
          allOf:
          - "$ref": "#/components/schemas/ingest._types.TerminateProcessor"
        trim:
          description: |-
            Trims whitespace from a field.
            If the field is an array of strings, all members of the array will be trimmed.
            This only works on leading and trailing whitespace.
          allOf:
          - "$ref": "#/components/schemas/ingest._types.TrimProcessor"
        uppercase:
          description: |-
            Converts a string to its uppercase equivalent.
            If the field is an array of strings, all members of the array will be converted.
          allOf:
          - "$ref": "#/components/schemas/ingest._types.UppercaseProcessor"
        urldecode:
          description: |-
            URL-decodes a string.
            If the field is an array of strings, all members of the array will be decoded.
          allOf:
          - "$ref": "#/components/schemas/ingest._types.UrlDecodeProcessor"
        uri_parts:
          description: |-
            Parses a Uniform Resource Identifier (URI) string and extracts its components as an object.
            This URI object includes properties for the URI’s domain, path, fragment, port, query, scheme, user info, username, and password.
          allOf:
          - "$ref": "#/components/schemas/ingest._types.UriPartsProcessor"
        user_agent:
          description: |-
            The `user_agent` processor extracts details from the user agent string a browser sends with its web requests.
            This processor adds this information by default under the `user_agent` field.
          allOf:
          - "$ref": "#/components/schemas/ingest._types.UserAgentProcessor"
      minProperties: 1
      maxProperties: 1
    ingest._types.AppendProcessor:
      allOf:
      - "$ref": "#/components/schemas/ingest._types.ProcessorBase"
      - type: object
        properties:
          field:
            description: |-
              The field to be appended to.
              Supports template snippets.
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          value:
            description: The value to be appended. Supports template snippets. May
              specify only one of `value` or `copy_from`.
            oneOf:
            - type: object
            - type: array
              items:
                type: object
          media_type:
            description: |-
              The media type for encoding `value`.
              Applies only when value is a template snippet.
              Must be one of `application/json`, `text/plain`, or `application/x-www-form-urlencoded`.
            default: '"application/json"'
            type: string
          copy_from:
            description: The origin field which will be appended to `field`, cannot
              set `value` simultaneously.
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          allow_duplicates:
            description: If `false`, the processor does not append values already
              present in the field.
            default: true
            type: boolean
          ignore_empty_values:
            description: |-
              If `true`, the processor will skip empty values from the source (e.g. empty strings, and null values),
              rather than appending them to the field.
            default: false
            type: boolean
        required:
        - field
    ingest._types.ProcessorBase:
      type: object
      properties:
        description:
          description: |-
            Description of the processor.
            Useful for describing the purpose of the processor or its configuration.
          type: string
        if:
          description: Conditionally execute the processor.
          allOf:
          - "$ref": "#/components/schemas/_types.Script"
        ignore_failure:
          description: Ignore failures for the processor.
          type: boolean
        on_failure:
          description: Handle failures for the processor.
          type: array
          items:
            "$ref": "#/components/schemas/ingest._types.ProcessorContainer"
        tag:
          description: |-
            Identifier for the processor.
            Useful for debugging and metrics.
          type: string
    ingest._types.AttachmentProcessor:
      allOf:
      - "$ref": "#/components/schemas/ingest._types.ProcessorBase"
      - type: object
        properties:
          field:
            description: The field to get the base64 encoded field from.
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          ignore_missing:
            description: If `true` and field does not exist, the processor quietly
              exits without modifying the document.
            default: false
            type: boolean
          indexed_chars:
            description: |-
              The number of chars being used for extraction to prevent huge fields.
              Use `-1` for no limit.
            default: 100000
            type: number
          indexed_chars_field:
            description: Field name from which you can overwrite the number of chars
              being used for extraction.
            default: 'null'
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          properties:
            description: |-
              Array of properties to select to be stored.
              Can be `content`, `title`, `name`, `author`, `keywords`, `date`, `content_type`, `content_length`, `language`.
            type: array
            items:
              type: string
          target_field:
            description: The field that will hold the attachment information.
            default: attachment
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          remove_binary:
            description: If true, the binary field will be removed from the document
            default: false
            type: boolean
          resource_name:
            description: |-
              Field containing the name of the resource to decode.
              If specified, the processor passes this resource name to the underlying Tika library to enable Resource Name Based Detection.
            type: string
        required:
        - field
    ingest._types.BytesProcessor:
      allOf:
      - "$ref": "#/components/schemas/ingest._types.ProcessorBase"
      - type: object
        properties:
          field:
            description: The field to convert.
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          ignore_missing:
            description: If `true` and `field` does not exist or is `null`, the processor
              quietly exits without modifying the document.
            default: false
            type: boolean
          target_field:
            description: |-
              The field to assign the converted value to.
              By default, the field is updated in-place.
            default: field
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
        required:
        - field
    ingest._types.CefProcessor:
      allOf:
      - "$ref": "#/components/schemas/ingest._types.ProcessorBase"
      - type: object
        properties:
          field:
            description: The field containing the CEF message.
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          ignore_missing:
            description: If `true` and `field` does not exist or is `null`, the processor
              quietly exits without modifying the document.
            default: false
            type: boolean
          target_field:
            description: |-
              The field to assign the converted value to.
              By default, the `target_field` is 'cef'
            default: "'cef'"
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          ignore_empty_values:
            description: If `true` and value is anempty string in extensions, the
              processor quietly exits without modifying the document.
            default: false
            type: boolean
          timezone:
            description: The timezone to use when parsing the date and when date math
              index supports resolves expressions into concrete index names.
            default: UTC
            type: string
        required:
        - field
    ingest._types.CircleProcessor:
      allOf:
      - "$ref": "#/components/schemas/ingest._types.ProcessorBase"
      - type: object
        properties:
          error_distance:
            description: The difference between the resulting inscribed distance from
              center to side and the circle’s radius (measured in meters for `geo_shape`,
              unit-less for `shape`).
            type: number
          field:
            description: The field to interpret as a circle. Either a string in WKT
              format or a map for GeoJSON.
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          ignore_missing:
            description: If `true` and `field` does not exist, the processor quietly
              exits without modifying the document.
            default: false
            type: boolean
          shape_type:
            description: 'Which field mapping type is to be used when processing the
              circle: `geo_shape` or `shape`.'
            allOf:
            - "$ref": "#/components/schemas/ingest._types.ShapeType"
          target_field:
            description: |-
              The field to assign the polygon shape to
              By default, the field is updated in-place.
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
        required:
        - error_distance
        - field
        - shape_type
    ingest._types.ShapeType:
      type: string
      enum:
      - geo_shape
      - shape
    ingest._types.CommunityIDProcessor:
      allOf:
      - "$ref": "#/components/schemas/ingest._types.ProcessorBase"
      - type: object
        properties:
          source_ip:
            description: Field containing the source IP address.
            default: source.ip
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          source_port:
            description: Field containing the source port.
            default: source.port
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          destination_ip:
            description: Field containing the destination IP address.
            default: destination.ip
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          destination_port:
            description: Field containing the destination port.
            default: destination.port
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          iana_number:
            description: Field containing the IANA number.
            default: network.iana_number
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          icmp_type:
            description: Field containing the ICMP type.
            default: icmp.type
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          icmp_code:
            description: Field containing the ICMP code.
            default: icmp.code
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          transport:
            description: |-
              Field containing the transport protocol name or number. Used only when the
              iana_number field is not present. The following protocol names are currently
              supported: eigrp, gre, icmp, icmpv6, igmp, ipv6-icmp, ospf, pim, sctp, tcp, udp
            default: network.transport
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          target_field:
            description: Output field for the community ID.
            default: network.community_id
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          seed:
            description: |-
              Seed for the community ID hash. Must be between 0 and 65535 (inclusive). The
              seed can prevent hash collisions between network domains, such as a staging
              and production network that use the same addressing scheme.
            default: 0
            type: number
          ignore_missing:
            description: |-
              If true and any required fields are missing, the processor quietly exits
              without modifying the document.
            default: true
            type: boolean
    ingest._types.ConvertProcessor:
      allOf:
      - "$ref": "#/components/schemas/ingest._types.ProcessorBase"
      - type: object
        properties:
          field:
            description: The field whose value is to be converted.
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          ignore_missing:
            description: If `true` and `field` does not exist or is `null`, the processor
              quietly exits without modifying the document.
            default: false
            type: boolean
          target_field:
            description: |-
              The field to assign the converted value to.
              By default, the `field` is updated in-place.
            default: field
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          type:
            description: The type to convert the existing value to.
            allOf:
            - "$ref": "#/components/schemas/ingest._types.ConvertType"
        required:
        - field
        - type
    ingest._types.ConvertType:
      type: string
      enum:
      - integer
      - long
      - double
      - float
      - boolean
      - ip
      - string
      - auto
    ingest._types.CsvProcessor:
      allOf:
      - "$ref": "#/components/schemas/ingest._types.ProcessorBase"
      - type: object
        properties:
          empty_value:
            description: |-
              Value used to fill empty fields.
              Empty fields are skipped if this is not provided.
              An empty field is one with no value (2 consecutive separators) or empty quotes (`""`).
            type: object
          field:
            description: The field to extract data from.
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          ignore_missing:
            description: If `true` and `field` does not exist, the processor quietly
              exits without modifying the document.
            type: boolean
          quote:
            description: Quote used in CSV, has to be single character string.
            default: "\""
            type: string
          separator:
            description: Separator used in CSV, has to be single character string.
            default: ","
            type: string
          target_fields:
            description: The array of fields to assign extracted values to.
            allOf:
            - "$ref": "#/components/schemas/_types.Fields"
          trim:
            description: Trim whitespaces in unquoted fields.
            type: boolean
        required:
        - field
        - target_fields
    ingest._types.DateProcessor:
      allOf:
      - "$ref": "#/components/schemas/ingest._types.ProcessorBase"
      - type: object
        properties:
          field:
            description: The field to get the date from.
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          formats:
            description: |-
              An array of the expected date formats.
              Can be a java time pattern or one of the following formats: ISO8601, UNIX, UNIX_MS, or TAI64N.
            type: array
            items:
              type: string
          locale:
            description: |-
              The locale to use when parsing the date, relevant when parsing month names or week days.
              Supports template snippets.
            default: ENGLISH
            type: string
          target_field:
            description: The field that will hold the parsed date.
            default: "@timestamp"
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          timezone:
            description: |-
              The timezone to use when parsing the date.
              Supports template snippets.
            default: UTC
            type: string
          output_format:
            description: |-
              The format to use when writing the date to target_field. Must be a valid
              java time pattern.
            default: yyyy-MM-dd'T'HH:mm:ss.SSSXXX
            type: string
        required:
        - field
        - formats
    ingest._types.DateIndexNameProcessor:
      allOf:
      - "$ref": "#/components/schemas/ingest._types.ProcessorBase"
      - type: object
        properties:
          date_formats:
            description: |-
              An array of the expected date formats for parsing dates / timestamps in the document being preprocessed.
              Can be a java time pattern or one of the following formats: ISO8601, UNIX, UNIX_MS, or TAI64N.
            type: array
            items:
              type: string
          date_rounding:
            description: |-
              How to round the date when formatting the date into the index name. Valid values are:
              `y` (year), `M` (month), `w` (week), `d` (day), `h` (hour), `m` (minute) and `s` (second).
              Supports template snippets.
            type: string
          field:
            description: The field to get the date or timestamp from.
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          index_name_format:
            description: |-
              The format to be used when printing the parsed date into the index name.
              A valid java time pattern is expected here.
              Supports template snippets.
            default: yyyy-MM-dd
            type: string
          index_name_prefix:
            description: |-
              A prefix of the index name to be prepended before the printed date.
              Supports template snippets.
            type: string
          locale:
            description: The locale to use when parsing the date from the document
              being preprocessed, relevant when parsing month names or week days.
            default: ENGLISH
            type: string
          timezone:
            description: The timezone to use when parsing the date and when date math
              index supports resolves expressions into concrete index names.
            default: UTC
            type: string
        required:
        - date_rounding
        - field
    ingest._types.DissectProcessor:
      allOf:
      - "$ref": "#/components/schemas/ingest._types.ProcessorBase"
      - type: object
        properties:
          append_separator:
            description: The character(s) that separate the appended fields.
            default: '""'
            type: string
          field:
            description: The field to dissect.
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          ignore_missing:
            description: If `true` and `field` does not exist or is `null`, the processor
              quietly exits without modifying the document.
            default: false
            type: boolean
          pattern:
            description: The pattern to apply to the field.
            type: string
        required:
        - field
        - pattern
    ingest._types.DotExpanderProcessor:
      allOf:
      - "$ref": "#/components/schemas/ingest._types.ProcessorBase"
      - type: object
        properties:
          field:
            description: |-
              The field to expand into an object field.
              If set to `*`, all top-level fields will be expanded.
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          override:
            description: |-
              Controls the behavior when there is already an existing nested object that conflicts with the expanded field.
              When `false`, the processor will merge conflicts by combining the old and the new values into an array.
              When `true`, the value from the expanded field will overwrite the existing value.
            default: false
            type: boolean
          path:
            description: |-
              The field that contains the field to expand.
              Only required if the field to expand is part another object field, because the `field` option can only understand leaf fields.
            type: string
        required:
        - field
    ingest._types.DropProcessor:
      allOf:
      - "$ref": "#/components/schemas/ingest._types.ProcessorBase"
      - type: object
    ingest._types.EnrichProcessor:
      allOf:
      - "$ref": "#/components/schemas/ingest._types.ProcessorBase"
      - type: object
        properties:
          field:
            description: |-
              The field in the input document that matches the policies match_field used to retrieve the enrichment data.
              Supports template snippets.
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          ignore_missing:
            description: If `true` and `field` does not exist, the processor quietly
              exits without modifying the document.
            default: false
            type: boolean
          max_matches:
            description: |-
              The maximum number of matched documents to include under the configured target field.
              The `target_field` will be turned into a json array if `max_matches` is higher than 1, otherwise `target_field` will become a json object.
              In order to avoid documents getting too large, the maximum allowed value is 128.
            default: 1
            type: number
          override:
            description: |-
              If processor will update fields with pre-existing non-null-valued field.
              When set to `false`, such fields will not be touched.
            default: true
            type: boolean
          policy_name:
            description: The name of the enrich policy to use.
            type: string
          shape_relation:
            description: |+
              A spatial relation operator used to match the geoshape of incoming documents to documents in the enrich index.
              This option is only used for `geo_match` enrich policy types.

              Supported values include:
                - `intersects`: Return all documents whose `geo_shape` or `geo_point` field intersects the query geometry.
                - `disjoint`: Return all documents whose `geo_shape` or `geo_point` field has nothing in common with the query geometry.
                - `within`: Return all documents whose `geo_shape` or `geo_point` field is within the query geometry.
              Line geometries are not supported.
                - `contains`: Return all documents whose `geo_shape` or `geo_point` field contains the query geometry.

            default: INTERSECTS
            allOf:
            - "$ref": "#/components/schemas/_types.GeoShapeRelation"
          target_field:
            description: |-
              Field added to incoming documents to contain enrich data. This field contains both the `match_field` and `enrich_fields` specified in the enrich policy.
              Supports template snippets.
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
        required:
        - field
        - policy_name
        - target_field
    _types.GeoShapeRelation:
      type: string
      enum:
      - intersects
      - disjoint
      - within
      - contains
    ingest._types.FailProcessor:
      allOf:
      - "$ref": "#/components/schemas/ingest._types.ProcessorBase"
      - type: object
        properties:
          message:
            description: |-
              The error message thrown by the processor.
              Supports template snippets.
            type: string
        required:
        - message
    ingest._types.FingerprintProcessor:
      allOf:
      - "$ref": "#/components/schemas/ingest._types.ProcessorBase"
      - type: object
        properties:
          fields:
            description: |-
              Array of fields to include in the fingerprint. For objects, the processor
              hashes both the field key and value. For other fields, the processor hashes
              only the field value.
            allOf:
            - "$ref": "#/components/schemas/_types.Fields"
          target_field:
            description: Output field for the fingerprint.
            default: fingerprint
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          salt:
            description: Salt value for the hash function.
            type: string
          method:
            description: |-
              The hash method used to compute the fingerprint. Must be one of MD5, SHA-1,
              SHA-256, SHA-512, or MurmurHash3.
            default: SHA-1
            allOf:
            - "$ref": "#/components/schemas/ingest._types.FingerprintDigest"
          ignore_missing:
            description: |-
              If true, the processor ignores any missing fields. If all fields are
              missing, the processor silently exits without modifying the document.
            default: false
            type: boolean
        required:
        - fields
    ingest._types.FingerprintDigest:
      type: string
      enum:
      - MD5
      - SHA-1
      - SHA-256
      - SHA-512
      - MurmurHash3
    ingest._types.ForeachProcessor:
      allOf:
      - "$ref": "#/components/schemas/ingest._types.ProcessorBase"
      - type: object
        properties:
          field:
            description: Field containing array or object values.
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          ignore_missing:
            description: If `true`, the processor silently exits without changing
              the document if the `field` is `null` or missing.
            default: false
            type: boolean
          processor:
            description: Ingest processor to run on each element.
            allOf:
            - "$ref": "#/components/schemas/ingest._types.ProcessorContainer"
        required:
        - field
        - processor
    ingest._types.IpLocationProcessor:
      allOf:
      - "$ref": "#/components/schemas/ingest._types.ProcessorBase"
      - type: object
        properties:
          database_file:
            description: The database filename referring to a database the module
              ships with (GeoLite2-City.mmdb, GeoLite2-Country.mmdb, or GeoLite2-ASN.mmdb)
              or a custom database in the ingest-geoip config directory.
            default: GeoLite2-City.mmdb
            type: string
          field:
            description: The field to get the ip address from for the geographical
              lookup.
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          first_only:
            description: If `true`, only the first found IP location data will be
              returned, even if the field contains an array.
            default: true
            type: boolean
          ignore_missing:
            description: If `true` and `field` does not exist, the processor quietly
              exits without modifying the document.
            default: false
            type: boolean
          properties:
            description: Controls what properties are added to the `target_field`
              based on the IP location lookup.
            type: array
            items:
              type: string
          target_field:
            description: The field that will hold the geographical information looked
              up from the MaxMind database.
            default: geoip
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          download_database_on_pipeline_creation:
            description: |-
              If `true` (and if `ingest.geoip.downloader.eager.download` is `false`), the missing database is downloaded when the pipeline is created.
              Else, the download is triggered by when the pipeline is used as the `default_pipeline` or `final_pipeline` in an index.
            type: boolean
        required:
        - field
    ingest._types.GeoGridProcessor:
      allOf:
      - "$ref": "#/components/schemas/ingest._types.ProcessorBase"
      - type: object
        properties:
          field:
            description: |-
              The field to interpret as a geo-tile.=
              The field format is determined by the `tile_type`.
            type: string
          tile_type:
            description: 'Three tile formats are understood: geohash, geotile and
              geohex.'
            allOf:
            - "$ref": "#/components/schemas/ingest._types.GeoGridTileType"
          target_field:
            description: The field to assign the polygon shape to, by default, the
              `field` is updated in-place.
            default: field
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          parent_field:
            description: If specified and a parent tile exists, save that tile address
              to this field.
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          children_field:
            description: If specified and children tiles exist, save those tile addresses
              to this field as an array of strings.
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          non_children_field:
            description: If specified and intersecting non-child tiles exist, save
              their addresses to this field as an array of strings.
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          precision_field:
            description: If specified, save the tile precision (zoom) as an integer
              to this field.
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          ignore_missing:
            description: If `true` and `field` does not exist, the processor quietly
              exits without modifying the document.
            default: false
            type: boolean
          target_format:
            description: Which format to save the generated polygon in.
            default: geojson
            allOf:
            - "$ref": "#/components/schemas/ingest._types.GeoGridTargetFormat"
        required:
        - field
        - tile_type
    ingest._types.GeoGridTileType:
      type: string
      enum:
      - geotile
      - geohex
      - geohash
    ingest._types.GeoGridTargetFormat:
      type: string
      enum:
      - geojson
      - wkt
    ingest._types.GeoIpProcessor:
      allOf:
      - "$ref": "#/components/schemas/ingest._types.ProcessorBase"
      - type: object
        properties:
          database_file:
            description: The database filename referring to a database the module
              ships with (GeoLite2-City.mmdb, GeoLite2-Country.mmdb, or GeoLite2-ASN.mmdb)
              or a custom database in the ingest-geoip config directory.
            default: GeoLite2-City.mmdb
            type: string
          field:
            description: The field to get the ip address from for the geographical
              lookup.
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          first_only:
            description: If `true`, only the first found geoip data will be returned,
              even if the field contains an array.
            default: true
            type: boolean
          ignore_missing:
            description: If `true` and `field` does not exist, the processor quietly
              exits without modifying the document.
            default: false
            type: boolean
          properties:
            description: Controls what properties are added to the `target_field`
              based on the geoip lookup.
            type: array
            items:
              type: string
          target_field:
            description: The field that will hold the geographical information looked
              up from the MaxMind database.
            default: geoip
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          download_database_on_pipeline_creation:
            description: |-
              If `true` (and if `ingest.geoip.downloader.eager.download` is `false`), the missing database is downloaded when the pipeline is created.
              Else, the download is triggered by when the pipeline is used as the `default_pipeline` or `final_pipeline` in an index.
            type: boolean
        required:
        - field
    ingest._types.GrokProcessor:
      allOf:
      - "$ref": "#/components/schemas/ingest._types.ProcessorBase"
      - type: object
        properties:
          ecs_compatibility:
            description: |-
              Must be disabled or v1. If v1, the processor uses patterns with Elastic
              Common Schema (ECS) field names.
            default: disabled
            type: string
          field:
            description: The field to use for grok expression parsing.
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          ignore_missing:
            description: If `true` and `field` does not exist or is `null`, the processor
              quietly exits without modifying the document.
            default: false
            type: boolean
          pattern_definitions:
            description: |-
              A map of pattern-name and pattern tuples defining custom patterns to be used by the current processor.
              Patterns matching existing names will override the pre-existing definition.
            type: object
            additionalProperties:
              type: string
          patterns:
            description: |-
              An ordered list of grok expression to match and extract named captures with.
              Returns on the first expression in the list that matches.
            type: array
            items:
              "$ref": "#/components/schemas/_types.GrokPattern"
          trace_match:
            description: When `true`, `_ingest._grok_match_index` will be inserted
              into your matched document’s metadata with the index into the pattern
              found in `patterns` that matched.
            default: false
            type: boolean
        required:
        - field
        - patterns
    _types.GrokPattern:
      type: string
    ingest._types.GsubProcessor:
      allOf:
      - "$ref": "#/components/schemas/ingest._types.ProcessorBase"
      - type: object
        properties:
          field:
            description: The field to apply the replacement to.
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          ignore_missing:
            description: If `true` and `field` does not exist or is `null`, the processor
              quietly exits without modifying the document.
            default: false
            type: boolean
          pattern:
            description: The pattern to be replaced.
            type: string
          replacement:
            description: The string to replace the matching patterns with.
            type: string
          target_field:
            description: |-
              The field to assign the converted value to
              By default, the `field` is updated in-place.
            default: field
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
        required:
        - field
        - pattern
        - replacement
    ingest._types.HtmlStripProcessor:
      allOf:
      - "$ref": "#/components/schemas/ingest._types.ProcessorBase"
      - type: object
        properties:
          field:
            description: The string-valued field to remove HTML tags from.
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          ignore_missing:
            description: If `true` and `field` does not exist or is `null`, the processor
              quietly exits without modifying the document,
            default: false
            type: boolean
          target_field:
            description: |-
              The field to assign the converted value to
              By default, the `field` is updated in-place.
            default: field
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
        required:
        - field
    ingest._types.InferenceProcessor:
      allOf:
      - "$ref": "#/components/schemas/ingest._types.ProcessorBase"
      - type: object
        properties:
          model_id:
            description: The ID or alias for the trained model, or the ID of the deployment.
            allOf:
            - "$ref": "#/components/schemas/_types.Id"
          target_field:
            description: Field added to incoming documents to contain results objects.
            default: ml.inference.<processor_tag>
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          field_map:
            description: |-
              Maps the document field names to the known field names of the model.
              This mapping takes precedence over any default mappings provided in the model configuration.
            type: object
            additionalProperties:
              type: object
          inference_config:
            description: Contains the inference type and its options.
            allOf:
            - "$ref": "#/components/schemas/ingest._types.InferenceConfig"
          input_output:
            description: |-
              Input fields for inference and output (destination) fields for the inference results.
              This option is incompatible with the target_field and field_map options.
            oneOf:
            - "$ref": "#/components/schemas/ingest._types.InputConfig"
            - type: array
              items:
                "$ref": "#/components/schemas/ingest._types.InputConfig"
          ignore_missing:
            description: |-
              If true and any of the input fields defined in input_ouput are missing
              then those missing fields are quietly ignored, otherwise a missing field causes a failure.
              Only applies when using input_output configurations to explicitly list the input fields.
            type: boolean
        required:
        - model_id
    ingest._types.InferenceConfig:
      type: object
      properties:
        regression:
          description: Regression configuration for inference.
          allOf:
          - "$ref": "#/components/schemas/ingest._types.InferenceConfigRegression"
        classification:
          description: Classification configuration for inference.
          allOf:
          - "$ref": "#/components/schemas/ingest._types.InferenceConfigClassification"
      minProperties: 1
      maxProperties: 1
    ingest._types.InferenceConfigRegression:
      type: object
      properties:
        results_field:
          description: The field that is added to incoming documents to contain the
            inference prediction.
          default: "<dependent_variable>_prediction"
          allOf:
          - "$ref": "#/components/schemas/_types.Field"
        num_top_feature_importance_values:
          description: Specifies the maximum number of feature importance values per
            document.
          default: 0
          type: number
    ingest._types.InferenceConfigClassification:
      type: object
      properties:
        num_top_classes:
          description: Specifies the number of top class predictions to return.
          default: 0
          type: number
        num_top_feature_importance_values:
          description: Specifies the maximum number of feature importance values per
            document.
          default: 0
          type: number
        results_field:
          description: The field that is added to incoming documents to contain the
            inference prediction.
          default: "<dependent_variable>_prediction"
          allOf:
          - "$ref": "#/components/schemas/_types.Field"
        top_classes_results_field:
          description: Specifies the field to which the top classes are written.
          default: top_classes
          allOf:
          - "$ref": "#/components/schemas/_types.Field"
        prediction_field_type:
          description: |-
            Specifies the type of the predicted field to write.
            Valid values are: `string`, `number`, `boolean`.
          type: string
    ingest._types.InputConfig:
      type: object
      properties:
        input_field:
          type: string
        output_field:
          type: string
      required:
      - input_field
      - output_field
    ingest._types.JoinProcessor:
      allOf:
      - "$ref": "#/components/schemas/ingest._types.ProcessorBase"
      - type: object
        properties:
          field:
            description: Field containing array values to join.
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          separator:
            description: The separator character.
            type: string
          target_field:
            description: |-
              The field to assign the joined value to.
              By default, the field is updated in-place.
            default: field
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
        required:
        - field
        - separator
    ingest._types.JsonProcessor:
      allOf:
      - "$ref": "#/components/schemas/ingest._types.ProcessorBase"
      - type: object
        properties:
          add_to_root:
            description: |-
              Flag that forces the parsed JSON to be added at the top level of the document.
              `target_field` must not be set when this option is chosen.
            default: false
            type: boolean
          add_to_root_conflict_strategy:
            description: |+
              When set to `replace`, root fields that conflict with fields from the parsed JSON will be overridden.
              When set to `merge`, conflicting fields will be merged.
              Only applicable `if add_to_root` is set to true.

              Supported values include:
                - `replace`: Root fields that conflict with fields from the parsed JSON will be overridden.
                - `merge`: Conflicting fields will be merged.

            allOf:
            - "$ref": "#/components/schemas/ingest._types.JsonProcessorConflictStrategy"
          allow_duplicate_keys:
            description: |-
              When set to `true`, the JSON parser will not fail if the JSON contains duplicate keys.
              Instead, the last encountered value for any duplicate key wins.
            default: false
            type: boolean
          field:
            description: The field to be parsed.
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          target_field:
            description: |-
              The field that the converted structured object will be written into.
              Any existing content in this field will be overwritten.
            default: field
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
        required:
        - field
    ingest._types.JsonProcessorConflictStrategy:
      type: string
      enum:
      - replace
      - merge
    ingest._types.KeyValueProcessor:
      allOf:
      - "$ref": "#/components/schemas/ingest._types.ProcessorBase"
      - type: object
        properties:
          exclude_keys:
            description: List of keys to exclude from document.
            type: array
            items:
              type: string
          field:
            description: |-
              The field to be parsed.
              Supports template snippets.
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          field_split:
            description: Regex pattern to use for splitting key-value pairs.
            type: string
          ignore_missing:
            description: If `true` and `field` does not exist or is `null`, the processor
              quietly exits without modifying the document.
            default: false
            type: boolean
          include_keys:
            description: |-
              List of keys to filter and insert into document.
              Defaults to including all keys.
            type: array
            items:
              type: string
          prefix:
            description: Prefix to be added to extracted keys.
            default: 'null'
            type: string
          strip_brackets:
            description: If `true`. strip brackets `()`, `<>`, `[]` as well as quotes
              `'` and `"` from extracted values.
            default: false
            type: boolean
          target_field:
            description: |-
              The field to insert the extracted keys into.
              Defaults to the root of the document.
              Supports template snippets.
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          trim_key:
            description: String of characters to trim from extracted keys.
            type: string
          trim_value:
            description: String of characters to trim from extracted values.
            type: string
          value_split:
            description: Regex pattern to use for splitting the key from the value
              within a key-value pair.
            type: string
        required:
        - field
        - field_split
        - value_split
    ingest._types.LowercaseProcessor:
      allOf:
      - "$ref": "#/components/schemas/ingest._types.ProcessorBase"
      - type: object
        properties:
          field:
            description: The field to make lowercase.
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          ignore_missing:
            description: If `true` and `field` does not exist or is `null`, the processor
              quietly exits without modifying the document.
            default: false
            type: boolean
          target_field:
            description: |-
              The field to assign the converted value to.
              By default, the field is updated in-place.
            default: field
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
        required:
        - field
    ingest._types.NetworkDirectionProcessor:
      allOf:
      - "$ref": "#/components/schemas/ingest._types.ProcessorBase"
      - type: object
        properties:
          source_ip:
            description: Field containing the source IP address.
            default: source.ip
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          destination_ip:
            description: Field containing the destination IP address.
            default: destination.ip
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          target_field:
            description: Output field for the network direction.
            default: network.direction
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          internal_networks:
            description: |-
              List of internal networks. Supports IPv4 and IPv6 addresses and ranges in
              CIDR notation. Also supports the named ranges listed below. These may be
              constructed with template snippets. Must specify only one of
              internal_networks or internal_networks_field.
            type: array
            items:
              type: string
          internal_networks_field:
            description: |-
              A field on the given document to read the internal_networks configuration
              from.
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          ignore_missing:
            description: |-
              If true and any required fields are missing, the processor quietly exits
              without modifying the document.
            default: true
            type: boolean
    ingest._types.PipelineProcessor:
      allOf:
      - "$ref": "#/components/schemas/ingest._types.ProcessorBase"
      - type: object
        properties:
          name:
            description: |-
              The name of the pipeline to execute.
              Supports template snippets.
            allOf:
            - "$ref": "#/components/schemas/_types.Name"
          ignore_missing_pipeline:
            description: Whether to ignore missing pipelines instead of failing.
            default: false
            type: boolean
        required:
        - name
    ingest._types.RedactProcessor:
      allOf:
      - "$ref": "#/components/schemas/ingest._types.ProcessorBase"
      - type: object
        properties:
          field:
            description: The field to be redacted
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          patterns:
            description: A list of grok expressions to match and redact named captures
              with
            type: array
            items:
              "$ref": "#/components/schemas/_types.GrokPattern"
          pattern_definitions:
            type: object
            additionalProperties:
              type: string
          prefix:
            description: Start a redacted section with this token
            default: "<"
            type: string
          suffix:
            description: End a redacted section with this token
            default: ">"
            type: string
          ignore_missing:
            description: If `true` and `field` does not exist or is `null`, the processor
              quietly exits without modifying the document.
            default: false
            type: boolean
          skip_if_unlicensed:
            description: If `true` and the current license does not support running
              redact processors, then the processor quietly exits without modifying
              the document
            default: false
            type: boolean
          trace_redact:
            description: If `true` then ingest metadata `_ingest._redact._is_redacted`
              is set to `true` if the document has been redacted
            default: false
            x-state: Generally available; Added in 8.16.0
            type: boolean
        required:
        - field
        - patterns
    ingest._types.RegisteredDomainProcessor:
      allOf:
      - "$ref": "#/components/schemas/ingest._types.ProcessorBase"
      - type: object
        properties:
          field:
            description: Field containing the source FQDN.
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          target_field:
            description: |-
              Object field containing extracted domain components. If an empty string,
              the processor adds components to the document’s root.
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          ignore_missing:
            description: |-
              If true and any required fields are missing, the processor quietly exits
              without modifying the document.
            default: true
            type: boolean
        required:
        - field
    ingest._types.RemoveProcessor:
      allOf:
      - "$ref": "#/components/schemas/ingest._types.ProcessorBase"
      - type: object
        properties:
          field:
            description: Fields to be removed. Supports template snippets.
            allOf:
            - "$ref": "#/components/schemas/_types.Fields"
          keep:
            description: Fields to be kept. When set, all fields other than those
              specified are removed.
            allOf:
            - "$ref": "#/components/schemas/_types.Fields"
          ignore_missing:
            description: If `true` and `field` does not exist or is `null`, the processor
              quietly exits without modifying the document.
            default: false
            type: boolean
        required:
        - field
    ingest._types.RenameProcessor:
      allOf:
      - "$ref": "#/components/schemas/ingest._types.ProcessorBase"
      - type: object
        properties:
          field:
            description: |-
              The field to be renamed.
              Supports template snippets.
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          ignore_missing:
            description: If `true` and `field` does not exist, the processor quietly
              exits without modifying the document.
            default: false
            type: boolean
          target_field:
            description: |-
              The new name of the field.
              Supports template snippets.
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
        required:
        - field
        - target_field
    ingest._types.RerouteProcessor:
      allOf:
      - "$ref": "#/components/schemas/ingest._types.ProcessorBase"
      - type: object
        properties:
          destination:
            description: A static value for the target. Can’t be set when the dataset
              or namespace option is set.
            type: string
          dataset:
            description: |-
              Field references or a static value for the dataset part of the data stream name.
              In addition to the criteria for index names, cannot contain - and must be no longer than 100 characters.
              Example values are nginx.access and nginx.error.

              Supports field references with a mustache-like syntax (denoted as {{double}} or {{{triple}}} curly braces).
              When resolving field references, the processor replaces invalid characters with _. Uses the <dataset> part
              of the index name as a fallback if all field references resolve to a null, missing, or non-string value.

              default {{data_stream.dataset}}
            oneOf:
            - type: string
            - type: array
              items:
                type: string
          namespace:
            description: |-
              Field references or a static value for the namespace part of the data stream name. See the criteria for
              index names for allowed characters. Must be no longer than 100 characters.

              Supports field references with a mustache-like syntax (denoted as {{double}} or {{{triple}}} curly braces).
              When resolving field references, the processor replaces invalid characters with _. Uses the <namespace> part
              of the index name as a fallback if all field references resolve to a null, missing, or non-string value.

              default {{data_stream.namespace}}
            oneOf:
            - type: string
            - type: array
              items:
                type: string
    ingest._types.ScriptProcessor:
      allOf:
      - "$ref": "#/components/schemas/ingest._types.ProcessorBase"
      - type: object
        properties:
          id:
            description: |-
              ID of a stored script.
              If no `source` is specified, this parameter is required.
            allOf:
            - "$ref": "#/components/schemas/_types.Id"
          lang:
            description: |+
              Script language.

              Supported values include:
                - `painless`: Painless scripting language, purpose-built for Elasticsearch.
                - `expression`: Lucene’s expressions language, compiles a JavaScript expression to bytecode.
                - `mustache`: Mustache templated, used for templates.
                - `java`: Expert Java API

            default: painless
            allOf:
            - "$ref": "#/components/schemas/_types.ScriptLanguage"
          params:
            description: Object containing parameters for the script.
            type: object
            additionalProperties:
              type: object
          source:
            description: |-
              Inline script.
              If no `id` is specified, this parameter is required.
            allOf:
            - "$ref": "#/components/schemas/_types.ScriptSource"
    ingest._types.SetProcessor:
      allOf:
      - "$ref": "#/components/schemas/ingest._types.ProcessorBase"
      - type: object
        properties:
          copy_from:
            description: |-
              The origin field which will be copied to `field`, cannot set `value` simultaneously.
              Supported data types are `boolean`, `number`, `array`, `object`, `string`, `date`, etc.
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          field:
            description: |-
              The field to insert, upsert, or update.
              Supports template snippets.
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          ignore_empty_value:
            description: If `true` and `value` is a template snippet that evaluates
              to `null` or the empty string, the processor quietly exits without modifying
              the document.
            default: false
            type: boolean
          media_type:
            description: |-
              The media type for encoding `value`.
              Applies only when value is a template snippet.
              Must be one of `application/json`, `text/plain`, or `application/x-www-form-urlencoded`.
            default: '"application/json"'
            type: string
          override:
            description: |-
              If `true` processor will update fields with pre-existing non-null-valued field.
              When set to `false`, such fields will not be touched.
            default: true
            type: boolean
          value:
            description: |-
              The value to be set for the field.
              Supports template snippets.
              May specify only one of `value` or `copy_from`.
            type: object
        required:
        - field
    ingest._types.SetSecurityUserProcessor:
      allOf:
      - "$ref": "#/components/schemas/ingest._types.ProcessorBase"
      - type: object
        properties:
          field:
            description: The field to store the user information into.
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          properties:
            description: Controls what user related properties are added to the field.
            type: array
            items:
              type: string
        required:
        - field
    ingest._types.SortProcessor:
      allOf:
      - "$ref": "#/components/schemas/ingest._types.ProcessorBase"
      - type: object
        properties:
          field:
            description: The field to be sorted.
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          order:
            description: |+
              The sort order to use.
              Accepts `"asc"` or `"desc"`.

              Supported values include:
                - `asc`: Ascending (smallest to largest)
                - `desc`: Descending (largest to smallest)

            default: asc
            allOf:
            - "$ref": "#/components/schemas/_types.SortOrder"
          target_field:
            description: |-
              The field to assign the sorted value to.
              By default, the field is updated in-place.
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
        required:
        - field
    ingest._types.SplitProcessor:
      allOf:
      - "$ref": "#/components/schemas/ingest._types.ProcessorBase"
      - type: object
        properties:
          field:
            description: The field to split.
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          ignore_missing:
            description: If `true` and `field` does not exist, the processor quietly
              exits without modifying the document.
            default: false
            type: boolean
          preserve_trailing:
            description: Preserves empty trailing fields, if any.
            default: false
            type: boolean
          separator:
            description: A regex which matches the separator, for example, `,` or
              `\s+`.
            type: string
          target_field:
            description: |-
              The field to assign the split value to.
              By default, the field is updated in-place.
            default: field
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
        required:
        - field
        - separator
    ingest._types.TerminateProcessor:
      allOf:
      - "$ref": "#/components/schemas/ingest._types.ProcessorBase"
      - type: object
    ingest._types.TrimProcessor:
      allOf:
      - "$ref": "#/components/schemas/ingest._types.ProcessorBase"
      - type: object
        properties:
          field:
            description: The string-valued field to trim whitespace from.
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          ignore_missing:
            description: If `true` and `field` does not exist, the processor quietly
              exits without modifying the document.
            default: false
            type: boolean
          target_field:
            description: |-
              The field to assign the trimmed value to.
              By default, the field is updated in-place.
            default: field
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
        required:
        - field
    ingest._types.UppercaseProcessor:
      allOf:
      - "$ref": "#/components/schemas/ingest._types.ProcessorBase"
      - type: object
        properties:
          field:
            description: The field to make uppercase.
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          ignore_missing:
            description: If `true` and `field` does not exist or is `null`, the processor
              quietly exits without modifying the document.
            default: false
            type: boolean
          target_field:
            description: |-
              The field to assign the converted value to.
              By default, the field is updated in-place.
            default: field
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
        required:
        - field
    ingest._types.UrlDecodeProcessor:
      allOf:
      - "$ref": "#/components/schemas/ingest._types.ProcessorBase"
      - type: object
        properties:
          field:
            description: The field to decode.
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          ignore_missing:
            description: If `true` and `field` does not exist or is `null`, the processor
              quietly exits without modifying the document.
            default: false
            type: boolean
          target_field:
            description: |-
              The field to assign the converted value to.
              By default, the field is updated in-place.
            default: field
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
        required:
        - field
    ingest._types.UriPartsProcessor:
      allOf:
      - "$ref": "#/components/schemas/ingest._types.ProcessorBase"
      - type: object
        properties:
          field:
            description: Field containing the URI string.
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          ignore_missing:
            description: If `true` and `field` does not exist, the processor quietly
              exits without modifying the document.
            default: false
            type: boolean
          keep_original:
            description: If `true`, the processor copies the unparsed URI to `<target_field>.original`.
            default: true
            type: boolean
          remove_if_successful:
            description: |-
              If `true`, the processor removes the `field` after parsing the URI string.
              If parsing fails, the processor does not remove the `field`.
            default: false
            type: boolean
          target_field:
            description: Output field for the URI object.
            default: url
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
        required:
        - field
    ingest._types.UserAgentProcessor:
      allOf:
      - "$ref": "#/components/schemas/ingest._types.ProcessorBase"
      - type: object
        properties:
          field:
            description: The field containing the user agent string.
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          ignore_missing:
            description: If `true` and `field` does not exist, the processor quietly
              exits without modifying the document.
            default: false
            type: boolean
          regex_file:
            description: The name of the file in the `config/ingest-user-agent` directory
              containing the regular expressions for parsing the user agent string.
              Both the directory and the file have to be created before starting Elasticsearch.
              If not specified, ingest-user-agent will use the `regexes.yaml` from
              uap-core it ships with.
            type: string
          target_field:
            description: The field that will be filled with the user agent details.
            default: user_agent
            allOf:
            - "$ref": "#/components/schemas/_types.Field"
          properties:
            description: Controls what properties are added to `target_field`.
            default:
            - name
            - os
            - device
            - original
            - version
            type: array
            items:
              "$ref": "#/components/schemas/ingest._types.UserAgentProperty"
          extract_device_type:
            description: Extracts device type from the user agent string on a best-effort
              basis.
            default: false
            x-state: Beta; Added in 8.9.0
            type: boolean
        required:
        - field
    ingest._types.UserAgentProperty:
      type: string
      enum:
      - name
      - os
      - device
      - original
      - version
    ingest._types.FieldAccessPattern:
      type: string
      enum:
      - classic
      - flexible
    ingest._types.Document:
      type: object
      properties:
        _id:
          description: |-
            Unique identifier for the document.
            This ID must be unique within the `_index`.
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        _index:
          description: Name of the index containing the document.
          allOf:
          - "$ref": "#/components/schemas/_types.IndexName"
        _source:
          description: JSON body for the document.
          type: object
      required:
      - _source
    ingest._types.SimulateDocumentResult:
      type: object
      properties:
        doc:
          allOf:
          - "$ref": "#/components/schemas/ingest._types.DocumentSimulation"
        error:
          allOf:
          - "$ref": "#/components/schemas/_types.ErrorCause"
        processor_results:
          type: array
          items:
            "$ref": "#/components/schemas/ingest._types.PipelineProcessorResult"
    ingest._types.DocumentSimulation:
      description: The simulated document, with optional metadata.
      type: object
      properties:
        _id:
          description: Unique identifier for the document. This ID must be unique
            within the `_index`.
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        _index:
          description: Name of the index containing the document.
          allOf:
          - "$ref": "#/components/schemas/_types.IndexName"
        _ingest:
          allOf:
          - "$ref": "#/components/schemas/ingest._types.Ingest"
        _routing:
          description: Value used to send the document to a specific primary shard.
          type: string
        _source:
          description: JSON body for the document.
          type: object
          additionalProperties:
            type: object
        _version:
          description: ''
          allOf:
          - "$ref": "#/components/schemas/_spec_utils.StringifiedVersionNumber"
        _version_type:
          description: |2+


            Supported values include:
              - `internal`: Use internal versioning that starts at 1 and increments with each update or delete.
              - `external`: Only index the document if the specified version is strictly higher than the version of the stored document or if there is no existing document.
              - `external_gte`: Only index the document if the specified version is equal or higher than the version of the stored document or if there is no existing document.
            NOTE: The `external_gte` version type is meant for special use cases and should be used with care.
            If used incorrectly, it can result in loss of data.

          allOf:
          - "$ref": "#/components/schemas/_types.VersionType"
      required:
      - _id
      - _index
      - _ingest
      - _source
    ingest._types.Ingest:
      type: object
      properties:
        _redact:
          x-state: Generally available; Added in 8.16.0
          allOf:
          - "$ref": "#/components/schemas/ingest._types.Redact"
        timestamp:
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
        pipeline:
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
      required:
      - timestamp
    ingest._types.Redact:
      type: object
      properties:
        _is_redacted:
          description: indicates if document has been redacted
          type: boolean
      required:
      - _is_redacted
    _spec_utils.StringifiedVersionNumber:
      description: |-
        Some APIs will return values such as numbers also as a string (notably epoch timestamps). This behavior
        is used to capture this behavior while keeping the semantics of the field type.

        Depending on the target language, code generators can keep the union or remove it and leniently parse
        strings to the target type.
      oneOf:
      - "$ref": "#/components/schemas/_types.VersionNumber"
      - type: string
    ingest._types.PipelineProcessorResult:
      type: object
      properties:
        doc:
          allOf:
          - "$ref": "#/components/schemas/ingest._types.DocumentSimulation"
        tag:
          type: string
        processor_type:
          type: string
        status:
          allOf:
          - "$ref": "#/components/schemas/ingest._types.PipelineSimulationStatusOptions"
        description:
          type: string
        ignored_error:
          allOf:
          - "$ref": "#/components/schemas/_types.ErrorCause"
        error:
          allOf:
          - "$ref": "#/components/schemas/_types.ErrorCause"
    ingest._types.PipelineSimulationStatusOptions:
      type: string
      enum:
      - success
      - error
      - error_ignored
      - skipped
      - dropped
    license.get.LicenseInformation:
      type: object
      properties:
        expiry_date:
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
        expiry_date_in_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
        issue_date:
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
        issue_date_in_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
        issued_to:
          type: string
        issuer:
          type: string
        max_nodes:
          oneOf:
          - type: number
          - nullable: true
            type: string
        max_resource_units:
          oneOf:
          - type: number
          - nullable: true
            type: string
        status:
          allOf:
          - "$ref": "#/components/schemas/license._types.LicenseStatus"
        type:
          allOf:
          - "$ref": "#/components/schemas/license._types.LicenseType"
        uid:
          allOf:
          - "$ref": "#/components/schemas/_types.Uuid"
        start_date_in_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
      required:
      - issue_date
      - issue_date_in_millis
      - issued_to
      - issuer
      - max_nodes
      - status
      - type
      - uid
      - start_date_in_millis
    license._types.LicenseStatus:
      type: string
      enum:
      - active
      - valid
      - invalid
      - expired
    license._types.LicenseType:
      type: string
      enum:
      - missing
      - trial
      - basic
      - standard
      - dev
      - silver
      - gold
      - platinum
      - enterprise
    license._types.License:
      type: object
      properties:
        expiry_date_in_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
        issue_date_in_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
        start_date_in_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
        issued_to:
          type: string
        issuer:
          type: string
        max_nodes:
          oneOf:
          - type: number
          - nullable: true
            type: string
        max_resource_units:
          type: number
        signature:
          type: string
        type:
          allOf:
          - "$ref": "#/components/schemas/license._types.LicenseType"
        uid:
          type: string
      required:
      - expiry_date_in_millis
      - issue_date_in_millis
      - issued_to
      - issuer
      - signature
      - type
      - uid
    license.post.Acknowledgement:
      type: object
      properties:
        license:
          type: array
          items:
            type: string
        message:
          type: string
      required:
      - license
      - message
    logstash._types.Pipeline:
      type: object
      properties:
        description:
          description: |-
            A description of the pipeline.
            This description is not used by Elasticsearch or Logstash.
          type: string
        last_modified:
          description: |-
            The date the pipeline was last updated.
            It must be in the `yyyy-MM-dd'T'HH:mm:ss.SSSZZ` strict_date_time format.
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
        pipeline:
          externalDocs:
            url: https://www.elastic.co/docs/reference/logstash/configuration-file-structure
          description: The configuration for the pipeline.
          type: string
        pipeline_metadata:
          description: |-
            Optional metadata about the pipeline, which can have any contents.
            This metadata is not generated or used by Elasticsearch or Logstash.
          allOf:
          - "$ref": "#/components/schemas/logstash._types.PipelineMetadata"
        pipeline_settings:
          externalDocs:
            url: https://www.elastic.co/docs/reference/logstash/logstash-settings-file
          description: |-
            Settings for the pipeline.
            It supports only flat keys in dot notation.
          allOf:
          - "$ref": "#/components/schemas/logstash._types.PipelineSettings"
        username:
          description: The user who last updated the pipeline.
          type: string
      required:
      - description
      - last_modified
      - pipeline
      - pipeline_metadata
      - pipeline_settings
      - username
    logstash._types.PipelineMetadata:
      type: object
      properties:
        type:
          type: string
        version:
          type: string
      required:
      - type
      - version
    logstash._types.PipelineSettings:
      type: object
      properties:
        pipeline.workers:
          description: The number of workers that will, in parallel, execute the filter
            and output stages of the pipeline.
          type: number
        pipeline.batch.size:
          description: The maximum number of events an individual worker thread will
            collect from inputs before attempting to execute its filters and outputs.
          type: number
        pipeline.batch.delay:
          description: When creating pipeline event batches, how long in milliseconds
            to wait for each event before dispatching an undersized batch to pipeline
            workers.
          type: number
        queue.type:
          description: The internal queuing model to use for event buffering.
          type: string
        queue.max_bytes:
          description: 'The total capacity of the queue (`queue.type: persisted`)
            in number of bytes.'
          type: string
        queue.checkpoint.writes:
          description: 'The maximum number of written events before forcing a checkpoint
            when persistent queues are enabled (`queue.type: persisted`).'
          type: number
      required:
      - pipeline.workers
      - pipeline.batch.size
      - pipeline.batch.delay
      - queue.type
      - queue.max_bytes
      - queue.checkpoint.writes
    _global.mget.Operation:
      type: object
      properties:
        _id:
          description: The unique document ID.
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        _index:
          description: The index that contains the document.
          allOf:
          - "$ref": "#/components/schemas/_types.IndexName"
        routing:
          description: The key for the primary shard the document resides on. Required
            if routing is used during indexing.
          allOf:
          - "$ref": "#/components/schemas/_types.Routing"
        _source:
          description: If `false`, excludes all _source fields.
          allOf:
          - "$ref": "#/components/schemas/_global.search._types.SourceConfig"
        stored_fields:
          description: The stored fields you want to retrieve.
          allOf:
          - "$ref": "#/components/schemas/_types.Fields"
        version:
          allOf:
          - "$ref": "#/components/schemas/_types.VersionNumber"
        version_type:
          description: |2+


            Supported values include:
              - `internal`: Use internal versioning that starts at 1 and increments with each update or delete.
              - `external`: Only index the document if the specified version is strictly higher than the version of the stored document or if there is no existing document.
              - `external_gte`: Only index the document if the specified version is equal or higher than the version of the stored document or if there is no existing document.
            NOTE: The `external_gte` version type is meant for special use cases and should be used with care.
            If used incorrectly, it can result in loss of data.

          allOf:
          - "$ref": "#/components/schemas/_types.VersionType"
      required:
      - _id
    _global.mget.ResponseItem:
      oneOf:
      - "$ref": "#/components/schemas/_global.get.GetResult"
      - "$ref": "#/components/schemas/_global.mget.MultiGetError"
    _global.mget.MultiGetError:
      type: object
      properties:
        error:
          allOf:
          - "$ref": "#/components/schemas/_types.ErrorCause"
        _id:
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        _index:
          allOf:
          - "$ref": "#/components/schemas/_types.IndexName"
      required:
      - error
      - _id
      - _index
    migration.deprecations.Deprecation:
      type: object
      properties:
        details:
          description: Optional details about the deprecation warning.
          type: string
        level:
          description: |+
            The level property describes the significance of the issue.

            Supported values include:
              - `none`
              - `info`
              - `warning`: You can upgrade directly, but you are using deprecated functionality which will not be available or behave differently in the next major version.
              - `critical`: You cannot upgrade without fixing this problem.

          allOf:
          - "$ref": "#/components/schemas/migration.deprecations.DeprecationLevel"
        message:
          description: Descriptive information about the deprecation warning.
          type: string
        url:
          description: A link to the breaking change documentation, where you can
            find more information about this change.
          type: string
        resolve_during_rolling_upgrade:
          type: boolean
        _meta:
          type: object
          additionalProperties:
            type: object
      required:
      - level
      - message
      - url
      - resolve_during_rolling_upgrade
    migration.deprecations.DeprecationLevel:
      type: string
      enum:
      - none
      - info
      - warning
      - critical
    migration.get_feature_upgrade_status.MigrationFeature:
      type: object
      properties:
        feature_name:
          type: string
        minimum_index_version:
          allOf:
          - "$ref": "#/components/schemas/_types.VersionString"
        migration_status:
          allOf:
          - "$ref": "#/components/schemas/migration.get_feature_upgrade_status.MigrationStatus"
        indices:
          type: array
          items:
            "$ref": "#/components/schemas/migration.get_feature_upgrade_status.MigrationFeatureIndexInfo"
      required:
      - feature_name
      - minimum_index_version
      - migration_status
      - indices
    migration.get_feature_upgrade_status.MigrationStatus:
      type: string
      enum:
      - NO_MIGRATION_NEEDED
      - MIGRATION_NEEDED
      - IN_PROGRESS
      - ERROR
    migration.get_feature_upgrade_status.MigrationFeatureIndexInfo:
      type: object
      properties:
        index:
          allOf:
          - "$ref": "#/components/schemas/_types.IndexName"
        version:
          allOf:
          - "$ref": "#/components/schemas/_types.VersionString"
        failure_cause:
          allOf:
          - "$ref": "#/components/schemas/_types.ErrorCause"
      required:
      - index
      - version
    migration.post_feature_upgrade.MigrationFeature:
      type: object
      properties:
        feature_name:
          type: string
      required:
      - feature_name
    ml._types.AnalysisConfig:
      type: object
      properties:
        bucket_span:
          description: |-
            The size of the interval that the analysis is aggregated into, typically between `5m` and `1h`. This value should be either a whole number of days or equate to a
            whole number of buckets in one day. If the anomaly detection job uses a datafeed with aggregations, this value must also be divisible by the interval of the date histogram aggregation.
          default: 5m
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        categorization_analyzer:
          description: If `categorization_field_name` is specified, you can also define
            the analyzer that is used to interpret the categorization field. This
            property cannot be used at the same time as `categorization_filters`.
            The categorization analyzer specifies how the `categorization_field` is
            interpreted by the categorization process. The `categorization_analyzer`
            field can be specified either as a string or as an object. If it is a
            string, it must refer to a built-in analyzer or one added by another plugin.
          allOf:
          - "$ref": "#/components/schemas/ml._types.CategorizationAnalyzer"
        categorization_field_name:
          description: If this property is specified, the values of the specified
            field will be categorized. The resulting categories must be used in a
            detector by setting `by_field_name`, `over_field_name`, or `partition_field_name`
            to the keyword `mlcategory`.
          allOf:
          - "$ref": "#/components/schemas/_types.Field"
        categorization_filters:
          description: If `categorization_field_name` is specified, you can also define
            optional filters. This property expects an array of regular expressions.
            The expressions are used to filter out matching sequences from the categorization
            field values. You can use this functionality to fine tune the categorization
            by excluding sequences from consideration when categories are defined.
            For example, you can exclude SQL statements that appear in your log files.
            This property cannot be used at the same time as `categorization_analyzer`.
            If you only want to define simple regular expression filters that are
            applied prior to tokenization, setting this property is the easiest method.
            If you also want to customize the tokenizer or post-tokenization filtering,
            use the `categorization_analyzer` property instead and include the filters
            as pattern_replace character filters. The effect is exactly the same.
          type: array
          items:
            type: string
        detectors:
          description: Detector configuration objects specify which data fields a
            job analyzes. They also specify which analytical functions are used. You
            can specify multiple detectors for a job. If the detectors array does
            not contain at least one detector, no analysis can occur and an error
            is returned.
          type: array
          items:
            "$ref": "#/components/schemas/ml._types.Detector"
        influencers:
          description: A comma separated list of influencer field names. Typically
            these can be the by, over, or partition fields that are used in the detector
            configuration. You might also want to use a field name that is not specifically
            named in a detector, but is available as part of the input data. When
            you use multiple detectors, the use of influencers is recommended as it
            aggregates results for each influencer entity.
          type: array
          items:
            "$ref": "#/components/schemas/_types.Field"
        latency:
          description: 'The size of the window in which to expect data that is out
            of time order. If you specify a non-zero value, it must be greater than
            or equal to one second. NOTE: Latency is applicable only when you send
            data by using the post data API.'
          default: '0'
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        model_prune_window:
          description: Advanced configuration option. Affects the pruning of models
            that have not been updated for the given time duration. The value must
            be set to a multiple of the `bucket_span`. If set too low, important information
            may be removed from the model. For jobs created in 8.1 and later, the
            default value is the greater of `30d` or 20 times `bucket_span`.
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        multivariate_by_fields:
          description: This functionality is reserved for internal use. It is not
            supported for use in customer environments and is not subject to the support
            SLA of official GA features. If set to `true`, the analysis will automatically
            find correlations between metrics for a given by field value and report
            anomalies when those correlations cease to hold. For example, suppose
            CPU and memory usage on host A is usually highly correlated with the same
            metrics on host B. Perhaps this correlation occurs because they are running
            a load-balanced application. If you enable this property, anomalies will
            be reported when, for example, CPU usage on host A is high and the value
            of CPU usage on host B is low. That is to say, you’ll see an anomaly when
            the CPU of host A is unusual given the CPU of host B. To use the `multivariate_by_fields`
            property, you must also specify `by_field_name` in your detector.
          type: boolean
        per_partition_categorization:
          description: Settings related to how categorization interacts with partition
            fields.
          allOf:
          - "$ref": "#/components/schemas/ml._types.PerPartitionCategorization"
        summary_count_field_name:
          description: 'If this property is specified, the data that is fed to the
            job is expected to be pre-summarized. This property value is the name
            of the field that contains the count of raw data points that have been
            summarized. The same `summary_count_field_name` applies to all detectors
            in the job. NOTE: The `summary_count_field_name` property cannot be used
            with the `metric` function.'
          allOf:
          - "$ref": "#/components/schemas/_types.Field"
      required:
      - detectors
    ml._types.CategorizationAnalyzer:
      oneOf:
      - type: string
      - "$ref": "#/components/schemas/ml._types.CategorizationAnalyzerDefinition"
    ml._types.CategorizationAnalyzerDefinition:
      type: object
      properties:
        char_filter:
          description: One or more character filters. In addition to the built-in
            character filters, other plugins can provide more character filters. If
            this property is not specified, no character filters are applied prior
            to categorization. If you are customizing some other aspect of the analyzer
            and you need to achieve the equivalent of `categorization_filters` (which
            are not permitted when some other aspect of the analyzer is customized),
            add them here as pattern replace character filters.
          type: array
          items:
            "$ref": "#/components/schemas/_types.analysis.CharFilter"
        filter:
          description: One or more token filters. In addition to the built-in token
            filters, other plugins can provide more token filters. If this property
            is not specified, no token filters are applied prior to categorization.
          type: array
          items:
            "$ref": "#/components/schemas/_types.analysis.TokenFilter"
        tokenizer:
          x-model: true
          oneOf:
          - type: object
          - type: string
          description: 'The name or definition of the tokenizer to use after character
            filters are applied. This property is compulsory if `categorization_analyzer`
            is specified as an object. Machine learning provides a tokenizer called
            `ml_standard` that tokenizes in a way that has been determined to produce
            good categorization results on a variety of log file formats for logs
            in English. If you want to use that tokenizer but change the character
            or token filters, specify `"tokenizer": "ml_standard"` in your `categorization_analyzer`.
            Additionally, the `ml_classic` tokenizer is available, which tokenizes
            in the same way as the non-customizable tokenizer in old versions of the
            product (before 6.2). `ml_classic` was the default categorization tokenizer
            in versions 6.2 to 7.13, so if you need categorization identical to the
            default for jobs created in these versions, specify `"tokenizer": "ml_classic"`
            in your `categorization_analyzer`.

            '
          externalDocs:
            url: https://www.elastic.co/docs/reference/text-analysis/tokenizer-reference
            description: Tokenizer reference
    ml._types.Detector:
      type: object
      properties:
        by_field_name:
          description: The field used to split the data. In particular, this property
            is used for analyzing the splits with respect to their own history. It
            is used for finding unusual values in the context of the split.
          allOf:
          - "$ref": "#/components/schemas/_types.Field"
        custom_rules:
          description: Custom rules enable you to customize the way detectors operate.
            For example, a rule may dictate conditions under which results should
            be skipped. Kibana refers to custom rules as job rules.
          type: array
          items:
            "$ref": "#/components/schemas/ml._types.DetectionRule"
        detector_description:
          description: A description of the detector.
          type: string
        detector_index:
          description: A unique identifier for the detector. This identifier is based
            on the order of the detectors in the `analysis_config`, starting at zero.
            If you specify a value for this property, it is ignored.
          type: number
        exclude_frequent:
          description: If set, frequent entities are excluded from influencing the
            anomaly results. Entities can be considered frequent over time or frequent
            in a population. If you are working with both over and by fields, you
            can set `exclude_frequent` to `all` for both fields, or to `by` or `over`
            for those specific fields.
          allOf:
          - "$ref": "#/components/schemas/ml._types.ExcludeFrequent"
        field_name:
          description: The field that the detector uses in the function. If you use
            an event rate function such as count or rare, do not specify this field.
            The `field_name` cannot contain double quotes or backslashes.
          allOf:
          - "$ref": "#/components/schemas/_types.Field"
        function:
          description: The analysis function that is used. For example, `count`, `rare`,
            `mean`, `min`, `max`, or `sum`.
          type: string
        over_field_name:
          description: The field used to split the data. In particular, this property
            is used for analyzing the splits with respect to the history of all splits.
            It is used for finding unusual values in the population of all splits.
          allOf:
          - "$ref": "#/components/schemas/_types.Field"
        partition_field_name:
          description: The field used to segment the analysis. When you use this property,
            you have completely independent baselines for each value of this field.
          allOf:
          - "$ref": "#/components/schemas/_types.Field"
        use_null:
          description: Defines whether a new series is used as the null series when
            there is no value for the by or partition fields.
          default: false
          type: boolean
    ml._types.DetectionRule:
      type: object
      properties:
        actions:
          description: |+
            The set of actions to be triggered when the rule applies. If more than one action is specified the effects of all actions are combined.

            Supported values include:
              - `skip_result`: The result will not be created. Unless you also specify `skip_model_update`, the model will be updated as usual with the corresponding series value.
              - `skip_model_update`: The value for that series will not be used to update the model. Unless you also specify `skip_result`, the results will be created as usual. This action is suitable when certain values are expected to be consistently anomalous and they affect the model in a way that negatively impacts the rest of the results.

          default:
          - skip_result
          type: array
          items:
            "$ref": "#/components/schemas/ml._types.RuleAction"
        conditions:
          description: An array of numeric conditions when the rule applies. A rule
            must either have a non-empty scope or at least one condition. Multiple
            conditions are combined together with a logical AND.
          type: array
          items:
            "$ref": "#/components/schemas/ml._types.RuleCondition"
        scope:
          description: A scope of series where the rule applies. A rule must either
            have a non-empty scope or at least one condition. By default, the scope
            includes all series. Scoping is allowed for any of the fields that are
            also specified in `by_field_name`, `over_field_name`, or `partition_field_name`.
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/ml._types.FilterRef"
    ml._types.RuleAction:
      type: string
      enum:
      - skip_result
      - skip_model_update
    ml._types.RuleCondition:
      type: object
      properties:
        applies_to:
          description: Specifies the result property to which the condition applies.
            If your detector uses `lat_long`, `metric`, `rare`, or `freq_rare` functions,
            you can only specify conditions that apply to time.
          allOf:
          - "$ref": "#/components/schemas/ml._types.AppliesTo"
        operator:
          description: Specifies the condition operator. The available options are
            greater than, greater than or equals, less than, and less than or equals.
          allOf:
          - "$ref": "#/components/schemas/ml._types.ConditionOperator"
        value:
          description: The value that is compared against the `applies_to` field using
            the operator.
          type: number
      required:
      - applies_to
      - operator
      - value
    ml._types.AppliesTo:
      type: string
      enum:
      - actual
      - typical
      - diff_from_typical
      - time
    ml._types.ConditionOperator:
      type: string
      enum:
      - gt
      - gte
      - lt
      - lte
    ml._types.FilterRef:
      type: object
      properties:
        filter_id:
          description: The identifier for the filter.
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        filter_type:
          description: If set to `include`, the rule applies for values in the filter.
            If set to `exclude`, the rule applies for values not in the filter.
          default: include
          allOf:
          - "$ref": "#/components/schemas/ml._types.FilterType"
      required:
      - filter_id
    ml._types.FilterType:
      type: string
      enum:
      - include
      - exclude
    ml._types.ExcludeFrequent:
      type: string
      enum:
      - all
      - none
      - by
      - over
    ml._types.PerPartitionCategorization:
      type: object
      properties:
        enabled:
          description: To enable this setting, you must also set the `partition_field_name`
            property to the same value in every detector that uses the keyword `mlcategory`.
            Otherwise, job creation fails.
          type: boolean
        stop_on_warn:
          description: This setting can be set to true only if per-partition categorization
            is enabled. If true, both categorization and subsequent anomaly detection
            stops for partitions where the categorization status changes to warn.
            This setting makes it viable to have a job where it is expected that categorization
            works well for some partitions but not others; you do not pay the cost
            of bad categorization forever in the partitions where it works badly.
          type: boolean
    ml._types.DataframeEvaluationContainer:
      type: object
      properties:
        classification:
          description: Classification evaluation evaluates the results of a classification
            analysis which outputs a prediction that identifies to which of the classes
            each document belongs.
          allOf:
          - "$ref": "#/components/schemas/ml._types.DataframeEvaluationClassification"
        outlier_detection:
          description: Outlier detection evaluates the results of an outlier detection
            analysis which outputs the probability that each document is an outlier.
          allOf:
          - "$ref": "#/components/schemas/ml._types.DataframeEvaluationOutlierDetection"
        regression:
          description: Regression evaluation evaluates the results of a regression
            analysis which outputs a prediction of values.
          allOf:
          - "$ref": "#/components/schemas/ml._types.DataframeEvaluationRegression"
      minProperties: 1
      maxProperties: 1
    ml._types.DataframeEvaluationClassification:
      type: object
      properties:
        actual_field:
          description: The field of the index which contains the ground truth. The
            data type of this field can be boolean or integer. If the data type is
            integer, the value has to be either 0 (false) or 1 (true).
          allOf:
          - "$ref": "#/components/schemas/_types.Field"
        predicted_field:
          description: The field in the index which contains the predicted value,
            in other words the results of the classification analysis.
          allOf:
          - "$ref": "#/components/schemas/_types.Field"
        top_classes_field:
          description: 'The field of the index which is an array of documents of the
            form { "class_name": XXX, "class_probability": YYY }. This field must
            be defined as nested in the mappings.'
          allOf:
          - "$ref": "#/components/schemas/_types.Field"
        metrics:
          description: Specifies the metrics that are used for the evaluation.
          allOf:
          - "$ref": "#/components/schemas/ml._types.DataframeEvaluationClassificationMetrics"
      required:
      - actual_field
    ml._types.DataframeEvaluationClassificationMetrics:
      allOf:
      - "$ref": "#/components/schemas/ml._types.DataframeEvaluationMetrics"
      - type: object
        properties:
          accuracy:
            description: Accuracy of predictions (per-class and overall).
            type: object
            additionalProperties:
              type: object
          multiclass_confusion_matrix:
            description: Multiclass confusion matrix.
            type: object
            additionalProperties:
              type: object
    ml._types.DataframeEvaluationMetrics:
      type: object
      properties:
        auc_roc:
          description: The AUC ROC (area under the curve of the receiver operating
            characteristic) score and optionally the curve. It is calculated for a
            specific class (provided as "class_name") treated as positive.
          allOf:
          - "$ref": "#/components/schemas/ml._types.DataframeEvaluationClassificationMetricsAucRoc"
        precision:
          description: Precision of predictions (per-class and average).
          type: object
          additionalProperties:
            type: object
        recall:
          description: Recall of predictions (per-class and average).
          type: object
          additionalProperties:
            type: object
    ml._types.DataframeEvaluationClassificationMetricsAucRoc:
      type: object
      properties:
        class_name:
          description: Name of the only class that is treated as positive during AUC
            ROC calculation. Other classes are treated as negative ("one-vs-all" strategy).
            All the evaluated documents must have class_name in the list of their
            top classes.
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        include_curve:
          description: Whether or not the curve should be returned in addition to
            the score. Default value is false.
          type: boolean
    ml._types.DataframeEvaluationOutlierDetection:
      type: object
      properties:
        actual_field:
          description: The field of the index which contains the ground truth. The
            data type of this field can be boolean or integer. If the data type is
            integer, the value has to be either 0 (false) or 1 (true).
          allOf:
          - "$ref": "#/components/schemas/_types.Field"
        predicted_probability_field:
          description: The field of the index that defines the probability of whether
            the item belongs to the class in question or not. It’s the field that
            contains the results of the analysis.
          allOf:
          - "$ref": "#/components/schemas/_types.Field"
        metrics:
          description: Specifies the metrics that are used for the evaluation.
          allOf:
          - "$ref": "#/components/schemas/ml._types.DataframeEvaluationOutlierDetectionMetrics"
      required:
      - actual_field
      - predicted_probability_field
    ml._types.DataframeEvaluationOutlierDetectionMetrics:
      allOf:
      - "$ref": "#/components/schemas/ml._types.DataframeEvaluationMetrics"
      - type: object
        properties:
          confusion_matrix:
            description: Accuracy of predictions (per-class and overall).
            type: object
            additionalProperties:
              type: object
    ml._types.DataframeEvaluationRegression:
      type: object
      properties:
        actual_field:
          description: The field of the index which contains the ground truth. The
            data type of this field must be numerical.
          allOf:
          - "$ref": "#/components/schemas/_types.Field"
        predicted_field:
          description: The field in the index that contains the predicted value, in
            other words the results of the regression analysis.
          allOf:
          - "$ref": "#/components/schemas/_types.Field"
        metrics:
          description: Specifies the metrics that are used for the evaluation. For
            more information on mse, msle, and huber, consult the Jupyter notebook
            on regression loss functions.
          allOf:
          - "$ref": "#/components/schemas/ml._types.DataframeEvaluationRegressionMetrics"
      required:
      - actual_field
      - predicted_field
    ml._types.DataframeEvaluationRegressionMetrics:
      type: object
      properties:
        mse:
          description: Average squared difference between the predicted values and
            the actual (ground truth) value. For more information, read this wiki
            article.
          type: object
          additionalProperties:
            type: object
        msle:
          description: Average squared difference between the logarithm of the predicted
            values and the logarithm of the actual (ground truth) value.
          allOf:
          - "$ref": "#/components/schemas/ml._types.DataframeEvaluationRegressionMetricsMsle"
        huber:
          description: Pseudo Huber loss function.
          allOf:
          - "$ref": "#/components/schemas/ml._types.DataframeEvaluationRegressionMetricsHuber"
        r_squared:
          description: Proportion of the variance in the dependent variable that is
            predictable from the independent variables.
          type: object
          additionalProperties:
            type: object
    ml._types.DataframeEvaluationRegressionMetricsMsle:
      type: object
      properties:
        offset:
          description: Defines the transition point at which you switch from minimizing
            quadratic error to minimizing quadratic log error. Defaults to 1.
          type: number
    ml._types.DataframeEvaluationRegressionMetricsHuber:
      type: object
      properties:
        delta:
          description: Approximates 1/2 (prediction - actual)2 for values much less
            than delta and approximates a straight line with slope delta for values
            much larger than delta. Defaults to 1. Delta needs to be greater than
            0.
          type: number
    ml.evaluate_data_frame.DataframeClassificationSummary:
      type: object
      properties:
        auc_roc:
          description: |-
            The AUC ROC (area under the curve of the receiver operating characteristic) score and optionally the curve.
            It is calculated for a specific class (provided as "class_name") treated as positive.
          allOf:
          - "$ref": "#/components/schemas/ml.evaluate_data_frame.DataframeEvaluationSummaryAucRoc"
        accuracy:
          description: Accuracy of predictions (per-class and overall).
          allOf:
          - "$ref": "#/components/schemas/ml.evaluate_data_frame.DataframeClassificationSummaryAccuracy"
        multiclass_confusion_matrix:
          description: Multiclass confusion matrix.
          allOf:
          - "$ref": "#/components/schemas/ml.evaluate_data_frame.DataframeClassificationSummaryMulticlassConfusionMatrix"
        precision:
          description: Precision of predictions (per-class and average).
          allOf:
          - "$ref": "#/components/schemas/ml.evaluate_data_frame.DataframeClassificationSummaryPrecision"
        recall:
          description: Recall of predictions (per-class and average).
          allOf:
          - "$ref": "#/components/schemas/ml.evaluate_data_frame.DataframeClassificationSummaryRecall"
    ml.evaluate_data_frame.DataframeEvaluationSummaryAucRoc:
      allOf:
      - "$ref": "#/components/schemas/ml.evaluate_data_frame.DataframeEvaluationValue"
      - type: object
        properties:
          curve:
            type: array
            items:
              "$ref": "#/components/schemas/ml.evaluate_data_frame.DataframeEvaluationSummaryAucRocCurveItem"
    ml.evaluate_data_frame.DataframeEvaluationSummaryAucRocCurveItem:
      type: object
      properties:
        tpr:
          type: number
        fpr:
          type: number
        threshold:
          type: number
      required:
      - tpr
      - fpr
      - threshold
    ml.evaluate_data_frame.DataframeEvaluationValue:
      type: object
      properties:
        value:
          type: number
      required:
      - value
    ml.evaluate_data_frame.DataframeClassificationSummaryAccuracy:
      type: object
      properties:
        classes:
          type: array
          items:
            "$ref": "#/components/schemas/ml.evaluate_data_frame.DataframeEvaluationClass"
        overall_accuracy:
          type: number
      required:
      - classes
      - overall_accuracy
    ml.evaluate_data_frame.DataframeEvaluationClass:
      allOf:
      - "$ref": "#/components/schemas/ml.evaluate_data_frame.DataframeEvaluationValue"
      - type: object
        properties:
          class_name:
            allOf:
            - "$ref": "#/components/schemas/_types.Name"
        required:
        - class_name
    ml.evaluate_data_frame.DataframeClassificationSummaryMulticlassConfusionMatrix:
      type: object
      properties:
        confusion_matrix:
          type: array
          items:
            "$ref": "#/components/schemas/ml.evaluate_data_frame.ConfusionMatrixItem"
        other_actual_class_count:
          type: number
      required:
      - confusion_matrix
      - other_actual_class_count
    ml.evaluate_data_frame.ConfusionMatrixItem:
      type: object
      properties:
        actual_class:
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        actual_class_doc_count:
          type: number
        predicted_classes:
          type: array
          items:
            "$ref": "#/components/schemas/ml.evaluate_data_frame.ConfusionMatrixPrediction"
        other_predicted_class_doc_count:
          type: number
      required:
      - actual_class
      - actual_class_doc_count
      - predicted_classes
      - other_predicted_class_doc_count
    ml.evaluate_data_frame.ConfusionMatrixPrediction:
      type: object
      properties:
        predicted_class:
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        count:
          type: number
      required:
      - predicted_class
      - count
    ml.evaluate_data_frame.DataframeClassificationSummaryPrecision:
      type: object
      properties:
        classes:
          type: array
          items:
            "$ref": "#/components/schemas/ml.evaluate_data_frame.DataframeEvaluationClass"
        avg_precision:
          type: number
      required:
      - classes
      - avg_precision
    ml.evaluate_data_frame.DataframeClassificationSummaryRecall:
      type: object
      properties:
        classes:
          type: array
          items:
            "$ref": "#/components/schemas/ml.evaluate_data_frame.DataframeEvaluationClass"
        avg_recall:
          type: number
      required:
      - classes
      - avg_recall
    ml.evaluate_data_frame.DataframeOutlierDetectionSummary:
      type: object
      properties:
        auc_roc:
          description: The AUC ROC (area under the curve of the receiver operating
            characteristic) score and optionally the curve.
          default: '{"include_curve": false}'
          allOf:
          - "$ref": "#/components/schemas/ml.evaluate_data_frame.DataframeEvaluationSummaryAucRoc"
        precision:
          description: Set the different thresholds of the outlier score at where
            the metric is calculated.
          type: object
          additionalProperties:
            type: number
        recall:
          description: Set the different thresholds of the outlier score at where
            the metric is calculated.
          type: object
          additionalProperties:
            type: number
        confusion_matrix:
          description: Set the different thresholds of the outlier score at where
            the metrics (`tp` - true positive, `fp` - false positive, `tn` - true
            negative, `fn` - false negative) are calculated.
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/ml.evaluate_data_frame.ConfusionMatrixThreshold"
    ml.evaluate_data_frame.ConfusionMatrixThreshold:
      type: object
      properties:
        tp:
          description: True Positive
          type: number
        fp:
          description: False Positive
          type: number
        tn:
          description: True Negative
          type: number
        fn:
          description: False Negative
          type: number
      required:
      - tp
      - fp
      - tn
      - fn
    ml.evaluate_data_frame.DataframeRegressionSummary:
      type: object
      properties:
        huber:
          description: Pseudo Huber loss function.
          allOf:
          - "$ref": "#/components/schemas/ml.evaluate_data_frame.DataframeEvaluationValue"
        mse:
          description: Average squared difference between the predicted values and
            the actual (`ground truth`) value.
          allOf:
          - "$ref": "#/components/schemas/ml.evaluate_data_frame.DataframeEvaluationValue"
        msle:
          description: Average squared difference between the logarithm of the predicted
            values and the logarithm of the actual (`ground truth`) value.
          allOf:
          - "$ref": "#/components/schemas/ml.evaluate_data_frame.DataframeEvaluationValue"
        r_squared:
          description: Proportion of the variance in the dependent variable that is
            predictable from the independent variables.
          allOf:
          - "$ref": "#/components/schemas/ml.evaluate_data_frame.DataframeEvaluationValue"
    ml._types.DataframeAnalyticsSource:
      type: object
      properties:
        index:
          description: 'Index or indices on which to perform the analysis. It can
            be a single index or index pattern as well as an array of indices or patterns.
            NOTE: If your source indices contain documents with the same IDs, only
            the document that is indexed last appears in the destination index.'
          allOf:
          - "$ref": "#/components/schemas/_types.Indices"
        runtime_mappings:
          description: Definitions of runtime fields that will become part of the
            mapping of the destination index.
          allOf:
          - "$ref": "#/components/schemas/_types.mapping.RuntimeFields"
        _source:
          description: Specify `includes` and/or `excludes patterns to select which
            fields will be present in the destination. Fields that are excluded cannot
            be included in the analysis.
          allOf:
          - "$ref": "#/components/schemas/ml._types.DataframeAnalysisAnalyzedFields"
        query:
          x-model: true
          type: object
          description: 'The Elasticsearch query domain-specific language (DSL). This
            value corresponds to the query object in an Elasticsearch search POST
            body. All the options that are supported by Elasticsearch can be used,
            as this object is passed verbatim to Elasticsearch. By default, this property
            has the following value: `{"match_all": {}}`.

            '
          externalDocs:
            url: https://www.elastic.co/docs/explore-analyze/query-filter/languages/querydsl
            description: Query DSL
      required:
      - index
    ml._types.DataframeAnalysisAnalyzedFields:
      type: object
      properties:
        includes:
          description: An array of strings that defines the fields that will be excluded
            from the analysis. You do not need to add fields with unsupported data
            types to excludes, these fields are excluded from the analysis automatically.
          type: array
          items:
            type: string
        excludes:
          description: An array of strings that defines the fields that will be included
            in the analysis.
          type: array
          items:
            type: string
    ml._types.DataframeAnalyticsDestination:
      type: object
      properties:
        index:
          description: Defines the destination index to store the results of the data
            frame analytics job.
          allOf:
          - "$ref": "#/components/schemas/_types.IndexName"
        results_field:
          description: Defines the name of the field in which to store the results
            of the analysis. Defaults to `ml`.
          allOf:
          - "$ref": "#/components/schemas/_types.Field"
      required:
      - index
    ml._types.DataframeAnalysisContainer:
      type: object
      properties:
        classification:
          description: The configuration information necessary to perform classification.
          allOf:
          - "$ref": "#/components/schemas/ml._types.DataframeAnalysisClassification"
        outlier_detection:
          description: 'The configuration information necessary to perform outlier
            detection. NOTE: Advanced parameters are for fine-tuning classification
            analysis. They are set automatically by hyperparameter optimization to
            give the minimum validation error. It is highly recommended to use the
            default values unless you fully understand the function of these parameters.'
          allOf:
          - "$ref": "#/components/schemas/ml._types.DataframeAnalysisOutlierDetection"
        regression:
          description: 'The configuration information necessary to perform regression.
            NOTE: Advanced parameters are for fine-tuning regression analysis. They
            are set automatically by hyperparameter optimization to give the minimum
            validation error. It is highly recommended to use the default values unless
            you fully understand the function of these parameters.'
          allOf:
          - "$ref": "#/components/schemas/ml._types.DataframeAnalysisRegression"
      minProperties: 1
      maxProperties: 1
    ml._types.DataframeAnalysisClassification:
      allOf:
      - "$ref": "#/components/schemas/ml._types.DataframeAnalysis"
      - type: object
        properties:
          class_assignment_objective:
            type: string
          num_top_classes:
            description: 'Defines the number of categories for which the predicted
              probabilities are reported. It must be non-negative or -1. If it is
              -1 or greater than the total number of categories, probabilities are
              reported for all categories; if you have a large number of categories,
              there could be a significant effect on the size of your destination
              index. NOTE: To use the AUC ROC evaluation method, `num_top_classes`
              must be set to -1 or a value greater than or equal to the total number
              of categories.'
            default: 2
            type: number
    ml._types.DataframeAnalysis:
      type: object
      properties:
        alpha:
          description: Advanced configuration option. Machine learning uses loss guided
            tree growing, which means that the decision trees grow where the regularized
            loss decreases most quickly. This parameter affects loss calculations
            by acting as a multiplier of the tree depth. Higher alpha values result
            in shallower trees and faster training times. By default, this value is
            calculated during hyperparameter optimization. It must be greater than
            or equal to zero.
          type: number
        dependent_variable:
          description: |-
            Defines which field of the document is to be predicted. It must match one of the fields in the index being used to train. If this field is missing from a document, then that document will not be used for training, but a prediction with the trained model will be generated for it. It is also known as continuous target variable.
            For classification analysis, the data type of the field must be numeric (`integer`, `short`, `long`, `byte`), categorical (`ip` or `keyword`), or `boolean`. There must be no more than 30 different values in this field.
            For regression analysis, the data type of the field must be numeric.
          type: string
        downsample_factor:
          description: Advanced configuration option. Controls the fraction of data
            that is used to compute the derivatives of the loss function for tree
            training. A small value results in the use of a small fraction of the
            data. If this value is set to be less than 1, accuracy typically improves.
            However, too small a value may result in poor convergence for the ensemble
            and so require more trees. By default, this value is calculated during
            hyperparameter optimization. It must be greater than zero and less than
            or equal to 1.
          type: number
        early_stopping_enabled:
          description: Advanced configuration option. Specifies whether the training
            process should finish if it is not finding any better performing models.
            If disabled, the training process can take significantly longer and the
            chance of finding a better performing model is unremarkable.
          default: true
          type: boolean
        eta:
          description: Advanced configuration option. The shrinkage applied to the
            weights. Smaller values result in larger forests which have a better generalization
            error. However, larger forests cause slower training. By default, this
            value is calculated during hyperparameter optimization. It must be a value
            between 0.001 and 1.
          type: number
        eta_growth_rate_per_tree:
          description: Advanced configuration option. Specifies the rate at which
            `eta` increases for each new tree that is added to the forest. For example,
            a rate of 1.05 increases `eta` by 5% for each extra tree. By default,
            this value is calculated during hyperparameter optimization. It must be
            between 0.5 and 2.
          type: number
        feature_bag_fraction:
          description: Advanced configuration option. Defines the fraction of features
            that will be used when selecting a random bag for each candidate split.
            By default, this value is calculated during hyperparameter optimization.
          type: number
        feature_processors:
          description: Advanced configuration option. A collection of feature preprocessors
            that modify one or more included fields. The analysis uses the resulting
            one or more features instead of the original document field. However,
            these features are ephemeral; they are not stored in the destination index.
            Multiple `feature_processors` entries can refer to the same document fields.
            Automatic categorical feature encoding still occurs for the fields that
            are unprocessed by a custom processor or that have categorical values.
            Use this property only if you want to override the automatic feature encoding
            of the specified fields.
          type: array
          items:
            "$ref": "#/components/schemas/ml._types.DataframeAnalysisFeatureProcessor"
        gamma:
          description: Advanced configuration option. Regularization parameter to
            prevent overfitting on the training data set. Multiplies a linear penalty
            associated with the size of individual trees in the forest. A high gamma
            value causes training to prefer small trees. A small gamma value results
            in larger individual trees and slower training. By default, this value
            is calculated during hyperparameter optimization. It must be a nonnegative
            value.
          type: number
        lambda:
          description: Advanced configuration option. Regularization parameter to
            prevent overfitting on the training data set. Multiplies an L2 regularization
            term which applies to leaf weights of the individual trees in the forest.
            A high lambda value causes training to favor small leaf weights. This
            behavior makes the prediction function smoother at the expense of potentially
            not being able to capture relevant relationships between the features
            and the dependent variable. A small lambda value results in large individual
            trees and slower training. By default, this value is calculated during
            hyperparameter optimization. It must be a nonnegative value.
          type: number
        max_optimization_rounds_per_hyperparameter:
          description: Advanced configuration option. A multiplier responsible for
            determining the maximum number of hyperparameter optimization steps in
            the Bayesian optimization procedure. The maximum number of steps is determined
            based on the number of undefined hyperparameters times the maximum optimization
            rounds per hyperparameter. By default, this value is calculated during
            hyperparameter optimization.
          type: number
        max_trees:
          description: Advanced configuration option. Defines the maximum number of
            decision trees in the forest. The maximum value is 2000. By default, this
            value is calculated during hyperparameter optimization.
          type: number
        num_top_feature_importance_values:
          description: Advanced configuration option. Specifies the maximum number
            of feature importance values per document to return. By default, no feature
            importance calculation occurs.
          default: 0
          type: number
        prediction_field_name:
          description: Defines the name of the prediction field in the results. Defaults
            to `<dependent_variable>_prediction`.
          allOf:
          - "$ref": "#/components/schemas/_types.Field"
        randomize_seed:
          description: Defines the seed for the random generator that is used to pick
            training data. By default, it is randomly generated. Set it to a specific
            value to use the same training data each time you start a job (assuming
            other related parameters such as `source` and `analyzed_fields` are the
            same).
          type: number
        soft_tree_depth_limit:
          description: Advanced configuration option. Machine learning uses loss guided
            tree growing, which means that the decision trees grow where the regularized
            loss decreases most quickly. This soft limit combines with the `soft_tree_depth_tolerance`
            to penalize trees that exceed the specified depth; the regularized loss
            increases quickly beyond this depth. By default, this value is calculated
            during hyperparameter optimization. It must be greater than or equal to
            0.
          type: number
        soft_tree_depth_tolerance:
          description: Advanced configuration option. This option controls how quickly
            the regularized loss increases when the tree depth exceeds `soft_tree_depth_limit`.
            By default, this value is calculated during hyperparameter optimization.
            It must be greater than or equal to 0.01.
          type: number
        training_percent:
          description: Defines what percentage of the eligible documents that will
            be used for training. Documents that are ignored by the analysis (for
            example those that contain arrays with more than one value) won’t be included
            in the calculation for used percentage.
          default: 100
          allOf:
          - "$ref": "#/components/schemas/_types.Percentage"
      required:
      - dependent_variable
    ml._types.DataframeAnalysisFeatureProcessor:
      type: object
      properties:
        frequency_encoding:
          description: The configuration information necessary to perform frequency
            encoding.
          allOf:
          - "$ref": "#/components/schemas/ml._types.DataframeAnalysisFeatureProcessorFrequencyEncoding"
        multi_encoding:
          description: The configuration information necessary to perform multi encoding.
            It allows multiple processors to be changed together. This way the output
            of a processor can then be passed to another as an input.
          allOf:
          - "$ref": "#/components/schemas/ml._types.DataframeAnalysisFeatureProcessorMultiEncoding"
        n_gram_encoding:
          description: 'The configuration information necessary to perform n-gram
            encoding. Features created by this encoder have the following name format:
            <feature_prefix>.<ngram><string position>. For example, if the feature_prefix
            is f, the feature name for the second unigram in a string is f.11.'
          allOf:
          - "$ref": "#/components/schemas/ml._types.DataframeAnalysisFeatureProcessorNGramEncoding"
        one_hot_encoding:
          description: The configuration information necessary to perform one hot
            encoding.
          allOf:
          - "$ref": "#/components/schemas/ml._types.DataframeAnalysisFeatureProcessorOneHotEncoding"
        target_mean_encoding:
          description: The configuration information necessary to perform target mean
            encoding.
          allOf:
          - "$ref": "#/components/schemas/ml._types.DataframeAnalysisFeatureProcessorTargetMeanEncoding"
      minProperties: 1
      maxProperties: 1
    ml._types.DataframeAnalysisFeatureProcessorFrequencyEncoding:
      type: object
      properties:
        feature_name:
          description: The resulting feature name.
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        field:
          allOf:
          - "$ref": "#/components/schemas/_types.Field"
        frequency_map:
          description: The resulting frequency map for the field value. If the field
            value is missing from the frequency_map, the resulting value is 0.
          type: object
          additionalProperties:
            type: number
      required:
      - feature_name
      - field
      - frequency_map
    ml._types.DataframeAnalysisFeatureProcessorMultiEncoding:
      type: object
      properties:
        processors:
          description: The ordered array of custom processors to execute. Must be
            more than 1.
          type: array
          items:
            type: number
      required:
      - processors
    ml._types.DataframeAnalysisFeatureProcessorNGramEncoding:
      type: object
      properties:
        feature_prefix:
          description: The feature name prefix. Defaults to ngram_<start>_<length>.
          type: string
        field:
          description: The name of the text field to encode.
          allOf:
          - "$ref": "#/components/schemas/_types.Field"
        length:
          description: Specifies the length of the n-gram substring. Defaults to 50.
            Must be greater than 0.
          type: number
        n_grams:
          description: Specifies which n-grams to gather. It’s an array of integer
            values where the minimum value is 1, and a maximum value is 5.
          type: array
          items:
            type: number
        start:
          description: Specifies the zero-indexed start of the n-gram substring. Negative
            values are allowed for encoding n-grams of string suffixes. Defaults to
            0.
          type: number
        custom:
          type: boolean
      required:
      - field
      - n_grams
    ml._types.DataframeAnalysisFeatureProcessorOneHotEncoding:
      type: object
      properties:
        field:
          description: The name of the field to encode.
          allOf:
          - "$ref": "#/components/schemas/_types.Field"
        hot_map:
          description: The one hot map mapping the field value with the column name.
          type: string
      required:
      - field
      - hot_map
    ml._types.DataframeAnalysisFeatureProcessorTargetMeanEncoding:
      type: object
      properties:
        default_value:
          description: The default value if field value is not found in the target_map.
          type: number
        feature_name:
          description: The resulting feature name.
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        field:
          description: The name of the field to encode.
          allOf:
          - "$ref": "#/components/schemas/_types.Field"
        target_map:
          description: The field value to target mean transition map.
          type: object
          additionalProperties:
            type: object
      required:
      - default_value
      - feature_name
      - field
      - target_map
    ml._types.DataframeAnalysisOutlierDetection:
      type: object
      properties:
        compute_feature_influence:
          description: Specifies whether the feature influence calculation is enabled.
          default: true
          type: boolean
        feature_influence_threshold:
          description: 'The minimum outlier score that a document needs to have in
            order to calculate its feature influence score. Value range: 0-1.'
          default: 0.1
          type: number
        method:
          description: The method that outlier detection uses. Available methods are
            `lof`, `ldof`, `distance_kth_nn`, `distance_knn`, and `ensemble`. The
            default value is ensemble, which means that outlier detection uses an
            ensemble of different methods and normalises and combines their individual
            outlier scores to obtain the overall outlier score.
          default: ensemble
          type: string
        n_neighbors:
          description: Defines the value for how many nearest neighbors each method
            of outlier detection uses to calculate its outlier score. When the value
            is not set, different values are used for different ensemble members.
            This default behavior helps improve the diversity in the ensemble; only
            override it if you are confident that the value you choose is appropriate
            for the data set.
          type: number
        outlier_fraction:
          description: The proportion of the data set that is assumed to be outlying
            prior to outlier detection. For example, 0.05 means it is assumed that
            5% of values are real outliers and 95% are inliers.
          type: number
        standardization_enabled:
          description: 'If true, the following operation is performed on the columns
            before computing outlier scores: `(x_i - mean(x_i)) / sd(x_i)`.'
          default: true
          type: boolean
    ml._types.DataframeAnalysisRegression:
      allOf:
      - "$ref": "#/components/schemas/ml._types.DataframeAnalysis"
      - type: object
        properties:
          loss_function:
            description: The loss function used during regression. Available options
              are `mse` (mean squared error), `msle` (mean squared logarithmic error),
              `huber` (Pseudo-Huber loss).
            default: mse
            type: string
          loss_function_parameter:
            description: A positive number that is used as a parameter to the `loss_function`.
            type: number
    ml._types.DataframeAnalyticsFieldSelection:
      type: object
      properties:
        is_included:
          description: Whether the field is selected to be included in the analysis.
          type: boolean
        is_required:
          description: Whether the field is required.
          type: boolean
        feature_type:
          description: The feature type of this field for the analysis. May be categorical
            or numerical.
          type: string
        mapping_types:
          description: The mapping types of the field.
          type: array
          items:
            type: string
        name:
          description: The field name.
          allOf:
          - "$ref": "#/components/schemas/_types.Field"
        reason:
          description: The reason a field is not selected to be included in the analysis.
          type: string
      required:
      - is_included
      - is_required
      - mapping_types
      - name
    ml._types.DataframeAnalyticsMemoryEstimation:
      type: object
      properties:
        expected_memory_with_disk:
          description: Estimated memory usage under the assumption that overflowing
            to disk is allowed during data frame analytics. expected_memory_with_disk
            is usually smaller than expected_memory_without_disk as using disk allows
            to limit the main memory needed to perform data frame analytics.
          type: string
        expected_memory_without_disk:
          description: Estimated memory usage under the assumption that the whole
            data frame analytics should happen in memory (i.e. without overflowing
            to disk).
          type: string
      required:
      - expected_memory_with_disk
      - expected_memory_without_disk
    ml._types.Page:
      type: object
      properties:
        from:
          description: Skips the specified number of items.
          default: 0
          type: number
        size:
          description: Specifies the maximum number of items to obtain.
          default: 10000
          type: number
    ml._types.BucketSummary:
      type: object
      properties:
        anomaly_score:
          description: |-
            The maximum anomaly score, between 0-100, for any of the bucket influencers. This is an overall, rate-limited
            score for the job. All the anomaly records in the bucket contribute to this score. This value might be updated as
            new data is analyzed.
          type: number
        bucket_influencers:
          type: array
          items:
            "$ref": "#/components/schemas/ml._types.BucketInfluencer"
        bucket_span:
          description: The length of the bucket in seconds. This value matches the
            bucket span that is specified in the job.
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitSeconds"
        event_count:
          description: The number of input data records processed in this bucket.
          type: number
        initial_anomaly_score:
          description: |-
            The maximum anomaly score for any of the bucket influencers. This is the initial value that was calculated at the
            time the bucket was processed.
          type: number
        is_interim:
          description: If true, this is an interim result. In other words, the results
            are calculated based on partial input data.
          type: boolean
        job_id:
          description: Identifier for the anomaly detection job.
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        processing_time_ms:
          description: The amount of time, in milliseconds, that it took to analyze
            the bucket contents and calculate results.
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
        result_type:
          description: Internal. This value is always set to bucket.
          type: string
        timestamp:
          description: |-
            The start time of the bucket. This timestamp uniquely identifies the bucket. Events that occur exactly at the
            timestamp of the bucket are included in the results for the bucket.
          allOf:
          - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
        timestamp_string:
          description: |-
            The start time of the bucket. This timestamp uniquely identifies the bucket. Events that occur exactly at the
            timestamp of the bucket are included in the results for the bucket.
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
      required:
      - anomaly_score
      - bucket_influencers
      - bucket_span
      - event_count
      - initial_anomaly_score
      - is_interim
      - job_id
      - processing_time_ms
      - result_type
      - timestamp
    ml._types.BucketInfluencer:
      type: object
      properties:
        anomaly_score:
          description: |-
            A normalized score between 0-100, which is calculated for each bucket influencer. This score might be updated as
            newer data is analyzed.
          type: number
        bucket_span:
          description: The length of the bucket in seconds. This value matches the
            bucket span that is specified in the job.
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitSeconds"
        influencer_field_name:
          description: The field name of the influencer.
          allOf:
          - "$ref": "#/components/schemas/_types.Field"
        initial_anomaly_score:
          description: |-
            The score between 0-100 for each bucket influencer. This score is the initial value that was calculated at the
            time the bucket was processed.
          type: number
        is_interim:
          description: If true, this is an interim result. In other words, the results
            are calculated based on partial input data.
          type: boolean
        job_id:
          description: Identifier for the anomaly detection job.
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        probability:
          description: |-
            The probability that the bucket has this behavior, in the range 0 to 1. This value can be held to a high precision
            of over 300 decimal places, so the `anomaly_score` is provided as a human-readable and friendly interpretation of
            this.
          type: number
        raw_anomaly_score:
          description: Internal.
          type: number
        result_type:
          description: Internal. This value is always set to `bucket_influencer`.
          type: string
        timestamp:
          description: The start time of the bucket for which these results were calculated.
          allOf:
          - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
        timestamp_string:
          description: The start time of the bucket for which these results were calculated.
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
      required:
      - anomaly_score
      - bucket_span
      - influencer_field_name
      - initial_anomaly_score
      - is_interim
      - job_id
      - probability
      - raw_anomaly_score
      - result_type
      - timestamp
    _types.DurationValueUnitSeconds:
      allOf:
      - "$ref": "#/components/schemas/_types.UnitSeconds"
    ml._types.CalendarEvent:
      type: object
      properties:
        calendar_id:
          description: A string that uniquely identifies a calendar.
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        event_id:
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        description:
          description: A description of the scheduled event.
          type: string
        end_time:
          description: The timestamp for the end of the scheduled event in milliseconds
            since the epoch or ISO 8601 format.
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
        start_time:
          description: The timestamp for the beginning of the scheduled event in milliseconds
            since the epoch or ISO 8601 format.
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
        skip_result:
          description: When true the model will not create results for this calendar
            period.
          default: true
          type: boolean
        skip_model_update:
          description: When true the model will not be updated for this calendar period.
          default: true
          type: boolean
        force_time_shift:
          description: Shift time by this many seconds. For example adjust time for
            daylight savings changes
          type: number
      required:
      - description
      - end_time
      - start_time
    ml.get_calendars.Calendar:
      type: object
      properties:
        calendar_id:
          description: A string that uniquely identifies a calendar.
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        description:
          description: A description of the calendar.
          type: string
        job_ids:
          description: An array of anomaly detection job identifiers.
          type: array
          items:
            "$ref": "#/components/schemas/_types.Id"
      required:
      - calendar_id
      - job_ids
    _types.CategoryId:
      type: number
    ml._types.Category:
      type: object
      properties:
        category_id:
          description: A unique identifier for the category. category_id is unique
            at the job level, even when per-partition categorization is enabled.
          allOf:
          - "$ref": "#/components/schemas/_types.ulong"
        examples:
          description: A list of examples of actual values that matched the category.
          type: array
          items:
            type: string
        grok_pattern:
          description: "[experimental] A Grok pattern that could be used in Logstash
            or an ingest pipeline to extract fields from messages that match the category.
            This field is experimental and may be changed or removed in a future release.
            The Grok patterns that are found are not optimal, but are often a good
            starting point for manual tweaking."
          allOf:
          - "$ref": "#/components/schemas/_types.GrokPattern"
        job_id:
          description: Identifier for the anomaly detection job.
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        max_matching_length:
          description: The maximum length of the fields that matched the category.
            The value is increased by 10% to enable matching for similar fields that
            have not been analyzed.
          allOf:
          - "$ref": "#/components/schemas/_types.ulong"
        partition_field_name:
          description: If per-partition categorization is enabled, this property identifies
            the field used to segment the categorization. It is not present when per-partition
            categorization is disabled.
          type: string
        partition_field_value:
          description: If per-partition categorization is enabled, this property identifies
            the value of the partition_field_name for the category. It is not present
            when per-partition categorization is disabled.
          type: string
        regex:
          description: A regular expression that is used to search for values that
            match the category.
          type: string
        terms:
          description: A space separated list of the common tokens that are matched
            in values of the category.
          type: string
        num_matches:
          description: The number of messages that have been matched by this category.
            This is only guaranteed to have the latest accurate count after a job
            _flush or _close
          type: number
        preferred_to_categories:
          description: A list of category_id entries that this current category encompasses.
            Any new message that is processed by the categorizer will match against
            this category and not any of the categories in this list. This is only
            guaranteed to have the latest accurate list of categories after a job
            _flush or _close
          type: array
          items:
            "$ref": "#/components/schemas/_types.Id"
        p:
          type: string
        result_type:
          type: string
        mlcategory:
          type: string
      required:
      - category_id
      - examples
      - job_id
      - max_matching_length
      - regex
      - terms
      - result_type
      - mlcategory
    ml._types.DataframeAnalyticsSummary:
      type: object
      properties:
        allow_lazy_start:
          type: boolean
        analysis:
          allOf:
          - "$ref": "#/components/schemas/ml._types.DataframeAnalysisContainer"
        analyzed_fields:
          allOf:
          - "$ref": "#/components/schemas/ml._types.DataframeAnalysisAnalyzedFields"
        authorization:
          description: The security privileges that the job uses to run its queries.
            If Elastic Stack security features were disabled at the time of the most
            recent update to the job, this property is omitted.
          allOf:
          - "$ref": "#/components/schemas/ml._types.DataframeAnalyticsAuthorization"
        create_time:
          allOf:
          - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
        description:
          type: string
        dest:
          allOf:
          - "$ref": "#/components/schemas/ml._types.DataframeAnalyticsDestination"
        id:
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        max_num_threads:
          type: number
        model_memory_limit:
          type: string
        source:
          allOf:
          - "$ref": "#/components/schemas/ml._types.DataframeAnalyticsSource"
        version:
          allOf:
          - "$ref": "#/components/schemas/_types.VersionString"
        _meta:
          allOf:
          - "$ref": "#/components/schemas/_types.Metadata"
      required:
      - analysis
      - dest
      - id
      - source
    ml._types.DataframeAnalyticsAuthorization:
      type: object
      properties:
        api_key:
          description: If an API key was used for the most recent update to the job,
            its name and identifier are listed in the response.
          allOf:
          - "$ref": "#/components/schemas/ml._types.ApiKeyAuthorization"
        roles:
          description: If a user ID was used for the most recent update to the job,
            its roles at the time of the update are listed in the response.
          type: array
          items:
            type: string
        service_account:
          description: If a service account was used for the most recent update to
            the job, the account name is listed in the response.
          type: string
    ml._types.ApiKeyAuthorization:
      type: object
      properties:
        id:
          description: The identifier for the API key.
          type: string
        name:
          description: The name of the API key.
          type: string
      required:
      - id
      - name
    ml._types.DataframeAnalytics:
      type: object
      properties:
        analysis_stats:
          description: An object containing information about the analysis job.
          allOf:
          - "$ref": "#/components/schemas/ml._types.DataframeAnalyticsStatsContainer"
        assignment_explanation:
          description: For running jobs only, contains messages relating to the selection
            of a node to run the job.
          type: string
        data_counts:
          description: An object that provides counts for the quantity of documents
            skipped, used in training, or available for testing.
          allOf:
          - "$ref": "#/components/schemas/ml._types.DataframeAnalyticsStatsDataCounts"
        id:
          description: The unique identifier of the data frame analytics job.
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        memory_usage:
          description: An object describing memory usage of the analytics. It is present
            only after the job is started and memory usage is reported.
          allOf:
          - "$ref": "#/components/schemas/ml._types.DataframeAnalyticsStatsMemoryUsage"
        node:
          description: Contains properties for the node that runs the job. This information
            is available only for running jobs.
          x-state: Generally available
          allOf:
          - "$ref": "#/components/schemas/_types.NodeAttributes"
        progress:
          description: The progress report of the data frame analytics job by phase.
          type: array
          items:
            "$ref": "#/components/schemas/ml._types.DataframeAnalyticsStatsProgress"
        state:
          description: 'The status of the data frame analytics job, which can be one
            of the following values: failed, started, starting, stopping, stopped.'
          allOf:
          - "$ref": "#/components/schemas/ml._types.DataframeState"
      required:
      - data_counts
      - id
      - memory_usage
      - progress
      - state
    ml._types.DataframeAnalyticsStatsContainer:
      type: object
      properties:
        classification_stats:
          description: An object containing information about the classification analysis
            job.
          allOf:
          - "$ref": "#/components/schemas/ml._types.DataframeAnalyticsStatsHyperparameters"
        outlier_detection_stats:
          description: An object containing information about the outlier detection
            job.
          allOf:
          - "$ref": "#/components/schemas/ml._types.DataframeAnalyticsStatsOutlierDetection"
        regression_stats:
          description: An object containing information about the regression analysis.
          allOf:
          - "$ref": "#/components/schemas/ml._types.DataframeAnalyticsStatsHyperparameters"
      minProperties: 1
      maxProperties: 1
    ml._types.DataframeAnalyticsStatsHyperparameters:
      type: object
      properties:
        hyperparameters:
          description: An object containing the parameters of the classification analysis
            job.
          allOf:
          - "$ref": "#/components/schemas/ml._types.Hyperparameters"
        iteration:
          description: The number of iterations on the analysis.
          type: number
        timestamp:
          description: The timestamp when the statistics were reported in milliseconds
            since the epoch.
          allOf:
          - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
        timing_stats:
          description: An object containing time statistics about the data frame analytics
            job.
          allOf:
          - "$ref": "#/components/schemas/ml._types.TimingStats"
        validation_loss:
          description: An object containing information about validation loss.
          allOf:
          - "$ref": "#/components/schemas/ml._types.ValidationLoss"
      required:
      - hyperparameters
      - iteration
      - timestamp
      - timing_stats
      - validation_loss
    ml._types.Hyperparameters:
      type: object
      properties:
        alpha:
          description: |-
            Advanced configuration option.
            Machine learning uses loss guided tree growing, which means that the decision trees grow where the regularized loss decreases most quickly.
            This parameter affects loss calculations by acting as a multiplier of the tree depth.
            Higher alpha values result in shallower trees and faster training times.
            By default, this value is calculated during hyperparameter optimization.
            It must be greater than or equal to zero.
          type: number
        lambda:
          description: |-
            Advanced configuration option.
            Regularization parameter to prevent overfitting on the training data set.
            Multiplies an L2 regularization term which applies to leaf weights of the individual trees in the forest.
            A high lambda value causes training to favor small leaf weights.
            This behavior makes the prediction function smoother at the expense of potentially not being able to capture relevant relationships between the features and the dependent variable.
            A small lambda value results in large individual trees and slower training.
            By default, this value is calculated during hyperparameter optimization.
            It must be a nonnegative value.
          type: number
        gamma:
          description: |-
            Advanced configuration option.
            Regularization parameter to prevent overfitting on the training data set.
            Multiplies a linear penalty associated with the size of individual trees in the forest.
            A high gamma value causes training to prefer small trees.
            A small gamma value results in larger individual trees and slower training.
            By default, this value is calculated during hyperparameter optimization.
            It must be a nonnegative value.
          type: number
        eta:
          description: |-
            Advanced configuration option.
            The shrinkage applied to the weights.
            Smaller values result in larger forests which have a better generalization error.
            However, larger forests cause slower training.
            By default, this value is calculated during hyperparameter optimization.
            It must be a value between `0.001` and `1`.
          type: number
        eta_growth_rate_per_tree:
          description: |-
            Advanced configuration option.
            Specifies the rate at which `eta` increases for each new tree that is added to the forest.
            For example, a rate of 1.05 increases `eta` by 5% for each extra tree.
            By default, this value is calculated during hyperparameter optimization.
            It must be between `0.5` and `2`.
          type: number
        feature_bag_fraction:
          description: |-
            Advanced configuration option.
            Defines the fraction of features that will be used when selecting a random bag for each candidate split.
            By default, this value is calculated during hyperparameter optimization.
          type: number
        downsample_factor:
          description: |-
            Advanced configuration option.
            Controls the fraction of data that is used to compute the derivatives of the loss function for tree training.
            A small value results in the use of a small fraction of the data.
            If this value is set to be less than 1, accuracy typically improves.
            However, too small a value may result in poor convergence for the ensemble and so require more trees.
            By default, this value is calculated during hyperparameter optimization.
            It must be greater than zero and less than or equal to 1.
          type: number
        max_attempts_to_add_tree:
          description: |-
            If the algorithm fails to determine a non-trivial tree (more than a single leaf), this parameter determines how many of such consecutive failures are tolerated.
            Once the number of attempts exceeds the threshold, the forest training stops.
          type: number
        max_optimization_rounds_per_hyperparameter:
          description: |-
            Advanced configuration option.
            A multiplier responsible for determining the maximum number of hyperparameter optimization steps in the Bayesian optimization procedure.
            The maximum number of steps is determined based on the number of undefined hyperparameters times the maximum optimization rounds per hyperparameter.
            By default, this value is calculated during hyperparameter optimization.
          type: number
        max_trees:
          description: |-
            Advanced configuration option.
            Defines the maximum number of decision trees in the forest.
            The maximum value is 2000.
            By default, this value is calculated during hyperparameter optimization.
          type: number
        num_folds:
          description: The maximum number of folds for the cross-validation procedure.
          type: number
        num_splits_per_feature:
          description: Determines the maximum number of splits for every feature that
            can occur in a decision tree when the tree is trained.
          type: number
        soft_tree_depth_limit:
          description: |-
            Advanced configuration option.
            Machine learning uses loss guided tree growing, which means that the decision trees grow where the regularized loss decreases most quickly.
            This soft limit combines with the `soft_tree_depth_tolerance` to penalize trees that exceed the specified depth; the regularized loss increases quickly beyond this depth.
            By default, this value is calculated during hyperparameter optimization.
            It must be greater than or equal to 0.
          type: number
        soft_tree_depth_tolerance:
          description: |-
            Advanced configuration option.
            This option controls how quickly the regularized loss increases when the tree depth exceeds `soft_tree_depth_limit`.
            By default, this value is calculated during hyperparameter optimization.
            It must be greater than or equal to 0.01.
          type: number
    ml._types.TimingStats:
      type: object
      properties:
        elapsed_time:
          description: Runtime of the analysis in milliseconds.
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
        iteration_time:
          description: Runtime of the latest iteration of the analysis in milliseconds.
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
      required:
      - elapsed_time
    ml._types.ValidationLoss:
      type: object
      properties:
        fold_values:
          description: Validation loss values for every added decision tree during
            the forest growing procedure.
          type: array
          items:
            type: string
        loss_type:
          description: The type of the loss metric. For example, binomial_logistic.
          type: string
      required:
      - fold_values
      - loss_type
    ml._types.DataframeAnalyticsStatsOutlierDetection:
      type: object
      properties:
        parameters:
          description: The list of job parameters specified by the user or determined
            by algorithmic heuristics.
          allOf:
          - "$ref": "#/components/schemas/ml._types.OutlierDetectionParameters"
        timestamp:
          description: The timestamp when the statistics were reported in milliseconds
            since the epoch.
          allOf:
          - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
        timing_stats:
          description: An object containing time statistics about the data frame analytics
            job.
          allOf:
          - "$ref": "#/components/schemas/ml._types.TimingStats"
      required:
      - parameters
      - timestamp
      - timing_stats
    ml._types.OutlierDetectionParameters:
      type: object
      properties:
        compute_feature_influence:
          description: Specifies whether the feature influence calculation is enabled.
          default: true
          type: boolean
        feature_influence_threshold:
          description: |-
            The minimum outlier score that a document needs to have in order to calculate its feature influence score.
            Value range: 0-1
          default: 0.1
          type: number
        method:
          description: |-
            The method that outlier detection uses.
            Available methods are `lof`, `ldof`, `distance_kth_nn`, `distance_knn`, and `ensemble`.
            The default value is ensemble, which means that outlier detection uses an ensemble of different methods and normalises and combines their individual outlier scores to obtain the overall outlier score.
          type: string
        n_neighbors:
          description: |-
            Defines the value for how many nearest neighbors each method of outlier detection uses to calculate its outlier score.
            When the value is not set, different values are used for different ensemble members.
            This default behavior helps improve the diversity in the ensemble; only override it if you are confident that the value you choose is appropriate for the data set.
          type: number
        outlier_fraction:
          description: |-
            The proportion of the data set that is assumed to be outlying prior to outlier detection.
            For example, 0.05 means it is assumed that 5% of values are real outliers and 95% are inliers.
          type: number
        standardization_enabled:
          description: 'If `true`, the following operation is performed on the columns
            before computing outlier scores: (x_i - mean(x_i)) / sd(x_i).'
          default: true
          type: boolean
    ml._types.DataframeAnalyticsStatsDataCounts:
      type: object
      properties:
        skipped_docs_count:
          description: The number of documents that are skipped during the analysis
            because they contained values that are not supported by the analysis.
            For example, outlier detection does not support missing fields so it skips
            documents with missing fields. Likewise, all types of analysis skip documents
            that contain arrays with more than one element.
          type: number
        test_docs_count:
          description: The number of documents that are not used for training the
            model and can be used for testing.
          type: number
        training_docs_count:
          description: The number of documents that are used for training the model.
          type: number
      required:
      - skipped_docs_count
      - test_docs_count
      - training_docs_count
    ml._types.DataframeAnalyticsStatsMemoryUsage:
      type: object
      properties:
        memory_reestimate_bytes:
          description: This value is present when the status is hard_limit and it
            is a new estimate of how much memory the job needs.
          type: number
        peak_usage_bytes:
          description: The number of bytes used at the highest peak of memory usage.
          type: number
        status:
          description: The memory usage status.
          type: string
        timestamp:
          description: The timestamp when memory usage was calculated.
          allOf:
          - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
      required:
      - peak_usage_bytes
      - status
    _types.NodeAttributes:
      type: object
      properties:
        attributes:
          description: Lists node attributes.
          type: object
          additionalProperties:
            type: string
        ephemeral_id:
          description: The ephemeral ID of the node.
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        id:
          description: The unique identifier of the node.
          allOf:
          - "$ref": "#/components/schemas/_types.NodeId"
        name:
          description: The unique identifier of the node.
          allOf:
          - "$ref": "#/components/schemas/_types.NodeName"
        transport_address:
          description: The host and port where transport HTTP connections are accepted.
          allOf:
          - "$ref": "#/components/schemas/_types.TransportAddress"
      required:
      - attributes
      - ephemeral_id
      - name
      - transport_address
    ml._types.DataframeAnalyticsStatsProgress:
      type: object
      properties:
        phase:
          description: Defines the phase of the data frame analytics job.
          type: string
        progress_percent:
          description: The progress that the data frame analytics job has made expressed
            in percentage.
          type: number
      required:
      - phase
      - progress_percent
    ml._types.DataframeState:
      type: string
      enum:
      - started
      - stopped
      - starting
      - stopping
      - failed
    ml._types.DatafeedStats:
      type: object
      properties:
        assignment_explanation:
          description: For started datafeeds only, contains messages relating to the
            selection of a node.
          type: string
        datafeed_id:
          description: |-
            A numerical character string that uniquely identifies the datafeed.
            This identifier can contain lowercase alphanumeric characters (a-z and 0-9), hyphens, and underscores.
            It must start and end with alphanumeric characters.
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        node:
          description: For started datafeeds only, this information pertains to the
            node upon which the datafeed is started.
          x-state: Generally available
          allOf:
          - "$ref": "#/components/schemas/ml._types.DiscoveryNodeCompact"
        state:
          description: 'The status of the datafeed, which can be one of the following
            values: `starting`, `started`, `stopping`, `stopped`.'
          allOf:
          - "$ref": "#/components/schemas/ml._types.DatafeedState"
        timing_stats:
          description: An object that provides statistical information about timing
            aspect of this datafeed.
          allOf:
          - "$ref": "#/components/schemas/ml._types.DatafeedTimingStats"
        running_state:
          description: |-
            An object containing the running state for this datafeed.
            It is only provided if the datafeed is started.
          allOf:
          - "$ref": "#/components/schemas/ml._types.DatafeedRunningState"
      required:
      - datafeed_id
      - state
    ml._types.DiscoveryNodeCompact:
      description: Alternative representation of DiscoveryNode used in ml.get_job_stats
        and ml.get_datafeed_stats
      type: object
      properties:
        name:
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        ephemeral_id:
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        id:
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        transport_address:
          allOf:
          - "$ref": "#/components/schemas/_types.TransportAddress"
        attributes:
          type: object
          additionalProperties:
            type: string
      required:
      - name
      - ephemeral_id
      - id
      - transport_address
      - attributes
    ml._types.DatafeedTimingStats:
      type: object
      properties:
        bucket_count:
          description: The number of buckets processed.
          type: number
        exponential_average_search_time_per_hour_ms:
          description: The exponential average search time per hour, in milliseconds.
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitFloatMillis"
        exponential_average_calculation_context:
          allOf:
          - "$ref": "#/components/schemas/ml._types.ExponentialAverageCalculationContext"
        job_id:
          description: Identifier for the anomaly detection job.
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        search_count:
          description: The number of searches run by the datafeed.
          type: number
        total_search_time_ms:
          description: The total time the datafeed spent searching, in milliseconds.
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitFloatMillis"
        average_search_time_per_bucket_ms:
          description: The average search time per bucket, in milliseconds.
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitFloatMillis"
      required:
      - bucket_count
      - exponential_average_search_time_per_hour_ms
      - job_id
      - search_count
      - total_search_time_ms
    _types.DurationValueUnitFloatMillis:
      allOf:
      - "$ref": "#/components/schemas/_types.UnitFloatMillis"
    _types.UnitFloatMillis:
      description: Time unit for fractional milliseconds
      type: number
    ml._types.ExponentialAverageCalculationContext:
      type: object
      properties:
        incremental_metric_value_ms:
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitFloatMillis"
        latest_timestamp:
          allOf:
          - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
        previous_exponential_average_ms:
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitFloatMillis"
      required:
      - incremental_metric_value_ms
    ml._types.DatafeedRunningState:
      type: object
      properties:
        real_time_configured:
          description: Indicates if the datafeed is "real-time"; meaning that the
            datafeed has no configured `end` time.
          type: boolean
        real_time_running:
          description: |-
            Indicates whether the datafeed has finished running on the available past data.
            For datafeeds without a configured `end` time, this means that the datafeed is now running on "real-time" data.
          type: boolean
        search_interval:
          description: Provides the latest time interval the datafeed has searched.
          allOf:
          - "$ref": "#/components/schemas/ml._types.RunningStateSearchInterval"
      required:
      - real_time_configured
      - real_time_running
    ml._types.RunningStateSearchInterval:
      type: object
      properties:
        end:
          description: The end time.
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        end_ms:
          description: The end time as an epoch in milliseconds.
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
        start:
          description: The start time.
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        start_ms:
          description: The start time as an epoch in milliseconds.
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
      required:
      - end_ms
      - start_ms
    ml._types.Datafeed:
      type: object
      properties:
        aggregations:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/_types.aggregations.AggregationContainer"
        authorization:
          description: The security privileges that the datafeed uses to run its queries.
            If Elastic Stack security features were disabled at the time of the most
            recent update to the datafeed, this property is omitted.
          allOf:
          - "$ref": "#/components/schemas/ml._types.DatafeedAuthorization"
        chunking_config:
          allOf:
          - "$ref": "#/components/schemas/ml._types.ChunkingConfig"
        datafeed_id:
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        frequency:
          description: 'The interval at which scheduled queries are made while the
            datafeed runs in real time. The default value is either the bucket span
            for short bucket spans, or, for longer bucket spans, a sensible fraction
            of the bucket span. For example: `150s`. When `frequency` is shorter than
            the bucket span, interim results for the last (partial) bucket are written
            then eventually overwritten by the full bucket results. If the datafeed
            uses aggregations, this value must be divisible by the interval of the
            date histogram aggregation.'
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        indices:
          type: array
          items:
            type: string
        indexes:
          type: array
          items:
            type: string
        job_id:
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        max_empty_searches:
          type: number
        query_delay:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        script_fields:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/_types.ScriptField"
        scroll_size:
          type: number
        delayed_data_check_config:
          allOf:
          - "$ref": "#/components/schemas/ml._types.DelayedDataCheckConfig"
        runtime_mappings:
          allOf:
          - "$ref": "#/components/schemas/_types.mapping.RuntimeFields"
        indices_options:
          allOf:
          - "$ref": "#/components/schemas/_types.IndicesOptions"
        query:
          x-model: true
          type: object
          description: 'The Elasticsearch query domain-specific language (DSL). This
            value corresponds to the query object in an Elasticsearch search POST
            body. All the options that are supported by Elasticsearch can be used,
            as this object is passed verbatim to Elasticsearch. By default, this property
            has the following value: `{"match_all": {"boost": 1}}`.

            '
          externalDocs:
            url: https://www.elastic.co/docs/explore-analyze/query-filter/languages/querydsl
            description: Query DSL
      required:
      - datafeed_id
      - indices
      - job_id
      - query
      - delayed_data_check_config
    ml._types.DatafeedAuthorization:
      type: object
      properties:
        api_key:
          description: If an API key was used for the most recent update to the datafeed,
            its name and identifier are listed in the response.
          allOf:
          - "$ref": "#/components/schemas/ml._types.ApiKeyAuthorization"
        roles:
          description: If a user ID was used for the most recent update to the datafeed,
            its roles at the time of the update are listed in the response.
          type: array
          items:
            type: string
        service_account:
          description: If a service account was used for the most recent update to
            the datafeed, the account name is listed in the response.
          type: string
    ml._types.ChunkingConfig:
      type: object
      properties:
        mode:
          description: |-
            If the mode is `auto`, the chunk size is dynamically calculated;
            this is the recommended value when the datafeed does not use aggregations.
            If the mode is `manual`, chunking is applied according to the specified `time_span`;
            use this mode when the datafeed uses aggregations. If the mode is `off`, no chunking is applied.
          allOf:
          - "$ref": "#/components/schemas/ml._types.ChunkingMode"
        time_span:
          description: The time span that each search will be querying. This setting
            is applicable only when the `mode` is set to `manual`.
          default: 3h
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
      required:
      - mode
    ml._types.ChunkingMode:
      type: string
      enum:
      - auto
      - manual
      - 'off'
    ml._types.DelayedDataCheckConfig:
      type: object
      properties:
        check_window:
          description: |-
            The window of time that is searched for late data. This window of time ends with the latest finalized bucket.
            It defaults to null, which causes an appropriate `check_window` to be calculated when the real-time datafeed runs.
            In particular, the default `check_window` span calculation is based on the maximum of `2h` or `8 * bucket_span`.
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        enabled:
          description: Specifies whether the datafeed periodically checks for delayed
            data.
          type: boolean
      required:
      - enabled
    _types.IndicesOptions:
      description: |-
        Controls how to deal with unavailable concrete indices (closed or missing), how wildcard expressions are expanded
        to actual indices (all, closed or open indices) and how to deal with wildcard expressions that resolve to no indices.
      type: object
      properties:
        allow_no_indices:
          description: |-
            If false, the request returns an error if any wildcard expression, index alias, or `_all` value targets only
            missing or closed indices. This behavior applies even if the request targets other open indices. For example,
            a request targeting `foo*,bar*` returns an error if an index starts with `foo` but no index starts with `bar`.
          type: boolean
        expand_wildcards:
          description: |+
            Type of index that wildcard patterns can match. If the request can target data streams, this argument
            determines whether wildcard expressions match hidden data streams. Supports comma-separated values,
            such as `open,hidden`.

            Supported values include:
              - `all`: Match any data stream or index, including hidden ones.
              - `open`: Match open, non-hidden indices. Also matches any non-hidden data stream.
              - `closed`: Match closed, non-hidden indices. Also matches any non-hidden data stream. Data streams cannot be closed.
              - `hidden`: Match hidden data streams and hidden indices. Must be combined with `open`, `closed`, or `both`.
              - `none`: Wildcard expressions are not accepted.

          allOf:
          - "$ref": "#/components/schemas/_types.ExpandWildcards"
        ignore_unavailable:
          description: If true, missing or closed indices are not included in the
            response.
          default: false
          type: boolean
        ignore_throttled:
          description: If true, concrete, expanded or aliased indices are ignored
            when frozen.
          default: true
          type: boolean
    ml._types.Filter:
      type: object
      properties:
        description:
          description: A description of the filter.
          type: string
        filter_id:
          description: A string that uniquely identifies a filter.
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        items:
          description: An array of strings which is the filter item list.
          type: array
          items:
            type: string
      required:
      - filter_id
      - items
    ml._types.Influencer:
      type: object
      properties:
        bucket_span:
          description: The length of the bucket in seconds. This value matches the
            bucket span that is specified in the job.
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitSeconds"
        influencer_score:
          description: |-
            A normalized score between 0-100, which is based on the probability of the influencer in this bucket aggregated
            across detectors. Unlike `initial_influencer_score`, this value is updated by a re-normalization process as new
            data is analyzed.
          type: number
        influencer_field_name:
          description: The field name of the influencer.
          allOf:
          - "$ref": "#/components/schemas/_types.Field"
        influencer_field_value:
          description: The entity that influenced, contributed to, or was to blame
            for the anomaly.
          type: string
        initial_influencer_score:
          description: |-
            A normalized score between 0-100, which is based on the probability of the influencer aggregated across detectors.
            This is the initial value that was calculated at the time the bucket was processed.
          type: number
        is_interim:
          description: If true, this is an interim result. In other words, the results
            are calculated based on partial input data.
          type: boolean
        job_id:
          description: Identifier for the anomaly detection job.
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        probability:
          description: |-
            The probability that the influencer has this behavior, in the range 0 to 1. This value can be held to a high
            precision of over 300 decimal places, so the `influencer_score` is provided as a human-readable and friendly
            interpretation of this value.
          type: number
        result_type:
          description: Internal. This value is always set to `influencer`.
          type: string
        timestamp:
          description: The start time of the bucket for which these results were calculated.
          allOf:
          - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
        foo:
          description: |-
            Additional influencer properties are added, depending on the fields being analyzed. For example, if it’s
            analyzing `user_name` as an influencer, a field `user_name` is added to the result document. This
            information enables you to filter the anomaly results more easily.
          type: string
      required:
      - bucket_span
      - influencer_score
      - influencer_field_name
      - influencer_field_value
      - initial_influencer_score
      - is_interim
      - job_id
      - probability
      - result_type
      - timestamp
    ml._types.JobStats:
      type: object
      properties:
        assignment_explanation:
          description: For open anomaly detection jobs only, contains messages relating
            to the selection of a node to run the job.
          type: string
        data_counts:
          description: |-
            An object that describes the quantity of input to the job and any related error counts.
            The `data_count` values are cumulative for the lifetime of a job.
            If a model snapshot is reverted or old results are deleted, the job counts are not reset.
          allOf:
          - "$ref": "#/components/schemas/ml._types.DataCounts"
        forecasts_stats:
          description: |-
            An object that provides statistical information about forecasts belonging to this job.
            Some statistics are omitted if no forecasts have been made.
          allOf:
          - "$ref": "#/components/schemas/ml._types.JobForecastStatistics"
        job_id:
          description: Identifier for the anomaly detection job.
          type: string
        model_size_stats:
          description: An object that provides information about the size and contents
            of the model.
          allOf:
          - "$ref": "#/components/schemas/ml._types.ModelSizeStats"
        node:
          description: |-
            Contains properties for the node that runs the job.
            This information is available only for open jobs.
          x-state: Generally available
          allOf:
          - "$ref": "#/components/schemas/ml._types.DiscoveryNodeCompact"
        open_time:
          description: For open jobs only, the elapsed time for which the job has
            been open.
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
        state:
          description: |+
            The status of the anomaly detection job, which can be one of the following values: `closed`, `closing`, `failed`, `opened`, `opening`.

            Supported values include:
              - `closing`: The job close action is in progress and has not yet completed. A closing job cannot accept further data.
              - `closed`: The job finished successfully with its model state persisted. The job must be opened before it can accept further data.
              - `opened`: The job is available to receive and process data.
              - `failed`: The job did not finish successfully due to an error.
            This situation can occur due to invalid input data, a fatal error occurring during the analysis, or an external interaction such as the process being killed by the Linux out of memory (OOM) killer.
            If the job had irrevocably failed, it must be force closed and then deleted.
            If the datafeed can be corrected, the job can be closed and then re-opened.
              - `opening`: The job open action is in progress and has not yet completed.

          allOf:
          - "$ref": "#/components/schemas/ml._types.JobState"
        timing_stats:
          description: An object that provides statistical information about timing
            aspect of this job.
          allOf:
          - "$ref": "#/components/schemas/ml._types.JobTimingStats"
        deleting:
          description: Indicates that the process of deleting the job is in progress
            but not yet completed. It is only reported when `true`.
          type: boolean
      required:
      - data_counts
      - forecasts_stats
      - job_id
      - model_size_stats
      - state
      - timing_stats
    ml._types.DataCounts:
      type: object
      properties:
        bucket_count:
          type: number
        earliest_record_timestamp:
          type: number
        empty_bucket_count:
          type: number
        input_bytes:
          type: number
        input_field_count:
          type: number
        input_record_count:
          type: number
        invalid_date_count:
          type: number
        job_id:
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        last_data_time:
          type: number
        latest_empty_bucket_timestamp:
          type: number
        latest_record_timestamp:
          type: number
        latest_sparse_bucket_timestamp:
          type: number
        latest_bucket_timestamp:
          type: number
        log_time:
          type: number
        missing_field_count:
          type: number
        out_of_order_timestamp_count:
          type: number
        processed_field_count:
          type: number
        processed_record_count:
          type: number
        sparse_bucket_count:
          type: number
      required:
      - bucket_count
      - empty_bucket_count
      - input_bytes
      - input_field_count
      - input_record_count
      - invalid_date_count
      - job_id
      - missing_field_count
      - out_of_order_timestamp_count
      - processed_field_count
      - processed_record_count
      - sparse_bucket_count
    ml._types.JobForecastStatistics:
      type: object
      properties:
        memory_bytes:
          allOf:
          - "$ref": "#/components/schemas/ml._types.JobStatistics"
        processing_time_ms:
          allOf:
          - "$ref": "#/components/schemas/ml._types.JobStatistics"
        records:
          allOf:
          - "$ref": "#/components/schemas/ml._types.JobStatistics"
        status:
          type: object
          additionalProperties:
            type: number
        total:
          type: number
        forecasted_jobs:
          type: number
      required:
      - total
      - forecasted_jobs
    ml._types.JobStatistics:
      type: object
      properties:
        avg:
          type: number
        max:
          type: number
        min:
          type: number
        total:
          type: number
      required:
      - avg
      - max
      - min
      - total
    ml._types.ModelSizeStats:
      type: object
      properties:
        bucket_allocation_failures_count:
          type: number
        job_id:
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        log_time:
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
        memory_status:
          allOf:
          - "$ref": "#/components/schemas/ml._types.MemoryStatus"
        model_bytes:
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        model_bytes_exceeded:
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        model_bytes_memory_limit:
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        output_memory_allocator_bytes:
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        peak_model_bytes:
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        assignment_memory_basis:
          type: string
        result_type:
          type: string
        total_by_field_count:
          type: number
        total_over_field_count:
          type: number
        total_partition_field_count:
          type: number
        categorization_status:
          allOf:
          - "$ref": "#/components/schemas/ml._types.CategorizationStatus"
        categorized_doc_count:
          type: number
        dead_category_count:
          type: number
        failed_category_count:
          type: number
        frequent_category_count:
          type: number
        rare_category_count:
          type: number
        total_category_count:
          type: number
        timestamp:
          type: number
      required:
      - bucket_allocation_failures_count
      - job_id
      - log_time
      - memory_status
      - model_bytes
      - result_type
      - total_by_field_count
      - total_over_field_count
      - total_partition_field_count
      - categorization_status
      - categorized_doc_count
      - dead_category_count
      - failed_category_count
      - frequent_category_count
      - rare_category_count
      - total_category_count
    ml._types.JobTimingStats:
      type: object
      properties:
        average_bucket_processing_time_ms:
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitFloatMillis"
        bucket_count:
          type: number
        exponential_average_bucket_processing_time_ms:
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitFloatMillis"
        exponential_average_bucket_processing_time_per_hour_ms:
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitFloatMillis"
        job_id:
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        total_bucket_processing_time_ms:
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitFloatMillis"
        maximum_bucket_processing_time_ms:
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitFloatMillis"
        minimum_bucket_processing_time_ms:
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitFloatMillis"
      required:
      - bucket_count
      - exponential_average_bucket_processing_time_per_hour_ms
      - job_id
      - total_bucket_processing_time_ms
    ml._types.Job:
      type: object
      properties:
        allow_lazy_open:
          description: |-
            Advanced configuration option.
            Specifies whether this job can open when there is insufficient machine learning node capacity for it to be immediately assigned to a node.
          type: boolean
        analysis_config:
          description: |-
            The analysis configuration, which specifies how to analyze the data.
            After you create a job, you cannot change the analysis configuration; all the properties are informational.
          allOf:
          - "$ref": "#/components/schemas/ml._types.AnalysisConfig"
        analysis_limits:
          description: |-
            Limits can be applied for the resources required to hold the mathematical models in memory.
            These limits are approximate and can be set per job.
            They do not control the memory used by other processes, for example the Elasticsearch Java processes.
          allOf:
          - "$ref": "#/components/schemas/ml._types.AnalysisLimits"
        background_persist_interval:
          description: |-
            Advanced configuration option.
            The time between each periodic persistence of the model.
            The default value is a randomized value between 3 to 4 hours, which avoids all jobs persisting at exactly the same time.
            The smallest allowed value is 1 hour.
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        blocked:
          allOf:
          - "$ref": "#/components/schemas/ml._types.JobBlocked"
        create_time:
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
        custom_settings:
          description: |-
            Advanced configuration option.
            Contains custom metadata about the job.
          allOf:
          - "$ref": "#/components/schemas/ml._types.CustomSettings"
        daily_model_snapshot_retention_after_days:
          description: |-
            Advanced configuration option, which affects the automatic removal of old model snapshots for this job.
            It specifies a period of time (in days) after which only the first snapshot per day is retained.
            This period is relative to the timestamp of the most recent snapshot for this job.
            Valid values range from 0 to `model_snapshot_retention_days`.
          default: 1
          type: number
        data_description:
          description: |-
            The data description defines the format of the input data when you send data to the job by using the post data API.
            Note that when configuring a datafeed, these properties are automatically set.
            When data is received via the post data API, it is not stored in Elasticsearch.
            Only the results for anomaly detection are retained.
          allOf:
          - "$ref": "#/components/schemas/ml._types.DataDescription"
        datafeed_config:
          description: |-
            The datafeed, which retrieves data from Elasticsearch for analysis by the job.
            You can associate only one datafeed with each anomaly detection job.
          allOf:
          - "$ref": "#/components/schemas/ml._types.Datafeed"
        deleting:
          description: |-
            Indicates that the process of deleting the job is in progress but not yet completed.
            It is only reported when `true`.
          type: boolean
        description:
          description: A description of the job.
          type: string
        finished_time:
          description: |-
            If the job closed or failed, this is the time the job finished, otherwise it is `null`.
            This property is informational; you cannot change its value.
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
        groups:
          description: |-
            A list of job groups.
            A job can belong to no groups or many.
          type: array
          items:
            type: string
        job_id:
          description: |-
            Identifier for the anomaly detection job.
            This identifier can contain lowercase alphanumeric characters (a-z and 0-9), hyphens, and underscores.
            It must start and end with alphanumeric characters.
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        job_type:
          description: Reserved for future use, currently set to `anomaly_detector`.
          type: string
        job_version:
          description: The machine learning configuration version number at which
            the the job was created.
          allOf:
          - "$ref": "#/components/schemas/_types.VersionString"
        model_plot_config:
          description: |-
            This advanced configuration option stores model information along with the results.
            It provides a more detailed view into anomaly detection.
            Model plot provides a simplified and indicative view of the model and its bounds.
          allOf:
          - "$ref": "#/components/schemas/ml._types.ModelPlotConfig"
        model_snapshot_id:
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        model_snapshot_retention_days:
          description: |-
            Advanced configuration option, which affects the automatic removal of old model snapshots for this job.
            It specifies the maximum period of time (in days) that snapshots are retained.
            This period is relative to the timestamp of the most recent snapshot for this job.
            By default, snapshots ten days older than the newest snapshot are deleted.
          type: number
        renormalization_window_days:
          description: |-
            Advanced configuration option.
            The period over which adjustments to the score are applied, as new data is seen.
            The default value is the longer of 30 days or 100 `bucket_spans`.
          type: number
        results_index_name:
          description: |-
            A text string that affects the name of the machine learning results index.
            The default value is `shared`, which generates an index named `.ml-anomalies-shared`.
          allOf:
          - "$ref": "#/components/schemas/_types.IndexName"
        results_retention_days:
          description: |-
            Advanced configuration option.
            The period of time (in days) that results are retained.
            Age is calculated relative to the timestamp of the latest bucket result.
            If this property has a non-null value, once per day at 00:30 (server time), results that are the specified number of days older than the latest bucket result are deleted from Elasticsearch.
            The default value is null, which means all results are retained.
            Annotations generated by the system also count as results for retention purposes; they are deleted after the same number of days as results.
            Annotations added by users are retained forever.
          type: number
      required:
      - allow_lazy_open
      - analysis_config
      - data_description
      - job_id
      - model_snapshot_retention_days
      - results_index_name
    ml._types.AnalysisLimits:
      type: object
      properties:
        categorization_examples_limit:
          description: 'The maximum number of examples stored per category in memory
            and in the results data store. If you increase this value, more examples
            are available, however it requires that you have more storage available.
            If you set this value to 0, no examples are stored. NOTE: The `categorization_examples_limit`
            applies only to analysis that uses categorization.'
          default: 4
          type: number
        model_memory_limit:
          description: The approximate maximum amount of memory resources that are
            required for analytical processing. Once this limit is approached, data
            pruning becomes more aggressive. Upon exceeding this limit, new entities
            are not modeled. If the `xpack.ml.max_model_memory_limit` setting has
            a value greater than 0 and less than 1024mb, that value is used instead
            of the default. The default value is relatively small to ensure that high
            resource usage is a conscious decision. If you have jobs that are expected
            to analyze high cardinality fields, you will likely need to use a higher
            value. If you specify a number instead of a string, the units are assumed
            to be MiB. Specifying a string is recommended for clarity. If you specify
            a byte size unit of `b` or `kb` and the number does not equate to a discrete
            number of megabytes, it is rounded down to the closest MiB. The minimum
            valid value is 1 MiB. If you specify a value less than 1 MiB, an error
            occurs. If you specify a value for the `xpack.ml.max_model_memory_limit`
            setting, an error occurs when you try to create jobs that have `model_memory_limit`
            values greater than that setting value.
          default: 1024mb
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
    ml._types.JobBlocked:
      type: object
      properties:
        reason:
          allOf:
          - "$ref": "#/components/schemas/ml._types.JobBlockedReason"
        task_id:
          allOf:
          - "$ref": "#/components/schemas/_types.TaskId"
      required:
      - reason
    ml._types.JobBlockedReason:
      type: string
      enum:
      - delete
      - reset
      - revert
    ml._types.CustomSettings:
      description: Custom metadata about the job
      type: object
    ml._types.DataDescription:
      type: object
      properties:
        format:
          description: Only JSON format is supported at this time.
          type: string
        time_field:
          description: The name of the field that contains the timestamp.
          default: time
          allOf:
          - "$ref": "#/components/schemas/_types.Field"
        time_format:
          description: 'The time format, which can be `epoch`, `epoch_ms`, or a custom
            pattern. The value `epoch` refers to UNIX or Epoch time (the number of
            seconds since 1 Jan 1970). The value `epoch_ms` indicates that time is
            measured in milliseconds since the epoch. The `epoch` and `epoch_ms` time
            formats accept either integer or real values. Custom patterns must conform
            to the Java DateTimeFormatter class. When you use date-time formatting
            patterns, it is recommended that you provide the full date, time and time
            zone. For example: `yyyy-MM-dd''T''HH:mm:ssX`. If the pattern that you
            specify is not sufficient to produce a complete timestamp, job creation
            fails.'
          default: epoch
          type: string
        field_delimiter:
          type: string
    ml._types.ModelPlotConfig:
      type: object
      properties:
        annotations_enabled:
          description: If true, enables calculation and storage of the model change
            annotations for each entity that is being analyzed.
          default: true
          x-state: Generally available; Added in 7.9.0
          type: boolean
        enabled:
          description: If true, enables calculation and storage of the model bounds
            for each entity that is being analyzed.
          default: false
          type: boolean
        terms:
          description: Limits data collection to this comma separated list of partition
            or by field values. If terms are not specified or it is an empty string,
            no filtering is applied. Wildcards are not supported. Only the specified
            terms can be viewed when using the Single Metric Viewer.
          x-state: Generally available; Added in 7.9.0
          allOf:
          - "$ref": "#/components/schemas/_types.Field"
    ml.get_memory_stats.Memory:
      type: object
      properties:
        attributes:
          type: object
          additionalProperties:
            type: string
        jvm:
          description: Contains Java Virtual Machine (JVM) statistics for the node.
          allOf:
          - "$ref": "#/components/schemas/ml.get_memory_stats.JvmStats"
        mem:
          description: Contains statistics about memory usage for the node.
          allOf:
          - "$ref": "#/components/schemas/ml.get_memory_stats.MemStats"
        name:
          description: Human-readable identifier for the node. Based on the Node name
            setting setting.
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        roles:
          description: Roles assigned to the node.
          type: array
          items:
            type: string
        transport_address:
          description: The host and port where transport HTTP connections are accepted.
          allOf:
          - "$ref": "#/components/schemas/_types.TransportAddress"
        ephemeral_id:
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
      required:
      - attributes
      - jvm
      - mem
      - name
      - roles
      - transport_address
      - ephemeral_id
    ml.get_memory_stats.JvmStats:
      type: object
      properties:
        heap_max:
          description: Maximum amount of memory available for use by the heap.
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        heap_max_in_bytes:
          description: Maximum amount of memory, in bytes, available for use by the
            heap.
          type: number
        java_inference:
          description: Amount of Java heap currently being used for caching inference
            models.
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        java_inference_in_bytes:
          description: Amount of Java heap, in bytes, currently being used for caching
            inference models.
          type: number
        java_inference_max:
          description: Maximum amount of Java heap to be used for caching inference
            models.
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        java_inference_max_in_bytes:
          description: Maximum amount of Java heap, in bytes, to be used for caching
            inference models.
          type: number
      required:
      - heap_max_in_bytes
      - java_inference_in_bytes
      - java_inference_max_in_bytes
    ml.get_memory_stats.MemStats:
      type: object
      properties:
        adjusted_total:
          description: |-
            If the amount of physical memory has been overridden using the es.total_memory_bytes system property
            then this reports the overridden value. Otherwise it reports the same value as total.
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        adjusted_total_in_bytes:
          description: |-
            If the amount of physical memory has been overridden using the `es.total_memory_bytes` system property
            then this reports the overridden value in bytes. Otherwise it reports the same value as `total_in_bytes`.
          type: number
        total:
          description: Total amount of physical memory.
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        total_in_bytes:
          description: Total amount of physical memory in bytes.
          type: number
        ml:
          description: Contains statistics about machine learning use of native memory
            on the node.
          allOf:
          - "$ref": "#/components/schemas/ml.get_memory_stats.MemMlStats"
      required:
      - adjusted_total_in_bytes
      - total_in_bytes
      - ml
    ml.get_memory_stats.MemMlStats:
      type: object
      properties:
        anomaly_detectors:
          description: Amount of native memory set aside for anomaly detection jobs.
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        anomaly_detectors_in_bytes:
          description: Amount of native memory, in bytes, set aside for anomaly detection
            jobs.
          type: number
        data_frame_analytics:
          description: Amount of native memory set aside for data frame analytics
            jobs.
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        data_frame_analytics_in_bytes:
          description: Amount of native memory, in bytes, set aside for data frame
            analytics jobs.
          type: number
        max:
          description: Maximum amount of native memory (separate to the JVM heap)
            that may be used by machine learning native processes.
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        max_in_bytes:
          description: Maximum amount of native memory (separate to the JVM heap),
            in bytes, that may be used by machine learning native processes.
          type: number
        native_code_overhead:
          description: Amount of native memory set aside for loading machine learning
            native code shared libraries.
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        native_code_overhead_in_bytes:
          description: Amount of native memory, in bytes, set aside for loading machine
            learning native code shared libraries.
          type: number
        native_inference:
          description: Amount of native memory set aside for trained models that have
            a PyTorch model_type.
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        native_inference_in_bytes:
          description: Amount of native memory, in bytes, set aside for trained models
            that have a PyTorch model_type.
          type: number
      required:
      - anomaly_detectors_in_bytes
      - data_frame_analytics_in_bytes
      - max_in_bytes
      - native_code_overhead_in_bytes
      - native_inference_in_bytes
    ml._types.ModelSnapshotUpgrade:
      type: object
      properties:
        job_id:
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        snapshot_id:
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        state:
          allOf:
          - "$ref": "#/components/schemas/ml._types.SnapshotUpgradeState"
        node:
          x-state: Generally available
          allOf:
          - "$ref": "#/components/schemas/ml._types.DiscoveryNode"
        assignment_explanation:
          type: string
      required:
      - job_id
      - snapshot_id
      - state
      - node
      - assignment_explanation
    ml._types.SnapshotUpgradeState:
      type: string
      enum:
      - loading_old_state
      - saving_new_state
      - stopped
      - failed
    ml._types.DiscoveryNode:
      type: object
      additionalProperties:
        "$ref": "#/components/schemas/ml._types.DiscoveryNodeContent"
      minProperties: 1
      maxProperties: 1
    ml._types.DiscoveryNodeContent:
      type: object
      properties:
        name:
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        ephemeral_id:
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        transport_address:
          allOf:
          - "$ref": "#/components/schemas/_types.TransportAddress"
        external_id:
          type: string
        attributes:
          type: object
          additionalProperties:
            type: string
        roles:
          type: array
          items:
            type: string
        version:
          allOf:
          - "$ref": "#/components/schemas/_types.VersionString"
        min_index_version:
          type: number
        max_index_version:
          type: number
      required:
      - ephemeral_id
      - transport_address
      - external_id
      - attributes
      - roles
      - version
      - min_index_version
      - max_index_version
    ml._types.ModelSnapshot:
      type: object
      properties:
        description:
          description: An optional description of the job.
          type: string
        job_id:
          description: A numerical character string that uniquely identifies the job
            that the snapshot was created for.
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        latest_record_time_stamp:
          description: The timestamp of the latest processed record.
          type: number
        latest_result_time_stamp:
          description: The timestamp of the latest bucket result.
          type: number
        min_version:
          description: The minimum version required to be able to restore the model
            snapshot.
          allOf:
          - "$ref": "#/components/schemas/_types.VersionString"
        model_size_stats:
          description: Summary information describing the model.
          allOf:
          - "$ref": "#/components/schemas/ml._types.ModelSizeStats"
        retain:
          description: If true, this snapshot will not be deleted during automatic
            cleanup of snapshots older than model_snapshot_retention_days. However,
            this snapshot will be deleted when the job is deleted. The default value
            is false.
          type: boolean
        snapshot_doc_count:
          description: For internal use only.
          type: number
        snapshot_id:
          description: A numerical character string that uniquely identifies the model
            snapshot.
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        timestamp:
          description: The creation timestamp for the snapshot.
          type: number
      required:
      - job_id
      - min_version
      - retain
      - snapshot_doc_count
      - snapshot_id
      - timestamp
    ml._types.OverallBucket:
      type: object
      properties:
        bucket_span:
          description: The length of the bucket in seconds. Matches the job with the
            longest bucket_span value.
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitSeconds"
        is_interim:
          description: If true, this is an interim result. In other words, the results
            are calculated based on partial input data.
          type: boolean
        jobs:
          description: An array of objects that contain the max_anomaly_score per
            job_id.
          type: array
          items:
            "$ref": "#/components/schemas/ml._types.OverallBucketJob"
        overall_score:
          description: The top_n average of the maximum bucket anomaly_score per job.
          type: number
        result_type:
          description: Internal. This is always set to overall_bucket.
          type: string
        timestamp:
          description: The start time of the bucket for which these results were calculated.
          allOf:
          - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
        timestamp_string:
          description: The start time of the bucket for which these results were calculated.
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
      required:
      - bucket_span
      - is_interim
      - jobs
      - overall_score
      - result_type
      - timestamp
    ml._types.OverallBucketJob:
      type: object
      properties:
        job_id:
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        max_anomaly_score:
          type: number
      required:
      - job_id
      - max_anomaly_score
    ml._types.Anomaly:
      type: object
      properties:
        actual:
          description: The actual value for the bucket.
          type: array
          items:
            type: number
        anomaly_score_explanation:
          description: Information about the factors impacting the initial anomaly
            score.
          allOf:
          - "$ref": "#/components/schemas/ml._types.AnomalyExplanation"
        bucket_span:
          description: The length of the bucket in seconds. This value matches the
            `bucket_span` that is specified in the job.
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitSeconds"
        by_field_name:
          description: The field used to split the data. In particular, this property
            is used for analyzing the splits with respect to their own history. It
            is used for finding unusual values in the context of the split.
          type: string
        by_field_value:
          description: The value of `by_field_name`.
          type: string
        causes:
          description: For population analysis, an over field must be specified in
            the detector. This property contains an array of anomaly records that
            are the causes for the anomaly that has been identified for the over field.
            This sub-resource contains the most anomalous records for the `over_field_name`.
            For scalability reasons, a maximum of the 10 most significant causes of
            the anomaly are returned. As part of the core analytical modeling, these
            low-level anomaly records are aggregated for their parent over field record.
            The `causes` resource contains similar elements to the record resource,
            namely `actual`, `typical`, `geo_results.actual_point`, `geo_results.typical_point`,
            `*_field_name` and `*_field_value`. Probability and scores are not applicable
            to causes.
          type: array
          items:
            "$ref": "#/components/schemas/ml._types.AnomalyCause"
        detector_index:
          description: A unique identifier for the detector.
          type: number
        field_name:
          description: Certain functions require a field to operate on, for example,
            `sum()`. For those functions, this value is the name of the field to be
            analyzed.
          type: string
        function:
          description: The function in which the anomaly occurs, as specified in the
            detector configuration. For example, `max`.
          type: string
        function_description:
          description: The description of the function in which the anomaly occurs,
            as specified in the detector configuration.
          type: string
        geo_results:
          description: If the detector function is `lat_long`, this object contains
            comma delimited strings for the latitude and longitude of the actual and
            typical values.
          allOf:
          - "$ref": "#/components/schemas/ml._types.GeoResults"
        influencers:
          description: If influencers were specified in the detector configuration,
            this array contains influencers that contributed to or were to blame for
            an anomaly.
          type: array
          items:
            "$ref": "#/components/schemas/ml._types.Influence"
        initial_record_score:
          description: A normalized score between 0-100, which is based on the probability
            of the anomalousness of this record. This is the initial value that was
            calculated at the time the bucket was processed.
          type: number
        is_interim:
          description: If true, this is an interim result. In other words, the results
            are calculated based on partial input data.
          type: boolean
        job_id:
          description: Identifier for the anomaly detection job.
          type: string
        over_field_name:
          description: The field used to split the data. In particular, this property
            is used for analyzing the splits with respect to the history of all splits.
            It is used for finding unusual values in the population of all splits.
          type: string
        over_field_value:
          description: The value of `over_field_name`.
          type: string
        partition_field_name:
          description: The field used to segment the analysis. When you use this property,
            you have completely independent baselines for each value of this field.
          type: string
        partition_field_value:
          description: The value of `partition_field_name`.
          type: string
        probability:
          description: The probability of the individual anomaly occurring, in the
            range 0 to 1. For example, `0.0000772031`. This value can be held to a
            high precision of over 300 decimal places, so the `record_score` is provided
            as a human-readable and friendly interpretation of this.
          type: number
        record_score:
          description: A normalized score between 0-100, which is based on the probability
            of the anomalousness of this record. Unlike `initial_record_score`, this
            value will be updated by a re-normalization process as new data is analyzed.
          type: number
        result_type:
          description: Internal. This is always set to `record`.
          type: string
        timestamp:
          description: The start time of the bucket for which these results were calculated.
          allOf:
          - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
        typical:
          description: The typical value for the bucket, according to analytical modeling.
          type: array
          items:
            type: number
      required:
      - bucket_span
      - detector_index
      - initial_record_score
      - is_interim
      - job_id
      - probability
      - record_score
      - result_type
      - timestamp
    ml._types.AnomalyExplanation:
      type: object
      properties:
        anomaly_characteristics_impact:
          description: Impact from the duration and magnitude of the detected anomaly
            relative to the historical average.
          type: number
        anomaly_length:
          description: Length of the detected anomaly in the number of buckets.
          type: number
        anomaly_type:
          description: 'Type of the detected anomaly: `spike` or `dip`.'
          type: string
        high_variance_penalty:
          description: Indicates reduction of anomaly score for the bucket with large
            confidence intervals. If a bucket has large confidence intervals, the
            score is reduced.
          type: boolean
        incomplete_bucket_penalty:
          description: If the bucket contains fewer samples than expected, the score
            is reduced.
          type: boolean
        lower_confidence_bound:
          description: Lower bound of the 95% confidence interval.
          type: number
        multi_bucket_impact:
          description: Impact of the deviation between actual and typical values in
            the past 12 buckets.
          type: number
        single_bucket_impact:
          description: Impact of the deviation between actual and typical values in
            the current bucket.
          type: number
        typical_value:
          description: Typical (expected) value for this bucket.
          type: number
        upper_confidence_bound:
          description: Upper bound of the 95% confidence interval.
          type: number
    ml._types.AnomalyCause:
      type: object
      properties:
        actual:
          type: array
          items:
            type: number
        by_field_name:
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        by_field_value:
          type: string
        correlated_by_field_value:
          type: string
        field_name:
          allOf:
          - "$ref": "#/components/schemas/_types.Field"
        function:
          type: string
        function_description:
          type: string
        geo_results:
          allOf:
          - "$ref": "#/components/schemas/ml._types.GeoResults"
        influencers:
          type: array
          items:
            "$ref": "#/components/schemas/ml._types.Influence"
        over_field_name:
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        over_field_value:
          type: string
        partition_field_name:
          type: string
        partition_field_value:
          type: string
        probability:
          type: number
        typical:
          type: array
          items:
            type: number
      required:
      - probability
    ml._types.GeoResults:
      type: object
      properties:
        actual_point:
          description: The actual value for the bucket formatted as a `geo_point`.
          type: string
        typical_point:
          description: The typical value for the bucket formatted as a `geo_point`.
          type: string
    ml._types.Influence:
      type: object
      properties:
        influencer_field_name:
          type: string
        influencer_field_values:
          type: array
          items:
            type: string
      required:
      - influencer_field_name
      - influencer_field_values
    ml._types.Include:
      type: string
      enum:
      - definition
      - feature_importance_baseline
      - hyperparameters
      - total_feature_importance
      - definition_status
    ml._types.TrainedModelConfig:
      type: object
      properties:
        model_id:
          description: Identifier for the trained model.
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        model_type:
          description: |+
            The model type

            Supported values include:
              - `tree_ensemble`: The model definition is an ensemble model of decision trees.
              - `lang_ident`: A special type reserved for language identification models.
              - `pytorch`: The stored definition is a PyTorch (specifically a TorchScript) model.
            Currently only NLP models are supported.

          allOf:
          - "$ref": "#/components/schemas/ml._types.TrainedModelType"
        tags:
          description: A comma delimited string of tags. A trained model can have
            many tags, or none.
          type: array
          items:
            type: string
        version:
          description: The Elasticsearch version number in which the trained model
            was created.
          allOf:
          - "$ref": "#/components/schemas/_types.VersionString"
        compressed_definition:
          type: string
        created_by:
          description: Information on the creator of the trained model.
          type: string
        create_time:
          description: The time when the trained model was created.
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
        default_field_map:
          description: Any field map described in the inference configuration takes
            precedence.
          type: object
          additionalProperties:
            type: string
        description:
          description: The free-text description of the trained model.
          type: string
        estimated_heap_memory_usage_bytes:
          description: The estimated heap usage in bytes to keep the trained model
            in memory.
          type: number
        estimated_operations:
          description: The estimated number of operations to use the trained model.
          type: number
        fully_defined:
          description: True if the full model definition is present.
          type: boolean
        inference_config:
          description: The default configuration for inference. This can be either
            a regression, classification, or one of the many NLP focused configurations.
            It must match the underlying definition.trained_model's target_type. For
            pre-packaged models such as ELSER the config is not required.
          allOf:
          - "$ref": "#/components/schemas/ml._types.InferenceConfigCreateContainer"
        input:
          description: The input field names for the model definition.
          allOf:
          - "$ref": "#/components/schemas/ml._types.TrainedModelConfigInput"
        license_level:
          description: The license level of the trained model.
          type: string
        metadata:
          description: An object containing metadata about the trained model. For
            example, models created by data frame analytics contain analysis_config
            and input objects.
          allOf:
          - "$ref": "#/components/schemas/ml._types.TrainedModelConfigMetadata"
        model_size_bytes:
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        model_package:
          allOf:
          - "$ref": "#/components/schemas/ml._types.ModelPackageConfig"
        location:
          allOf:
          - "$ref": "#/components/schemas/ml._types.TrainedModelLocation"
        platform_architecture:
          type: string
        prefix_strings:
          allOf:
          - "$ref": "#/components/schemas/ml._types.TrainedModelPrefixStrings"
      required:
      - model_id
      - tags
      - input
    ml._types.TrainedModelType:
      type: string
      enum:
      - tree_ensemble
      - lang_ident
      - pytorch
    ml._types.InferenceConfigCreateContainer:
      description: Inference configuration provided when storing the model config
      type: object
      properties:
        regression:
          description: Regression configuration for inference.
          allOf:
          - "$ref": "#/components/schemas/ml._types.RegressionInferenceOptions"
        classification:
          description: Classification configuration for inference.
          allOf:
          - "$ref": "#/components/schemas/ml._types.ClassificationInferenceOptions"
        text_classification:
          description: Text classification configuration for inference.
          x-state: Generally available; Added in 8.0.0
          allOf:
          - "$ref": "#/components/schemas/ml._types.TextClassificationInferenceOptions"
        zero_shot_classification:
          description: Zeroshot classification configuration for inference.
          x-state: Generally available; Added in 8.0.0
          allOf:
          - "$ref": "#/components/schemas/ml._types.ZeroShotClassificationInferenceOptions"
        fill_mask:
          description: Fill mask configuration for inference.
          x-state: Generally available; Added in 8.0.0
          allOf:
          - "$ref": "#/components/schemas/ml._types.FillMaskInferenceOptions"
        learning_to_rank:
          allOf:
          - "$ref": "#/components/schemas/ml._types.LearningToRankConfig"
        ner:
          description: Named entity recognition configuration for inference.
          x-state: Generally available; Added in 8.0.0
          allOf:
          - "$ref": "#/components/schemas/ml._types.NerInferenceOptions"
        pass_through:
          description: Pass through configuration for inference.
          x-state: Generally available; Added in 8.0.0
          allOf:
          - "$ref": "#/components/schemas/ml._types.PassThroughInferenceOptions"
        text_embedding:
          description: Text embedding configuration for inference.
          x-state: Generally available; Added in 8.0.0
          allOf:
          - "$ref": "#/components/schemas/ml._types.TextEmbeddingInferenceOptions"
        text_expansion:
          description: Text expansion configuration for inference.
          x-state: Generally available; Added in 8.8.0
          allOf:
          - "$ref": "#/components/schemas/ml._types.TextExpansionInferenceOptions"
        question_answering:
          description: Question answering configuration for inference.
          x-state: Generally available; Added in 8.3.0
          allOf:
          - "$ref": "#/components/schemas/ml._types.QuestionAnsweringInferenceOptions"
      minProperties: 1
      maxProperties: 1
    ml._types.TextClassificationInferenceOptions:
      description: Text classification configuration options
      type: object
      properties:
        num_top_classes:
          description: Specifies the number of top class predictions to return. Defaults
            to 0.
          type: number
        tokenization:
          description: The tokenization options
          allOf:
          - "$ref": "#/components/schemas/ml._types.TokenizationConfigContainer"
        results_field:
          description: The field that is added to incoming documents to contain the
            inference prediction. Defaults to predicted_value.
          type: string
        classification_labels:
          description: Classification labels to apply other than the stored labels.
            Must have the same deminsions as the default configured labels
          type: array
          items:
            type: string
        vocabulary:
          allOf:
          - "$ref": "#/components/schemas/ml._types.Vocabulary"
    ml._types.TokenizationConfigContainer:
      description: Tokenization options stored in inference configuration
      type: object
      properties:
        bert:
          description: Indicates BERT tokenization and its options
          allOf:
          - "$ref": "#/components/schemas/ml._types.NlpBertTokenizationConfig"
        bert_ja:
          description: Indicates BERT Japanese tokenization and its options
          allOf:
          - "$ref": "#/components/schemas/ml._types.NlpBertTokenizationConfig"
        mpnet:
          description: Indicates MPNET tokenization and its options
          x-state: Generally available; Added in 8.1.0
          allOf:
          - "$ref": "#/components/schemas/ml._types.NlpBertTokenizationConfig"
        roberta:
          description: Indicates RoBERTa tokenization and its options
          x-state: Generally available; Added in 8.2.0
          allOf:
          - "$ref": "#/components/schemas/ml._types.NlpRobertaTokenizationConfig"
        xlm_roberta:
          allOf:
          - "$ref": "#/components/schemas/ml._types.XlmRobertaTokenizationConfig"
      minProperties: 1
      maxProperties: 1
    ml._types.NlpBertTokenizationConfig:
      description: BERT and MPNet tokenization configuration options
      allOf:
      - "$ref": "#/components/schemas/ml._types.CommonTokenizationConfig"
      - type: object
    ml._types.CommonTokenizationConfig:
      type: object
      properties:
        do_lower_case:
          description: Should the tokenizer lower case the text
          default: false
          type: boolean
        max_sequence_length:
          description: Maximum input sequence length for the model
          default: 512
          type: number
        span:
          description: Tokenization spanning options. Special value of -1 indicates
            no spanning takes place
          default: -1
          type: number
        truncate:
          description: Should tokenization input be automatically truncated before
            sending to the model for inference
          default: first
          allOf:
          - "$ref": "#/components/schemas/ml._types.TokenizationTruncate"
        with_special_tokens:
          description: Is tokenization completed with special tokens
          default: true
          type: boolean
    ml._types.TokenizationTruncate:
      type: string
      enum:
      - first
      - second
      - none
    ml._types.NlpRobertaTokenizationConfig:
      description: RoBERTa tokenization configuration options
      allOf:
      - "$ref": "#/components/schemas/ml._types.CommonTokenizationConfig"
      - type: object
        properties:
          add_prefix_space:
            description: Should the tokenizer prefix input with a space character
            default: false
            type: boolean
    ml._types.XlmRobertaTokenizationConfig:
      allOf:
      - "$ref": "#/components/schemas/ml._types.CommonTokenizationConfig"
      - type: object
    ml._types.Vocabulary:
      type: object
      properties:
        index:
          allOf:
          - "$ref": "#/components/schemas/_types.IndexName"
      required:
      - index
    ml._types.ZeroShotClassificationInferenceOptions:
      description: Zero shot classification configuration options
      type: object
      properties:
        tokenization:
          description: The tokenization options to update when inferring
          allOf:
          - "$ref": "#/components/schemas/ml._types.TokenizationConfigContainer"
        hypothesis_template:
          description: Hypothesis template used when tokenizing labels for prediction
          default: '"This example is {}."'
          type: string
        classification_labels:
          description: |-
            The zero shot classification labels indicating entailment, neutral, and contradiction
            Must contain exactly and only entailment, neutral, and contradiction
          type: array
          items:
            type: string
        results_field:
          description: The field that is added to incoming documents to contain the
            inference prediction. Defaults to predicted_value.
          type: string
        multi_label:
          description: Indicates if more than one true label exists.
          default: false
          type: boolean
        labels:
          description: The labels to predict.
          type: array
          items:
            type: string
      required:
      - classification_labels
    ml._types.FillMaskInferenceOptions:
      description: Fill mask inference options
      type: object
      properties:
        mask_token:
          description: |-
            The string/token which will be removed from incoming documents and replaced with the inference prediction(s).
            In a response, this field contains the mask token for the specified model/tokenizer. Each model and tokenizer
            has a predefined mask token which cannot be changed. Thus, it is recommended not to set this value in requests.
            However, if this field is present in a request, its value must match the predefined value for that model/tokenizer,
            otherwise the request will fail.
          type: string
        num_top_classes:
          description: Specifies the number of top class predictions to return. Defaults
            to 0.
          type: number
        tokenization:
          description: The tokenization options to update when inferring
          allOf:
          - "$ref": "#/components/schemas/ml._types.TokenizationConfigContainer"
        results_field:
          description: The field that is added to incoming documents to contain the
            inference prediction. Defaults to predicted_value.
          type: string
        vocabulary:
          allOf:
          - "$ref": "#/components/schemas/ml._types.Vocabulary"
    ml._types.LearningToRankConfig:
      type: object
      properties:
        default_params:
          type: object
          additionalProperties:
            type: object
        feature_extractors:
          type: array
          items:
            type: object
            additionalProperties:
              "$ref": "#/components/schemas/ml._types.FeatureExtractor"
        num_top_feature_importance_values:
          type: number
      required:
      - num_top_feature_importance_values
    ml._types.FeatureExtractor:
      allOf:
      - "$ref": "#/components/schemas/ml._types.QueryFeatureExtractor"
    ml._types.QueryFeatureExtractor:
      type: object
      properties:
        default_score:
          type: number
        feature_name:
          type: string
        query:
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.QueryContainer"
      required:
      - feature_name
      - query
    ml._types.NerInferenceOptions:
      description: Named entity recognition options
      type: object
      properties:
        tokenization:
          description: The tokenization options
          allOf:
          - "$ref": "#/components/schemas/ml._types.TokenizationConfigContainer"
        results_field:
          description: The field that is added to incoming documents to contain the
            inference prediction. Defaults to predicted_value.
          type: string
        classification_labels:
          description: The token classification labels. Must be IOB formatted tags
          type: array
          items:
            type: string
        vocabulary:
          allOf:
          - "$ref": "#/components/schemas/ml._types.Vocabulary"
    ml._types.PassThroughInferenceOptions:
      description: Pass through configuration options
      type: object
      properties:
        tokenization:
          description: The tokenization options
          allOf:
          - "$ref": "#/components/schemas/ml._types.TokenizationConfigContainer"
        results_field:
          description: The field that is added to incoming documents to contain the
            inference prediction. Defaults to predicted_value.
          type: string
        vocabulary:
          allOf:
          - "$ref": "#/components/schemas/ml._types.Vocabulary"
    ml._types.TextEmbeddingInferenceOptions:
      description: Text embedding inference options
      type: object
      properties:
        embedding_size:
          description: The number of dimensions in the embedding output
          type: number
        tokenization:
          description: The tokenization options
          allOf:
          - "$ref": "#/components/schemas/ml._types.TokenizationConfigContainer"
        results_field:
          description: The field that is added to incoming documents to contain the
            inference prediction. Defaults to predicted_value.
          type: string
        vocabulary:
          allOf:
          - "$ref": "#/components/schemas/ml._types.Vocabulary"
    ml._types.TextExpansionInferenceOptions:
      description: Text expansion inference options
      type: object
      properties:
        tokenization:
          description: The tokenization options
          allOf:
          - "$ref": "#/components/schemas/ml._types.TokenizationConfigContainer"
        results_field:
          description: The field that is added to incoming documents to contain the
            inference prediction. Defaults to predicted_value.
          type: string
        vocabulary:
          allOf:
          - "$ref": "#/components/schemas/ml._types.Vocabulary"
    ml._types.QuestionAnsweringInferenceOptions:
      description: Question answering inference options
      type: object
      properties:
        num_top_classes:
          description: Specifies the number of top class predictions to return. Defaults
            to 0.
          type: number
        tokenization:
          description: The tokenization options to update when inferring
          allOf:
          - "$ref": "#/components/schemas/ml._types.TokenizationConfigContainer"
        results_field:
          description: The field that is added to incoming documents to contain the
            inference prediction. Defaults to predicted_value.
          type: string
        max_answer_length:
          description: The maximum answer length to consider
          type: number
    ml._types.TrainedModelConfigInput:
      type: object
      properties:
        field_names:
          description: An array of input field names for the model.
          type: array
          items:
            "$ref": "#/components/schemas/_types.Field"
      required:
      - field_names
    ml._types.TrainedModelConfigMetadata:
      type: object
      properties:
        model_aliases:
          type: array
          items:
            type: string
        feature_importance_baseline:
          description: An object that contains the baseline for feature importance
            values. For regression analysis, it is a single value. For classification
            analysis, there is a value for each class.
          type: object
          additionalProperties:
            type: string
        hyperparameters:
          description: List of the available hyperparameters optimized during the
            fine_parameter_tuning phase as well as specified by the user.
          type: array
          items:
            "$ref": "#/components/schemas/ml._types.Hyperparameter"
        total_feature_importance:
          description: An array of the total feature importance for each feature used
            from the training data set. This array of objects is returned if data
            frame analytics trained the model and the request includes total_feature_importance
            in the include request parameter.
          type: array
          items:
            "$ref": "#/components/schemas/ml._types.TotalFeatureImportance"
    ml._types.Hyperparameter:
      type: object
      properties:
        absolute_importance:
          description: A positive number showing how much the parameter influences
            the variation of the loss function. For hyperparameters with values that
            are not specified by the user but tuned during hyperparameter optimization.
          type: number
        name:
          description: Name of the hyperparameter.
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        relative_importance:
          description: A number between 0 and 1 showing the proportion of influence
            on the variation of the loss function among all tuned hyperparameters.
            For hyperparameters with values that are not specified by the user but
            tuned during hyperparameter optimization.
          type: number
        supplied:
          description: Indicates if the hyperparameter is specified by the user (true)
            or optimized (false).
          type: boolean
        value:
          description: The value of the hyperparameter, either optimized or specified
            by the user.
          type: number
      required:
      - name
      - supplied
      - value
    ml._types.TotalFeatureImportance:
      type: object
      properties:
        feature_name:
          description: The feature for which this importance was calculated.
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        importance:
          description: A collection of feature importance statistics related to the
            training data set for this particular feature.
          type: array
          items:
            "$ref": "#/components/schemas/ml._types.TotalFeatureImportanceStatistics"
        classes:
          description: If the trained model is a classification model, feature importance
            statistics are gathered per target class value.
          type: array
          items:
            "$ref": "#/components/schemas/ml._types.TotalFeatureImportanceClass"
      required:
      - feature_name
      - importance
      - classes
    ml._types.TotalFeatureImportanceStatistics:
      type: object
      properties:
        mean_magnitude:
          description: The average magnitude of this feature across all the training
            data. This value is the average of the absolute values of the importance
            for this feature.
          type: number
        max:
          description: The maximum importance value across all the training data for
            this feature.
          type: number
        min:
          description: The minimum importance value across all the training data for
            this feature.
          type: number
      required:
      - mean_magnitude
      - max
      - min
    ml._types.TotalFeatureImportanceClass:
      type: object
      properties:
        class_name:
          description: The target class value. Could be a string, boolean, or number.
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        importance:
          description: A collection of feature importance statistics related to the
            training data set for this particular feature.
          type: array
          items:
            "$ref": "#/components/schemas/ml._types.TotalFeatureImportanceStatistics"
      required:
      - class_name
      - importance
    ml._types.ModelPackageConfig:
      type: object
      properties:
        create_time:
          allOf:
          - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
        description:
          type: string
        inference_config:
          type: object
          additionalProperties:
            type: object
        metadata:
          allOf:
          - "$ref": "#/components/schemas/_types.Metadata"
        minimum_version:
          type: string
        model_repository:
          type: string
        model_type:
          type: string
        packaged_model_id:
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        platform_architecture:
          type: string
        prefix_strings:
          allOf:
          - "$ref": "#/components/schemas/ml._types.TrainedModelPrefixStrings"
        size:
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        sha256:
          type: string
        tags:
          type: array
          items:
            type: string
        vocabulary_file:
          type: string
      required:
      - packaged_model_id
    ml._types.TrainedModelPrefixStrings:
      type: object
      properties:
        ingest:
          description: String prepended to input at ingest
          type: string
        search:
          description: String prepended to input at search
          type: string
    ml._types.TrainedModelLocation:
      type: object
      properties:
        index:
          allOf:
          - "$ref": "#/components/schemas/ml._types.TrainedModelLocationIndex"
      required:
      - index
    ml._types.TrainedModelLocationIndex:
      type: object
      properties:
        name:
          allOf:
          - "$ref": "#/components/schemas/_types.IndexName"
      required:
      - name
    ml._types.TrainedModelStats:
      type: object
      properties:
        deployment_stats:
          description: A collection of deployment stats, which is present when the
            models are deployed.
          allOf:
          - "$ref": "#/components/schemas/ml._types.TrainedModelDeploymentStats"
        inference_stats:
          description: A collection of inference stats fields.
          allOf:
          - "$ref": "#/components/schemas/ml._types.TrainedModelInferenceStats"
        ingest:
          description: |-
            A collection of ingest stats for the model across all nodes.
            The values are summations of the individual node statistics.
            The format matches the ingest section in the nodes stats API.
          type: object
          additionalProperties:
            type: object
        model_id:
          description: The unique identifier of the trained model.
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        model_size_stats:
          description: A collection of model size stats.
          allOf:
          - "$ref": "#/components/schemas/ml._types.TrainedModelSizeStats"
        pipeline_count:
          description: The number of ingest pipelines that currently refer to the
            model.
          type: number
      required:
      - model_id
      - model_size_stats
      - pipeline_count
    ml._types.TrainedModelDeploymentStats:
      type: object
      properties:
        adaptive_allocations:
          allOf:
          - "$ref": "#/components/schemas/ml._types.AdaptiveAllocationsSettings"
        allocation_status:
          description: The detailed allocation status for the deployment.
          allOf:
          - "$ref": "#/components/schemas/ml._types.TrainedModelDeploymentAllocationStatus"
        cache_size:
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        deployment_id:
          description: The unique identifier for the trained model deployment.
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        error_count:
          description: The sum of `error_count` for all nodes in the deployment.
          type: number
        inference_count:
          description: The sum of `inference_count` for all nodes in the deployment.
          type: number
        model_id:
          description: The unique identifier for the trained model.
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        nodes:
          description: |-
            The deployment stats for each node that currently has the model allocated.
            In serverless, stats are reported for a single unnamed virtual node.
          type: array
          items:
            "$ref": "#/components/schemas/ml._types.TrainedModelDeploymentNodesStats"
        number_of_allocations:
          description: The number of allocations requested.
          type: number
        peak_throughput_per_minute:
          type: number
        priority:
          allOf:
          - "$ref": "#/components/schemas/ml._types.TrainingPriority"
        queue_capacity:
          description: The number of inference requests that can be queued before
            new requests are rejected.
          type: number
        rejected_execution_count:
          description: |-
            The sum of `rejected_execution_count` for all nodes in the deployment.
            Individual nodes reject an inference request if the inference queue is full.
            The queue size is controlled by the `queue_capacity` setting in the start
            trained model deployment API.
          type: number
        reason:
          description: |-
            The reason for the current deployment state. Usually only populated when
            the model is not deployed to a node.
          type: string
        start_time:
          description: The epoch timestamp when the deployment started.
          allOf:
          - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
        state:
          description: |+
            The overall state of the deployment.

            Supported values include:
              - `started`: The deployment is usable; at least one node has the model allocated.
              - `starting`: The deployment has recently started but is not yet usable; the model is not allocated on any nodes.
              - `stopping`: The deployment is preparing to stop and deallocate the model from the relevant nodes.
              - `failed`: The deployment is on a failed state and must be re-deployed.

          allOf:
          - "$ref": "#/components/schemas/ml._types.DeploymentAssignmentState"
        threads_per_allocation:
          description: The number of threads used be each allocation during inference.
          type: number
        timeout_count:
          description: The sum of `timeout_count` for all nodes in the deployment.
          type: number
      required:
      - deployment_id
      - model_id
      - nodes
      - peak_throughput_per_minute
      - priority
      - start_time
    ml._types.AdaptiveAllocationsSettings:
      type: object
      properties:
        enabled:
          description: If true, adaptive_allocations is enabled
          type: boolean
        min_number_of_allocations:
          description: |-
            Specifies the minimum number of allocations to scale to.
            If set, it must be greater than or equal to 0.
            If not defined, the deployment scales to 0.
          type: number
        max_number_of_allocations:
          description: |-
            Specifies the maximum number of allocations to scale to.
            If set, it must be greater than or equal to min_number_of_allocations.
          type: number
      required:
      - enabled
    ml._types.TrainedModelDeploymentAllocationStatus:
      type: object
      properties:
        allocation_count:
          description: The current number of nodes where the model is allocated.
          type: number
        state:
          description: |+
            The detailed allocation state related to the nodes.

            Supported values include:
              - `started`: The trained model is started on at least one node.
              - `starting`: Trained model deployment is starting but it is not yet deployed on any nodes.
              - `fully_allocated`: Trained model deployment has started on all valid nodes.

          allOf:
          - "$ref": "#/components/schemas/ml._types.DeploymentAllocationState"
        target_allocation_count:
          description: The desired number of nodes for model allocation.
          type: number
      required:
      - allocation_count
      - state
      - target_allocation_count
    ml._types.DeploymentAllocationState:
      type: string
      enum:
      - started
      - starting
      - fully_allocated
    ml._types.TrainedModelDeploymentNodesStats:
      type: object
      properties:
        average_inference_time_ms:
          description: The average time for each inference call to complete on this
            node.
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitFloatMillis"
        average_inference_time_ms_last_minute:
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitFloatMillis"
        average_inference_time_ms_excluding_cache_hits:
          description: The average time for each inference call to complete on this
            node, excluding cache
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitFloatMillis"
        error_count:
          description: The number of errors when evaluating the trained model.
          type: number
        inference_count:
          description: The total number of inference calls made against this node
            for this model.
          type: number
        inference_cache_hit_count:
          type: number
        inference_cache_hit_count_last_minute:
          type: number
        last_access:
          description: The epoch time stamp of the last inference call for the model
            on this node.
          allOf:
          - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
        node:
          description: Information pertaining to the node.
          x-state: Generally available
          allOf:
          - "$ref": "#/components/schemas/ml._types.DiscoveryNode"
        number_of_allocations:
          description: The number of allocations assigned to this node.
          type: number
        number_of_pending_requests:
          description: The number of inference requests queued to be processed.
          type: number
        peak_throughput_per_minute:
          type: number
        rejected_execution_count:
          description: The number of inference requests that were not processed because
            the queue was full.
          type: number
        routing_state:
          description: The current routing state and reason for the current routing
            state for this allocation.
          allOf:
          - "$ref": "#/components/schemas/ml._types.TrainedModelAssignmentRoutingStateAndReason"
        start_time:
          description: The epoch timestamp when the allocation started.
          allOf:
          - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
        threads_per_allocation:
          description: The number of threads used by each allocation during inference.
          type: number
        throughput_last_minute:
          type: number
        timeout_count:
          description: The number of inference requests that timed out before being
            processed.
          type: number
      required:
      - peak_throughput_per_minute
      - routing_state
      - throughput_last_minute
    ml._types.TrainedModelAssignmentRoutingStateAndReason:
      type: object
      properties:
        reason:
          description: |-
            The reason for the current state. It is usually populated only when the
            `routing_state` is `failed`.
          type: string
        routing_state:
          description: |+
            The current routing state.

            Supported values include:
              - `failed`: The allocation attempt failed.
              - `started`: The trained model is allocated and ready to accept inference requests.
              - `starting`: The trained model is attempting to allocate on this node; inference requests are not yet accepted.
              - `stopped`: The trained model is fully deallocated from this node.
              - `stopping`: The trained model is being deallocated from this node.

          allOf:
          - "$ref": "#/components/schemas/ml._types.RoutingState"
      required:
      - routing_state
    ml._types.RoutingState:
      type: string
      enum:
      - failed
      - started
      - starting
      - stopped
      - stopping
    ml._types.TrainingPriority:
      type: string
      enum:
      - normal
      - low
    ml._types.DeploymentAssignmentState:
      type: string
      enum:
      - started
      - starting
      - stopping
      - failed
    ml._types.TrainedModelInferenceStats:
      type: object
      properties:
        cache_miss_count:
          description: |-
            The number of times the model was loaded for inference and was not retrieved from the cache.
            If this number is close to the `inference_count`, the cache is not being appropriately used.
            This can be solved by increasing the cache size or its time-to-live (TTL).
            Refer to general machine learning settings for the appropriate settings.
          type: number
        failure_count:
          description: The number of failures when using the model for inference.
          type: number
        inference_count:
          description: |-
            The total number of times the model has been called for inference.
            This is across all inference contexts, including all pipelines.
          type: number
        missing_all_fields_count:
          description: The number of inference calls where all the training features
            for the model were missing.
          type: number
        timestamp:
          description: The time when the statistics were last updated.
          allOf:
          - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
      required:
      - cache_miss_count
      - failure_count
      - inference_count
      - missing_all_fields_count
      - timestamp
    ml._types.TrainedModelSizeStats:
      type: object
      properties:
        model_size_bytes:
          description: The size of the model in bytes.
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        required_native_memory_bytes:
          description: The amount of memory required to load the model in bytes.
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
      required:
      - model_size_bytes
      - required_native_memory_bytes
    ml._types.InferenceConfigUpdateContainer:
      type: object
      properties:
        regression:
          description: Regression configuration for inference.
          allOf:
          - "$ref": "#/components/schemas/ml._types.RegressionInferenceOptions"
        classification:
          description: Classification configuration for inference.
          allOf:
          - "$ref": "#/components/schemas/ml._types.ClassificationInferenceOptions"
        text_classification:
          description: Text classification configuration for inference.
          allOf:
          - "$ref": "#/components/schemas/ml._types.TextClassificationInferenceUpdateOptions"
        zero_shot_classification:
          description: Zeroshot classification configuration for inference.
          allOf:
          - "$ref": "#/components/schemas/ml._types.ZeroShotClassificationInferenceUpdateOptions"
        fill_mask:
          description: Fill mask configuration for inference.
          allOf:
          - "$ref": "#/components/schemas/ml._types.FillMaskInferenceUpdateOptions"
        ner:
          description: Named entity recognition configuration for inference.
          allOf:
          - "$ref": "#/components/schemas/ml._types.NerInferenceUpdateOptions"
        pass_through:
          description: Pass through configuration for inference.
          allOf:
          - "$ref": "#/components/schemas/ml._types.PassThroughInferenceUpdateOptions"
        text_embedding:
          description: Text embedding configuration for inference.
          allOf:
          - "$ref": "#/components/schemas/ml._types.TextEmbeddingInferenceUpdateOptions"
        text_expansion:
          description: Text expansion configuration for inference.
          allOf:
          - "$ref": "#/components/schemas/ml._types.TextExpansionInferenceUpdateOptions"
        question_answering:
          description: Question answering configuration for inference
          allOf:
          - "$ref": "#/components/schemas/ml._types.QuestionAnsweringInferenceUpdateOptions"
      minProperties: 1
      maxProperties: 1
    ml._types.TextClassificationInferenceUpdateOptions:
      type: object
      properties:
        num_top_classes:
          description: Specifies the number of top class predictions to return. Defaults
            to 0.
          type: number
        tokenization:
          description: The tokenization options to update when inferring
          allOf:
          - "$ref": "#/components/schemas/ml._types.NlpTokenizationUpdateOptions"
        results_field:
          description: The field that is added to incoming documents to contain the
            inference prediction. Defaults to predicted_value.
          type: string
        classification_labels:
          description: Classification labels to apply other than the stored labels.
            Must have the same deminsions as the default configured labels
          type: array
          items:
            type: string
    ml._types.NlpTokenizationUpdateOptions:
      type: object
      properties:
        truncate:
          description: Truncate options to apply
          allOf:
          - "$ref": "#/components/schemas/ml._types.TokenizationTruncate"
        span:
          description: Span options to apply
          type: number
    ml._types.ZeroShotClassificationInferenceUpdateOptions:
      type: object
      properties:
        tokenization:
          description: The tokenization options to update when inferring
          allOf:
          - "$ref": "#/components/schemas/ml._types.NlpTokenizationUpdateOptions"
        results_field:
          description: The field that is added to incoming documents to contain the
            inference prediction. Defaults to predicted_value.
          type: string
        multi_label:
          description: Update the configured multi label option. Indicates if more
            than one true label exists. Defaults to the configured value.
          type: boolean
        labels:
          description: The labels to predict.
          type: array
          items:
            type: string
      required:
      - labels
    ml._types.FillMaskInferenceUpdateOptions:
      type: object
      properties:
        num_top_classes:
          description: Specifies the number of top class predictions to return. Defaults
            to 0.
          type: number
        tokenization:
          description: The tokenization options to update when inferring
          allOf:
          - "$ref": "#/components/schemas/ml._types.NlpTokenizationUpdateOptions"
        results_field:
          description: The field that is added to incoming documents to contain the
            inference prediction. Defaults to predicted_value.
          type: string
    ml._types.NerInferenceUpdateOptions:
      type: object
      properties:
        tokenization:
          description: The tokenization options to update when inferring
          allOf:
          - "$ref": "#/components/schemas/ml._types.NlpTokenizationUpdateOptions"
        results_field:
          description: The field that is added to incoming documents to contain the
            inference prediction. Defaults to predicted_value.
          type: string
    ml._types.PassThroughInferenceUpdateOptions:
      type: object
      properties:
        tokenization:
          description: The tokenization options to update when inferring
          allOf:
          - "$ref": "#/components/schemas/ml._types.NlpTokenizationUpdateOptions"
        results_field:
          description: The field that is added to incoming documents to contain the
            inference prediction. Defaults to predicted_value.
          type: string
    ml._types.TextEmbeddingInferenceUpdateOptions:
      type: object
      properties:
        tokenization:
          allOf:
          - "$ref": "#/components/schemas/ml._types.NlpTokenizationUpdateOptions"
        results_field:
          description: The field that is added to incoming documents to contain the
            inference prediction. Defaults to predicted_value.
          type: string
    ml._types.TextExpansionInferenceUpdateOptions:
      type: object
      properties:
        tokenization:
          allOf:
          - "$ref": "#/components/schemas/ml._types.NlpTokenizationUpdateOptions"
        results_field:
          description: The field that is added to incoming documents to contain the
            inference prediction. Defaults to predicted_value.
          type: string
    ml._types.QuestionAnsweringInferenceUpdateOptions:
      type: object
      properties:
        question:
          description: The question to answer given the inference context
          type: string
        num_top_classes:
          description: Specifies the number of top class predictions to return. Defaults
            to 0.
          type: number
        tokenization:
          description: The tokenization options to update when inferring
          allOf:
          - "$ref": "#/components/schemas/ml._types.NlpTokenizationUpdateOptions"
        results_field:
          description: The field that is added to incoming documents to contain the
            inference prediction. Defaults to predicted_value.
          type: string
        max_answer_length:
          description: The maximum answer length to consider for extraction
          type: number
      required:
      - question
    ml._types.InferenceResponseResult:
      type: object
      properties:
        entities:
          description: If the model is trained for named entity recognition (NER)
            tasks, the response contains the recognized entities.
          type: array
          items:
            "$ref": "#/components/schemas/ml._types.TrainedModelEntities"
        is_truncated:
          description: |-
            Indicates whether the input text was truncated to meet the model's maximum sequence length limit. This property
            is present only when it is true.
          type: boolean
        predicted_value:
          description: |-
            If the model is trained for a text classification or zero shot classification task, the response is the
            predicted class.
            For named entity recognition (NER) tasks, it contains the annotated text output.
            For fill mask tasks, it contains the top prediction for replacing the mask token.
            For text embedding tasks, it contains the raw numerical text embedding values.
            For regression models, its a numerical value
            For classification models, it may be an integer, double, boolean or string depending on prediction type
          oneOf:
          - "$ref": "#/components/schemas/ml._types.PredictedValue"
          - type: array
            items:
              "$ref": "#/components/schemas/ml._types.PredictedValue"
        predicted_value_sequence:
          description: |-
            For fill mask tasks, the response contains the input text sequence with the mask token replaced by the predicted
            value.
            Additionally
          type: string
        prediction_probability:
          description: Specifies a probability for the predicted value.
          type: number
        prediction_score:
          description: Specifies a confidence score for the predicted value.
          type: number
        top_classes:
          description: |-
            For fill mask, text classification, and zero shot classification tasks, the response contains a list of top
            class entries.
          type: array
          items:
            "$ref": "#/components/schemas/ml._types.TopClassEntry"
        warning:
          description: If the request failed, the response contains the reason for
            the failure.
          type: string
        feature_importance:
          description: The feature importance for the inference results. Relevant
            only for classification or regression models
          type: array
          items:
            "$ref": "#/components/schemas/ml._types.TrainedModelInferenceFeatureImportance"
    ml._types.TrainedModelEntities:
      type: object
      properties:
        class_name:
          type: string
        class_probability:
          type: number
        entity:
          type: string
        start_pos:
          type: number
        end_pos:
          type: number
      required:
      - class_name
      - class_probability
      - entity
      - start_pos
      - end_pos
    ml._types.PredictedValue:
      oneOf:
      - "$ref": "#/components/schemas/_types.ScalarValue"
      - type: array
        items:
          "$ref": "#/components/schemas/_types.ScalarValue"
    ml._types.TopClassEntry:
      type: object
      properties:
        class_name:
          type: string
        class_probability:
          type: number
        class_score:
          type: number
      required:
      - class_name
      - class_probability
      - class_score
    ml._types.TrainedModelInferenceFeatureImportance:
      type: object
      properties:
        feature_name:
          type: string
        importance:
          type: number
        classes:
          type: array
          items:
            "$ref": "#/components/schemas/ml._types.TrainedModelInferenceClassImportance"
      required:
      - feature_name
    ml._types.TrainedModelInferenceClassImportance:
      type: object
      properties:
        class_name:
          type: string
        importance:
          type: number
      required:
      - class_name
      - importance
    ml.info.Defaults:
      type: object
      properties:
        anomaly_detectors:
          allOf:
          - "$ref": "#/components/schemas/ml.info.AnomalyDetectors"
        datafeeds:
          allOf:
          - "$ref": "#/components/schemas/ml.info.Datafeeds"
      required:
      - anomaly_detectors
      - datafeeds
    ml.info.AnomalyDetectors:
      type: object
      properties:
        categorization_analyzer:
          allOf:
          - "$ref": "#/components/schemas/ml._types.CategorizationAnalyzer"
        categorization_examples_limit:
          type: number
        model_memory_limit:
          type: string
        model_snapshot_retention_days:
          type: number
        daily_model_snapshot_retention_after_days:
          type: number
      required:
      - categorization_analyzer
      - categorization_examples_limit
      - model_memory_limit
      - model_snapshot_retention_days
      - daily_model_snapshot_retention_after_days
    ml.info.Datafeeds:
      type: object
      properties:
        scroll_size:
          type: number
      required:
      - scroll_size
    ml.info.Limits:
      type: object
      properties:
        max_single_ml_node_processors:
          type: number
        total_ml_processors:
          type: number
        max_model_memory_limit:
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        effective_max_model_memory_limit:
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        total_ml_memory:
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
      required:
      - total_ml_memory
    ml.info.NativeCode:
      type: object
      properties:
        build_hash:
          type: string
        version:
          allOf:
          - "$ref": "#/components/schemas/_types.VersionString"
      required:
      - build_hash
      - version
    ml.preview_data_frame_analytics.DataframePreviewConfig:
      type: object
      properties:
        source:
          allOf:
          - "$ref": "#/components/schemas/ml._types.DataframeAnalyticsSource"
        analysis:
          allOf:
          - "$ref": "#/components/schemas/ml._types.DataframeAnalysisContainer"
        model_memory_limit:
          type: string
        max_num_threads:
          type: number
        analyzed_fields:
          allOf:
          - "$ref": "#/components/schemas/ml._types.DataframeAnalysisAnalyzedFields"
      required:
      - source
      - analysis
    ml._types.DatafeedConfig:
      type: object
      properties:
        aggregations:
          description: If set, the datafeed performs aggregation searches. Support
            for aggregations is limited and should be used only with low cardinality
            data.
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/_types.aggregations.AggregationContainer"
        chunking_config:
          description: Datafeeds might be required to search over long time periods,
            for several months or years. This search is split into time chunks in
            order to ensure the load on Elasticsearch is managed. Chunking configuration
            controls how the size of these time chunks are calculated and is an advanced
            configuration option.
          allOf:
          - "$ref": "#/components/schemas/ml._types.ChunkingConfig"
        datafeed_id:
          description: A numerical character string that uniquely identifies the datafeed.
            This identifier can contain lowercase alphanumeric characters (a-z and
            0-9), hyphens, and underscores. It must start and end with alphanumeric
            characters. The default value is the job identifier.
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        delayed_data_check_config:
          description: Specifies whether the datafeed checks for missing data and
            the size of the window. The datafeed can optionally search over indices
            that have already been read in an effort to determine whether any data
            has subsequently been added to the index. If missing data is found, it
            is a good indication that the `query_delay` option is set too low and
            the data is being indexed after the datafeed has passed that moment in
            time. This check runs only on real-time datafeeds.
          allOf:
          - "$ref": "#/components/schemas/ml._types.DelayedDataCheckConfig"
        frequency:
          description: 'The interval at which scheduled queries are made while the
            datafeed runs in real time. The default value is either the bucket span
            for short bucket spans, or, for longer bucket spans, a sensible fraction
            of the bucket span. For example: `150s`. When `frequency` is shorter than
            the bucket span, interim results for the last (partial) bucket are written
            then eventually overwritten by the full bucket results. If the datafeed
            uses aggregations, this value must be divisible by the interval of the
            date histogram aggregation.'
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        indices:
          description: An array of index names. Wildcards are supported. If any indices
            are in remote clusters, the machine learning nodes must have the `remote_cluster_client`
            role.
          allOf:
          - "$ref": "#/components/schemas/_types.Indices"
        indices_options:
          description: Specifies index expansion options that are used during search.
          allOf:
          - "$ref": "#/components/schemas/_types.IndicesOptions"
        job_id:
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        max_empty_searches:
          description: If a real-time datafeed has never seen any data (including
            during any initial training period) then it will automatically stop itself
            and close its associated job after this many real-time searches that return
            no documents. In other words, it will stop after `frequency` times `max_empty_searches`
            of real-time operation. If not set then a datafeed with no end time that
            sees no data will remain started until it is explicitly stopped.
          type: number
        query:
          description: The Elasticsearch query domain-specific language (DSL). This
            value corresponds to the query object in an Elasticsearch search POST
            body. All the options that are supported by Elasticsearch can be used,
            as this object is passed verbatim to Elasticsearch.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.QueryContainer"
        query_delay:
          description: The number of seconds behind real time that data is queried.
            For example, if data from 10:04 a.m. might not be searchable in Elasticsearch
            until 10:06 a.m., set this property to 120 seconds. The default value
            is randomly selected between `60s` and `120s`. This randomness improves
            the query performance when there are multiple jobs running on the same
            node.
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        runtime_mappings:
          description: Specifies runtime fields for the datafeed search.
          allOf:
          - "$ref": "#/components/schemas/_types.mapping.RuntimeFields"
        script_fields:
          description: Specifies scripts that evaluate custom expressions and returns
            script fields to the datafeed. The detector configuration objects in a
            job can contain functions that use these script fields.
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/_types.ScriptField"
        scroll_size:
          description: The size parameter that is used in Elasticsearch searches when
            the datafeed does not use aggregations. The maximum value is the value
            of `index.max_result_window`, which is 10,000 by default.
          default: 1000
          type: number
    ml._types.JobConfig:
      type: object
      properties:
        allow_lazy_open:
          description: Advanced configuration option. Specifies whether this job can
            open when there is insufficient machine learning node capacity for it
            to be immediately assigned to a node.
          default: false
          type: boolean
        analysis_config:
          description: |-
            The analysis configuration, which specifies how to analyze the data.
            After you create a job, you cannot change the analysis configuration; all the properties are informational.
          allOf:
          - "$ref": "#/components/schemas/ml._types.AnalysisConfig"
        analysis_limits:
          description: |-
            Limits can be applied for the resources required to hold the mathematical models in memory.
            These limits are approximate and can be set per job.
            They do not control the memory used by other processes, for example the Elasticsearch Java processes.
          allOf:
          - "$ref": "#/components/schemas/ml._types.AnalysisLimits"
        background_persist_interval:
          description: |-
            Advanced configuration option.
            The time between each periodic persistence of the model.
            The default value is a randomized value between 3 to 4 hours, which avoids all jobs persisting at exactly the same time.
            The smallest allowed value is 1 hour.
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        custom_settings:
          description: |-
            Advanced configuration option.
            Contains custom metadata about the job.
          allOf:
          - "$ref": "#/components/schemas/ml._types.CustomSettings"
        daily_model_snapshot_retention_after_days:
          description: |-
            Advanced configuration option, which affects the automatic removal of old model snapshots for this job.
            It specifies a period of time (in days) after which only the first snapshot per day is retained.
            This period is relative to the timestamp of the most recent snapshot for this job.
          default: 1
          type: number
        data_description:
          description: |-
            The data description defines the format of the input data when you send data to the job by using the post data API.
            Note that when configure a datafeed, these properties are automatically set.
          allOf:
          - "$ref": "#/components/schemas/ml._types.DataDescription"
        datafeed_config:
          description: |-
            The datafeed, which retrieves data from Elasticsearch for analysis by the job.
            You can associate only one datafeed with each anomaly detection job.
          allOf:
          - "$ref": "#/components/schemas/ml._types.DatafeedConfig"
        description:
          description: A description of the job.
          type: string
        groups:
          description: A list of job groups. A job can belong to no groups or many.
          type: array
          items:
            type: string
        job_id:
          description: |-
            Identifier for the anomaly detection job.
            This identifier can contain lowercase alphanumeric characters (a-z and 0-9), hyphens, and underscores.
            It must start and end with alphanumeric characters.
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        model_plot_config:
          description: |-
            This advanced configuration option stores model information along with the results.
            It provides a more detailed view into anomaly detection.
            Model plot provides a simplified and indicative view of the model and its bounds.
          allOf:
          - "$ref": "#/components/schemas/ml._types.ModelPlotConfig"
        model_snapshot_retention_days:
          description: |-
            Advanced configuration option, which affects the automatic removal of old model snapshots for this job.
            It specifies the maximum period of time (in days) that snapshots are retained.
            This period is relative to the timestamp of the most recent snapshot for this job.
            The default value is `10`, which means snapshots ten days older than the newest snapshot are deleted.
          default: 10
          type: number
        renormalization_window_days:
          description: |-
            Advanced configuration option.
            The period over which adjustments to the score are applied, as new data is seen.
            The default value is the longer of 30 days or 100 `bucket_spans`.
          type: number
        results_index_name:
          description: |-
            A text string that affects the name of the machine learning results index.
            The default value is `shared`, which generates an index named `.ml-anomalies-shared`.
          default: shared
          allOf:
          - "$ref": "#/components/schemas/_types.IndexName"
        results_retention_days:
          description: |-
            Advanced configuration option.
            The period of time (in days) that results are retained.
            Age is calculated relative to the timestamp of the latest bucket result.
            If this property has a non-null value, once per day at 00:30 (server time), results that are the specified number of days older than the latest bucket result are deleted from Elasticsearch.
            The default value is null, which means all results are retained.
            Annotations generated by the system also count as results for retention purposes; they are deleted after the same number of days as results.
            Annotations added by users are retained forever.
          type: number
      required:
      - analysis_config
      - data_description
    _types.HttpHeaders:
      type: object
      additionalProperties:
        oneOf:
        - type: string
        - type: array
          items:
            type: string
    ml._types.AnalysisConfigRead:
      type: object
      properties:
        bucket_span:
          description: The size of the interval that the analysis is aggregated into,
            typically between `5m` and `1h`.
          default: 5m
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        categorization_analyzer:
          description: |-
            If `categorization_field_name` is specified, you can also define the analyzer that is used to interpret the categorization field.
            This property cannot be used at the same time as `categorization_filters`.
            The categorization analyzer specifies how the `categorization_field` is interpreted by the categorization process.
          allOf:
          - "$ref": "#/components/schemas/ml._types.CategorizationAnalyzer"
        categorization_field_name:
          description: |-
            If this property is specified, the values of the specified field will be categorized.
            The resulting categories must be used in a detector by setting `by_field_name`, `over_field_name`, or `partition_field_name` to the keyword `mlcategory`.
          allOf:
          - "$ref": "#/components/schemas/_types.Field"
        categorization_filters:
          description: |-
            If `categorization_field_name` is specified, you can also define optional filters.
            This property expects an array of regular expressions.
            The expressions are used to filter out matching sequences from the categorization field values.
          type: array
          items:
            type: string
        detectors:
          description: |-
            An array of detector configuration objects.
            Detector configuration objects specify which data fields a job analyzes.
            They also specify which analytical functions are used.
            You can specify multiple detectors for a job.
          type: array
          items:
            "$ref": "#/components/schemas/ml._types.DetectorRead"
        influencers:
          description: |-
            A comma separated list of influencer field names.
            Typically these can be the by, over, or partition fields that are used in the detector configuration.
            You might also want to use a field name that is not specifically named in a detector, but is available as part of the input data.
            When you use multiple detectors, the use of influencers is recommended as it aggregates results for each influencer entity.
          type: array
          items:
            "$ref": "#/components/schemas/_types.Field"
        model_prune_window:
          description: |-
            Advanced configuration option.
            Affects the pruning of models that have not been updated for the given time duration.
            The value must be set to a multiple of the `bucket_span`.
            If set too low, important information may be removed from the model.
            Typically, set to `30d` or longer.
            If not set, model pruning only occurs if the model memory status reaches the soft limit or the hard limit.
            For jobs created in 8.1 and later, the default value is the greater of `30d` or 20 times `bucket_span`.
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        latency:
          description: |-
            The size of the window in which to expect data that is out of time order.
            Defaults to no latency.
            If you specify a non-zero value, it must be greater than or equal to one second.
          default: '0'
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        multivariate_by_fields:
          description: |-
            This functionality is reserved for internal use.
            It is not supported for use in customer environments and is not subject to the support SLA of official GA features.
            If set to `true`, the analysis will automatically find correlations between metrics for a given by field value and report anomalies when those correlations cease to hold.
          type: boolean
        per_partition_categorization:
          description: Settings related to how categorization interacts with partition
            fields.
          allOf:
          - "$ref": "#/components/schemas/ml._types.PerPartitionCategorization"
        summary_count_field_name:
          description: |-
            If this property is specified, the data that is fed to the job is expected to be pre-summarized.
            This property value is the name of the field that contains the count of raw data points that have been summarized.
            The same `summary_count_field_name` applies to all detectors in the job.
          allOf:
          - "$ref": "#/components/schemas/_types.Field"
      required:
      - bucket_span
      - detectors
      - influencers
    ml._types.DetectorRead:
      type: object
      properties:
        by_field_name:
          description: |-
            The field used to split the data.
            In particular, this property is used for analyzing the splits with respect to their own history.
            It is used for finding unusual values in the context of the split.
          allOf:
          - "$ref": "#/components/schemas/_types.Field"
        custom_rules:
          description: |-
            An array of custom rule objects, which enable you to customize the way detectors operate.
            For example, a rule may dictate to the detector conditions under which results should be skipped.
            Kibana refers to custom rules as job rules.
          type: array
          items:
            "$ref": "#/components/schemas/ml._types.DetectionRule"
        detector_description:
          description: A description of the detector.
          type: string
        detector_index:
          description: |-
            A unique identifier for the detector.
            This identifier is based on the order of the detectors in the `analysis_config`, starting at zero.
          type: number
        exclude_frequent:
          description: |-
            Contains one of the following values: `all`, `none`, `by`, or `over`.
            If set, frequent entities are excluded from influencing the anomaly results.
            Entities can be considered frequent over time or frequent in a population.
            If you are working with both over and by fields, then you can set `exclude_frequent` to all for both fields, or to `by` or `over` for those specific fields.
          allOf:
          - "$ref": "#/components/schemas/ml._types.ExcludeFrequent"
        field_name:
          description: |-
            The field that the detector uses in the function.
            If you use an event rate function such as `count` or `rare`, do not specify this field.
          allOf:
          - "$ref": "#/components/schemas/_types.Field"
        function:
          description: |-
            The analysis function that is used.
            For example, `count`, `rare`, `mean`, `min`, `max`, and `sum`.
          type: string
        over_field_name:
          description: |-
            The field used to split the data.
            In particular, this property is used for analyzing the splits with respect to the history of all splits.
            It is used for finding unusual values in the population of all splits.
          allOf:
          - "$ref": "#/components/schemas/_types.Field"
        partition_field_name:
          description: |-
            The field used to segment the analysis.
            When you use this property, you have completely independent baselines for each value of this field.
          allOf:
          - "$ref": "#/components/schemas/_types.Field"
        use_null:
          description: Defines whether a new series is used as the null series when
            there is no value for the by or partition fields.
          default: false
          type: boolean
      required:
      - function
    ml.put_trained_model.Definition:
      type: object
      properties:
        preprocessors:
          description: Collection of preprocessors
          type: array
          items:
            "$ref": "#/components/schemas/ml.put_trained_model.Preprocessor"
        trained_model:
          description: The definition of the trained model.
          allOf:
          - "$ref": "#/components/schemas/ml.put_trained_model.TrainedModel"
      required:
      - trained_model
    ml.put_trained_model.Preprocessor:
      type: object
      properties:
        frequency_encoding:
          allOf:
          - "$ref": "#/components/schemas/ml.put_trained_model.FrequencyEncodingPreprocessor"
        one_hot_encoding:
          allOf:
          - "$ref": "#/components/schemas/ml.put_trained_model.OneHotEncodingPreprocessor"
        target_mean_encoding:
          allOf:
          - "$ref": "#/components/schemas/ml.put_trained_model.TargetMeanEncodingPreprocessor"
      minProperties: 1
      maxProperties: 1
    ml.put_trained_model.FrequencyEncodingPreprocessor:
      type: object
      properties:
        field:
          type: string
        feature_name:
          type: string
        frequency_map:
          type: object
          additionalProperties:
            type: number
      required:
      - field
      - feature_name
      - frequency_map
    ml.put_trained_model.OneHotEncodingPreprocessor:
      type: object
      properties:
        field:
          type: string
        hot_map:
          type: object
          additionalProperties:
            type: string
      required:
      - field
      - hot_map
    ml.put_trained_model.TargetMeanEncodingPreprocessor:
      type: object
      properties:
        field:
          type: string
        feature_name:
          type: string
        target_map:
          type: object
          additionalProperties:
            type: number
        default_value:
          type: number
      required:
      - field
      - feature_name
      - target_map
      - default_value
    ml.put_trained_model.TrainedModel:
      type: object
      properties:
        tree:
          description: The definition for a binary decision tree.
          allOf:
          - "$ref": "#/components/schemas/ml.put_trained_model.TrainedModelTree"
        tree_node:
          description: |-
            The definition of a node in a tree.
            There are two major types of nodes: leaf nodes and not-leaf nodes.
            - Leaf nodes only need node_index and leaf_value defined.
            - All other nodes need split_feature, left_child, right_child, threshold, decision_type, and default_left defined.
          allOf:
          - "$ref": "#/components/schemas/ml.put_trained_model.TrainedModelTreeNode"
        ensemble:
          description: The definition for an ensemble model
          allOf:
          - "$ref": "#/components/schemas/ml.put_trained_model.Ensemble"
    ml.put_trained_model.TrainedModelTree:
      type: object
      properties:
        classification_labels:
          type: array
          items:
            type: string
        feature_names:
          type: array
          items:
            type: string
        target_type:
          type: string
        tree_structure:
          type: array
          items:
            "$ref": "#/components/schemas/ml.put_trained_model.TrainedModelTreeNode"
      required:
      - feature_names
      - tree_structure
    ml.put_trained_model.TrainedModelTreeNode:
      type: object
      properties:
        decision_type:
          type: string
        default_left:
          type: boolean
        leaf_value:
          type: number
        left_child:
          type: number
        node_index:
          type: number
        right_child:
          type: number
        split_feature:
          type: number
        split_gain:
          type: number
        threshold:
          type: number
      required:
      - node_index
    ml.put_trained_model.Ensemble:
      type: object
      properties:
        aggregate_output:
          allOf:
          - "$ref": "#/components/schemas/ml.put_trained_model.AggregateOutput"
        classification_labels:
          type: array
          items:
            type: string
        feature_names:
          type: array
          items:
            type: string
        target_type:
          type: string
        trained_models:
          type: array
          items:
            "$ref": "#/components/schemas/ml.put_trained_model.TrainedModel"
      required:
      - trained_models
    ml.put_trained_model.AggregateOutput:
      type: object
      properties:
        logistic_regression:
          allOf:
          - "$ref": "#/components/schemas/ml.put_trained_model.Weights"
        weighted_sum:
          allOf:
          - "$ref": "#/components/schemas/ml.put_trained_model.Weights"
        weighted_mode:
          allOf:
          - "$ref": "#/components/schemas/ml.put_trained_model.Weights"
        exponent:
          allOf:
          - "$ref": "#/components/schemas/ml.put_trained_model.Weights"
    ml.put_trained_model.Weights:
      type: object
      properties:
        weights:
          type: number
      required:
      - weights
    ml.put_trained_model.Input:
      type: object
      properties:
        field_names:
          allOf:
          - "$ref": "#/components/schemas/_types.Names"
      required:
      - field_names
    ml._types.TrainedModelAssignment:
      type: object
      properties:
        adaptive_allocations:
          oneOf:
          - "$ref": "#/components/schemas/ml._types.AdaptiveAllocationsSettings"
          - nullable: true
            type: string
        assignment_state:
          description: |+
            The overall assignment state.

            Supported values include:
              - `started`: The deployment is usable; at least one node has the model allocated.
              - `starting`: The deployment has recently started but is not yet usable; the model is not allocated on any nodes.
              - `stopping`: The deployment is preparing to stop and deallocate the model from the relevant nodes.
              - `failed`: The deployment is on a failed state and must be re-deployed.

          allOf:
          - "$ref": "#/components/schemas/ml._types.DeploymentAssignmentState"
        max_assigned_allocations:
          type: number
        reason:
          type: string
        routing_table:
          description: The allocation state for each node.
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/ml._types.TrainedModelAssignmentRoutingTable"
        start_time:
          description: The timestamp when the deployment started.
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
        task_parameters:
          allOf:
          - "$ref": "#/components/schemas/ml._types.TrainedModelAssignmentTaskParameters"
      required:
      - assignment_state
      - routing_table
      - start_time
      - task_parameters
    ml._types.TrainedModelAssignmentRoutingTable:
      type: object
      properties:
        reason:
          description: |-
            The reason for the current state. It is usually populated only when the
            `routing_state` is `failed`.
          type: string
        routing_state:
          description: |+
            The current routing state.

            Supported values include:
              - `failed`: The allocation attempt failed.
              - `started`: The trained model is allocated and ready to accept inference requests.
              - `starting`: The trained model is attempting to allocate on this node; inference requests are not yet accepted.
              - `stopped`: The trained model is fully deallocated from this node.
              - `stopping`: The trained model is being deallocated from this node.

          allOf:
          - "$ref": "#/components/schemas/ml._types.RoutingState"
        current_allocations:
          description: Current number of allocations.
          type: number
        target_allocations:
          description: Target number of allocations.
          type: number
      required:
      - routing_state
      - current_allocations
      - target_allocations
    ml._types.TrainedModelAssignmentTaskParameters:
      type: object
      properties:
        model_bytes:
          description: The size of the trained model in bytes.
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        model_id:
          description: The unique identifier for the trained model.
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        deployment_id:
          description: The unique identifier for the trained model deployment.
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        cache_size:
          description: The size of the trained model cache.
          x-state: Generally available; Added in 8.4.0
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        number_of_allocations:
          description: The total number of allocations this model is assigned across
            ML nodes.
          type: number
        priority:
          allOf:
          - "$ref": "#/components/schemas/ml._types.TrainingPriority"
        per_deployment_memory_bytes:
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        per_allocation_memory_bytes:
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        queue_capacity:
          description: Number of inference requests are allowed in the queue at a
            time.
          type: number
        threads_per_allocation:
          description: Number of threads per allocation.
          type: number
      required:
      - model_bytes
      - model_id
      - deployment_id
      - number_of_allocations
      - priority
      - per_deployment_memory_bytes
      - per_allocation_memory_bytes
      - queue_capacity
      - threads_per_allocation
    ml._types.AnalysisMemoryLimit:
      type: object
      properties:
        model_memory_limit:
          description: Limits can be applied for the resources required to hold the
            mathematical models in memory. These limits are approximate and can be
            set per job. They do not control the memory used by other processes, for
            example the Elasticsearch Java processes.
          type: string
      required:
      - model_memory_limit
    ml._types.DetectorUpdate:
      type: object
      properties:
        detector_index:
          description: |-
            A unique identifier for the detector.
            This identifier is based on the order of the detectors in the `analysis_config`, starting at zero.
          type: number
        description:
          description: A description of the detector.
          type: string
        custom_rules:
          description: |-
            An array of custom rule objects, which enable you to customize the way detectors operate.
            For example, a rule may dictate to the detector conditions under which results should be skipped.
            Kibana refers to custom rules as job rules.
          type: array
          items:
            "$ref": "#/components/schemas/ml._types.DetectionRule"
      required:
      - detector_index
    _global.msearch.MultiSearchResult:
      type: object
      properties:
        took:
          type: number
        responses:
          type: array
          items:
            "$ref": "#/components/schemas/_global.msearch.ResponseItem"
      required:
      - took
      - responses
    _global.msearch_template.RequestItem:
      oneOf:
      - "$ref": "#/components/schemas/_global.msearch.MultisearchHeader"
      - "$ref": "#/components/schemas/_global.msearch_template.TemplateConfig"
    _global.msearch_template.TemplateConfig:
      type: object
      properties:
        explain:
          description: If `true`, returns detailed information about score calculation
            as part of each hit.
          default: false
          type: boolean
        id:
          description: |-
            The ID of the search template to use. If no `source` is specified,
            this parameter is required.
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        params:
          description: |-
            Key-value pairs used to replace Mustache variables in the template.
            The key is the variable name.
            The value is the variable value.
          type: object
          additionalProperties:
            type: object
        profile:
          description: If `true`, the query execution is profiled.
          default: false
          type: boolean
        source:
          description: |-
            An inline search template. Supports the same parameters as the search API's
            request body. It also supports Mustache variables. If no `id` is specified, this
            parameter is required.
          allOf:
          - "$ref": "#/components/schemas/_types.ScriptSource"
    _global.mtermvectors.Operation:
      type: object
      properties:
        _id:
          description: The ID of the document.
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        _index:
          description: The index of the document.
          allOf:
          - "$ref": "#/components/schemas/_types.IndexName"
        doc:
          description: An artificial document (a document not present in the index)
            for which you want to retrieve term vectors.
          type: object
        fields:
          description: |-
            Comma-separated list or wildcard expressions of fields to include in the statistics.
            Used as the default list unless a specific field list is provided in the `completion_fields` or `fielddata_fields` parameters.
          allOf:
          - "$ref": "#/components/schemas/_types.Fields"
        field_statistics:
          description: If `true`, the response includes the document count, sum of
            document frequencies, and sum of total term frequencies.
          default: true
          type: boolean
        filter:
          description: Filter terms based on their tf-idf scores.
          allOf:
          - "$ref": "#/components/schemas/_global.termvectors.Filter"
        offsets:
          description: If `true`, the response includes term offsets.
          default: true
          type: boolean
        payloads:
          description: If `true`, the response includes term payloads.
          default: true
          type: boolean
        positions:
          description: If `true`, the response includes term positions.
          default: true
          type: boolean
        routing:
          description: Custom value used to route operations to a specific shard.
          allOf:
          - "$ref": "#/components/schemas/_types.Routing"
        term_statistics:
          description: If true, the response includes term frequency and document
            frequency.
          default: false
          type: boolean
        version:
          description: If `true`, returns the document version as part of a hit.
          allOf:
          - "$ref": "#/components/schemas/_types.VersionNumber"
        version_type:
          description: |+
            Specific version type.

            Supported values include:
              - `internal`: Use internal versioning that starts at 1 and increments with each update or delete.
              - `external`: Only index the document if the specified version is strictly higher than the version of the stored document or if there is no existing document.
              - `external_gte`: Only index the document if the specified version is equal or higher than the version of the stored document or if there is no existing document.
            NOTE: The `external_gte` version type is meant for special use cases and should be used with care.
            If used incorrectly, it can result in loss of data.

          allOf:
          - "$ref": "#/components/schemas/_types.VersionType"
    _global.termvectors.Filter:
      type: object
      properties:
        max_doc_freq:
          description: |-
            Ignore words which occur in more than this many docs.
            Defaults to unbounded.
          type: number
        max_num_terms:
          description: The maximum number of terms that must be returned per field.
          default: 25
          type: number
        max_term_freq:
          description: |-
            Ignore words with more than this frequency in the source doc.
            It defaults to unbounded.
          type: number
        max_word_length:
          description: |-
            The maximum word length above which words will be ignored.
            Defaults to unbounded.
          default: 0
          type: number
        min_doc_freq:
          description: Ignore terms which do not occur in at least this many docs.
          default: 1
          type: number
        min_term_freq:
          description: Ignore words with less than this frequency in the source doc.
          default: 1
          type: number
        min_word_length:
          description: The minimum word length below which words will be ignored.
          default: 0
          type: number
    _global.mtermvectors.TermVectorsResult:
      type: object
      properties:
        _id:
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        _index:
          allOf:
          - "$ref": "#/components/schemas/_types.IndexName"
        _version:
          allOf:
          - "$ref": "#/components/schemas/_types.VersionNumber"
        took:
          type: number
        found:
          type: boolean
        term_vectors:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/_global.termvectors.TermVector"
        error:
          allOf:
          - "$ref": "#/components/schemas/_types.ErrorCause"
      required:
      - _index
    _global.termvectors.TermVector:
      type: object
      properties:
        field_statistics:
          allOf:
          - "$ref": "#/components/schemas/_global.termvectors.FieldStatistics"
        terms:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/_global.termvectors.Term"
      required:
      - terms
    _global.termvectors.FieldStatistics:
      type: object
      properties:
        doc_count:
          type: number
        sum_doc_freq:
          type: number
        sum_ttf:
          type: number
      required:
      - doc_count
      - sum_doc_freq
      - sum_ttf
    _global.termvectors.Term:
      type: object
      properties:
        doc_freq:
          type: number
        score:
          type: number
        term_freq:
          type: number
        tokens:
          type: array
          items:
            "$ref": "#/components/schemas/_global.termvectors.Token"
        ttf:
          type: number
      required:
      - term_freq
    _global.termvectors.Token:
      type: object
      properties:
        end_offset:
          type: number
        payload:
          type: string
        position:
          type: number
        start_offset:
          type: number
      required:
      - position
    nodes.clear_repositories_metering_archive.ResponseBase:
      allOf:
      - "$ref": "#/components/schemas/nodes._types.NodesResponseBase"
      - type: object
        properties:
          cluster_name:
            externalDocs:
              url: https://www.elastic.co/docs/deploy-manage/deploy/self-managed/important-settings-configuration##_cluster_name_setting
            description: Name of the cluster. Based on the `cluster.name` setting.
            allOf:
            - "$ref": "#/components/schemas/_types.Name"
          nodes:
            description: Contains repositories metering information for the nodes
              selected by the request.
            type: object
            additionalProperties:
              "$ref": "#/components/schemas/nodes._types.RepositoryMeteringInformation"
        required:
        - cluster_name
        - nodes
    nodes._types.RepositoryMeteringInformation:
      type: object
      properties:
        repository_name:
          description: Repository name.
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        repository_type:
          description: Repository type.
          type: string
        repository_location:
          description: Represents an unique location within the repository.
          allOf:
          - "$ref": "#/components/schemas/nodes._types.RepositoryLocation"
        repository_ephemeral_id:
          description: An identifier that changes every time the repository is updated.
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        repository_started_at:
          description: Time the repository was created or updated. Recorded in milliseconds
            since the Unix Epoch.
          allOf:
          - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
        repository_stopped_at:
          description: Time the repository was deleted or updated. Recorded in milliseconds
            since the Unix Epoch.
          allOf:
          - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
        archived:
          description: |-
            A flag that tells whether or not this object has been archived. When a repository is closed or updated the
            repository metering information is archived and kept for a certain period of time. This allows retrieving the
            repository metering information of previous repository instantiations.
          type: boolean
        cluster_version:
          description: |-
            The cluster state version when this object was archived, this field can be used as a logical timestamp to delete
            all the archived metrics up to an observed version. This field is only present for archived repository metering
            information objects. The main purpose of this field is to avoid possible race conditions during repository metering
            information deletions, i.e. deleting archived repositories metering information that we haven’t observed yet.
          allOf:
          - "$ref": "#/components/schemas/_types.VersionNumber"
        request_counts:
          description: An object with the number of request performed against the
            repository grouped by request type.
          allOf:
          - "$ref": "#/components/schemas/nodes._types.RequestCounts"
      required:
      - repository_name
      - repository_type
      - repository_location
      - repository_ephemeral_id
      - repository_started_at
      - archived
      - request_counts
    nodes._types.RepositoryLocation:
      type: object
      properties:
        base_path:
          type: string
        container:
          description: Container name (Azure)
          type: string
        bucket:
          description: Bucket name (GCP, S3)
          type: string
      required:
      - base_path
    nodes._types.RequestCounts:
      type: object
      properties:
        GetBlobProperties:
          description: Number of Get Blob Properties requests (Azure)
          type: number
        GetBlob:
          description: Number of Get Blob requests (Azure)
          type: number
        ListBlobs:
          description: Number of List Blobs requests (Azure)
          type: number
        PutBlob:
          description: Number of Put Blob requests (Azure)
          type: number
        PutBlock:
          description: Number of Put Block (Azure)
          type: number
        PutBlockList:
          description: Number of Put Block List requests
          type: number
        GetObject:
          description: Number of get object requests (GCP, S3)
          type: number
        ListObjects:
          description: Number of list objects requests (GCP, S3)
          type: number
        InsertObject:
          description: |-
            Number of insert object requests, including simple, multipart and resumable uploads. Resumable uploads
            can perform multiple http requests to insert a single object but they are considered as a single request
            since they are billed as an individual operation. (GCP)
          type: number
        PutObject:
          description: Number of PutObject requests (S3)
          type: number
        PutMultipartObject:
          description: Number of Multipart requests, including CreateMultipartUpload,
            UploadPart and CompleteMultipartUpload requests (S3)
          type: number
    nodes.get_repositories_metering_info.ResponseBase:
      allOf:
      - "$ref": "#/components/schemas/nodes._types.NodesResponseBase"
      - type: object
        properties:
          cluster_name:
            description: Name of the cluster. Based on the `cluster.name` setting.
            allOf:
            - "$ref": "#/components/schemas/_types.Name"
          nodes:
            description: Contains repositories metering information for the nodes
              selected by the request.
            type: object
            additionalProperties:
              "$ref": "#/components/schemas/nodes._types.RepositoryMeteringInformation"
        required:
        - cluster_name
        - nodes
    _types.ThreadType:
      type: string
      enum:
      - cpu
      - wait
      - block
      - gpu
      - mem
    nodes.info.NodesInfoMetrics:
      oneOf:
      - "$ref": "#/components/schemas/nodes.info.NodesInfoMetric"
      - type: array
        items:
          "$ref": "#/components/schemas/nodes.info.NodesInfoMetric"
    nodes.info.NodesInfoMetric:
      type: string
      enum:
      - _all
      - _none
      - settings
      - os
      - process
      - jvm
      - thread_pool
      - transport
      - http
      - remote_cluster_server
      - plugins
      - ingest
      - aggregations
      - indices
    nodes.info.ResponseBase:
      allOf:
      - "$ref": "#/components/schemas/nodes._types.NodesResponseBase"
      - type: object
        properties:
          cluster_name:
            allOf:
            - "$ref": "#/components/schemas/_types.Name"
          nodes:
            type: object
            additionalProperties:
              "$ref": "#/components/schemas/nodes.info.NodeInfo"
        required:
        - cluster_name
        - nodes
    nodes.info.NodeInfo:
      type: object
      properties:
        attributes:
          type: object
          additionalProperties:
            type: string
        build_flavor:
          type: string
        build_hash:
          description: Short hash of the last git commit in this release.
          type: string
        build_type:
          type: string
        component_versions:
          type: object
          additionalProperties:
            type: number
        host:
          description: The node’s host name.
          allOf:
          - "$ref": "#/components/schemas/_types.Host"
        http:
          allOf:
          - "$ref": "#/components/schemas/nodes.info.NodeInfoHttp"
        index_version:
          allOf:
          - "$ref": "#/components/schemas/_types.VersionNumber"
        ip:
          description: The node’s IP address.
          allOf:
          - "$ref": "#/components/schemas/_types.Ip"
        jvm:
          allOf:
          - "$ref": "#/components/schemas/nodes.info.NodeJvmInfo"
        name:
          description: The node's name
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        os:
          allOf:
          - "$ref": "#/components/schemas/nodes.info.NodeOperatingSystemInfo"
        plugins:
          type: array
          items:
            "$ref": "#/components/schemas/_types.PluginStats"
        process:
          allOf:
          - "$ref": "#/components/schemas/nodes.info.NodeProcessInfo"
        roles:
          allOf:
          - "$ref": "#/components/schemas/_types.NodeRoles"
        settings:
          allOf:
          - "$ref": "#/components/schemas/nodes.info.NodeInfoSettings"
        thread_pool:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/nodes.info.NodeThreadPoolInfo"
        total_indexing_buffer:
          description: Total heap allowed to be used to hold recently indexed documents
            before they must be written to disk. This size is a shared pool across
            all shards on this node, and is controlled by Indexing Buffer settings.
          type: number
        total_indexing_buffer_in_bytes:
          description: Same as total_indexing_buffer, but expressed in bytes.
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        transport:
          allOf:
          - "$ref": "#/components/schemas/nodes.info.NodeInfoTransport"
        transport_address:
          description: Host and port where transport HTTP connections are accepted.
          allOf:
          - "$ref": "#/components/schemas/_types.TransportAddress"
        transport_version:
          allOf:
          - "$ref": "#/components/schemas/_types.VersionNumber"
        version:
          description: Elasticsearch version running on this node.
          allOf:
          - "$ref": "#/components/schemas/_types.VersionString"
        modules:
          type: array
          items:
            "$ref": "#/components/schemas/_types.PluginStats"
        ingest:
          allOf:
          - "$ref": "#/components/schemas/nodes.info.NodeInfoIngest"
        aggregations:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/nodes.info.NodeInfoAggregation"
        remote_cluster_server:
          allOf:
          - "$ref": "#/components/schemas/nodes.info.RemoveClusterServer"
      required:
      - attributes
      - build_flavor
      - build_hash
      - build_type
      - component_versions
      - host
      - index_version
      - ip
      - name
      - roles
      - transport_address
      - transport_version
      - version
    nodes.info.NodeInfoHttp:
      type: object
      properties:
        bound_address:
          type: array
          items:
            type: string
        max_content_length:
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        max_content_length_in_bytes:
          type: number
        publish_address:
          type: string
      required:
      - bound_address
      - max_content_length_in_bytes
      - publish_address
    nodes.info.NodeJvmInfo:
      type: object
      properties:
        gc_collectors:
          type: array
          items:
            type: string
        mem:
          allOf:
          - "$ref": "#/components/schemas/nodes.info.NodeInfoJvmMemory"
        memory_pools:
          type: array
          items:
            type: string
        pid:
          type: number
        start_time_in_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
        version:
          allOf:
          - "$ref": "#/components/schemas/_types.VersionString"
        vm_name:
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        vm_vendor:
          type: string
        vm_version:
          allOf:
          - "$ref": "#/components/schemas/_types.VersionString"
        using_bundled_jdk:
          type: boolean
        using_compressed_ordinary_object_pointers:
          oneOf:
          - type: boolean
          - type: string
        input_arguments:
          type: array
          items:
            type: string
      required:
      - gc_collectors
      - mem
      - memory_pools
      - pid
      - start_time_in_millis
      - version
      - vm_name
      - vm_vendor
      - vm_version
      - using_bundled_jdk
      - input_arguments
    nodes.info.NodeInfoJvmMemory:
      type: object
      properties:
        direct_max:
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        direct_max_in_bytes:
          type: number
        heap_init:
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        heap_init_in_bytes:
          type: number
        heap_max:
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        heap_max_in_bytes:
          type: number
        non_heap_init:
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        non_heap_init_in_bytes:
          type: number
        non_heap_max:
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        non_heap_max_in_bytes:
          type: number
      required:
      - direct_max_in_bytes
      - heap_init_in_bytes
      - heap_max_in_bytes
      - non_heap_init_in_bytes
      - non_heap_max_in_bytes
    nodes.info.NodeOperatingSystemInfo:
      type: object
      properties:
        arch:
          description: 'Name of the JVM architecture (ex: amd64, x86)'
          type: string
        available_processors:
          description: Number of processors available to the Java virtual machine
          type: number
        allocated_processors:
          description: The number of processors actually used to calculate thread
            pool size. This number can be set with the node.processors setting of
            a node and defaults to the number of processors reported by the OS.
          type: number
        name:
          description: 'Name of the operating system (ex: Linux, Windows, Mac OS X)'
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        pretty_name:
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        refresh_interval_in_millis:
          description: Refresh interval for the OS statistics
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
        version:
          description: Version of the operating system
          allOf:
          - "$ref": "#/components/schemas/_types.VersionString"
        cpu:
          allOf:
          - "$ref": "#/components/schemas/nodes.info.NodeInfoOSCPU"
        mem:
          allOf:
          - "$ref": "#/components/schemas/nodes.info.NodeInfoMemory"
        swap:
          allOf:
          - "$ref": "#/components/schemas/nodes.info.NodeInfoMemory"
      required:
      - arch
      - available_processors
      - name
      - pretty_name
      - refresh_interval_in_millis
      - version
    nodes.info.NodeInfoOSCPU:
      type: object
      properties:
        cache_size:
          type: string
        cache_size_in_bytes:
          type: number
        cores_per_socket:
          type: number
        mhz:
          type: number
        model:
          type: string
        total_cores:
          type: number
        total_sockets:
          type: number
        vendor:
          type: string
      required:
      - cache_size
      - cache_size_in_bytes
      - cores_per_socket
      - mhz
      - model
      - total_cores
      - total_sockets
      - vendor
    nodes.info.NodeInfoMemory:
      type: object
      properties:
        total:
          type: string
        total_in_bytes:
          type: number
      required:
      - total
      - total_in_bytes
    nodes.info.NodeProcessInfo:
      type: object
      properties:
        id:
          description: Process identifier (PID)
          type: number
        mlockall:
          description: Indicates if the process address space has been successfully
            locked in memory
          type: boolean
        refresh_interval_in_millis:
          description: Refresh interval for the process statistics
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
      required:
      - id
      - mlockall
      - refresh_interval_in_millis
    nodes.info.NodeInfoSettings:
      type: object
      properties:
        cluster:
          allOf:
          - "$ref": "#/components/schemas/nodes.info.NodeInfoSettingsCluster"
        node:
          allOf:
          - "$ref": "#/components/schemas/nodes.info.NodeInfoSettingsNode"
        path:
          allOf:
          - "$ref": "#/components/schemas/nodes.info.NodeInfoPath"
        repositories:
          allOf:
          - "$ref": "#/components/schemas/nodes.info.NodeInfoRepositories"
        discovery:
          allOf:
          - "$ref": "#/components/schemas/nodes.info.NodeInfoDiscover"
        action:
          allOf:
          - "$ref": "#/components/schemas/nodes.info.NodeInfoAction"
        client:
          allOf:
          - "$ref": "#/components/schemas/nodes.info.NodeInfoClient"
        http:
          allOf:
          - "$ref": "#/components/schemas/nodes.info.NodeInfoSettingsHttp"
        bootstrap:
          allOf:
          - "$ref": "#/components/schemas/nodes.info.NodeInfoBootstrap"
        transport:
          allOf:
          - "$ref": "#/components/schemas/nodes.info.NodeInfoSettingsTransport"
        network:
          allOf:
          - "$ref": "#/components/schemas/nodes.info.NodeInfoSettingsNetwork"
        xpack:
          allOf:
          - "$ref": "#/components/schemas/nodes.info.NodeInfoXpack"
        script:
          allOf:
          - "$ref": "#/components/schemas/nodes.info.NodeInfoScript"
        search:
          allOf:
          - "$ref": "#/components/schemas/nodes.info.NodeInfoSearch"
        ingest:
          allOf:
          - "$ref": "#/components/schemas/nodes.info.NodeInfoSettingsIngest"
      required:
      - cluster
      - node
      - http
      - transport
    nodes.info.NodeInfoSettingsCluster:
      type: object
      properties:
        name:
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        routing:
          allOf:
          - "$ref": "#/components/schemas/indices._types.IndexRouting"
        election:
          allOf:
          - "$ref": "#/components/schemas/nodes.info.NodeInfoSettingsClusterElection"
        initial_master_nodes:
          oneOf:
          - type: array
            items:
              type: string
          - type: string
        deprecation_indexing:
          x-state: Generally available; Added in 7.16.0
          allOf:
          - "$ref": "#/components/schemas/nodes.info.DeprecationIndexing"
      required:
      - name
      - election
    nodes.info.NodeInfoSettingsClusterElection:
      type: object
      properties:
        strategy:
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
      required:
      - strategy
    nodes.info.DeprecationIndexing:
      type: object
      properties:
        enabled:
          oneOf:
          - type: boolean
          - type: string
      required:
      - enabled
    nodes.info.NodeInfoSettingsNode:
      type: object
      properties:
        name:
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        attr:
          type: object
          additionalProperties:
            type: object
        max_local_storage_nodes:
          type: string
      required:
      - name
      - attr
    nodes.info.NodeInfoPath:
      type: object
      properties:
        logs:
          type: string
        home:
          type: string
        repo:
          type: array
          items:
            type: string
        data:
          oneOf:
          - type: string
          - type: array
            items:
              type: string
    nodes.info.NodeInfoRepositories:
      type: object
      properties:
        url:
          allOf:
          - "$ref": "#/components/schemas/nodes.info.NodeInfoRepositoriesUrl"
      required:
      - url
    nodes.info.NodeInfoRepositoriesUrl:
      type: object
      properties:
        allowed_urls:
          type: string
      required:
      - allowed_urls
    nodes.info.NodeInfoDiscover:
      type: object
      properties:
        seed_hosts:
          oneOf:
          - type: array
            items:
              type: string
          - type: string
        type:
          type: string
        seed_providers:
          type: array
          items:
            type: string
    nodes.info.NodeInfoAction:
      type: object
      properties:
        destructive_requires_name:
          type: string
      required:
      - destructive_requires_name
    nodes.info.NodeInfoClient:
      type: object
      properties:
        type:
          type: string
      required:
      - type
    nodes.info.NodeInfoSettingsHttp:
      type: object
      properties:
        type:
          allOf:
          - "$ref": "#/components/schemas/nodes.info.NodeInfoSettingsHttpType"
        type.default:
          type: string
        compression:
          oneOf:
          - type: boolean
          - type: string
        port:
          oneOf:
          - type: number
          - type: string
      required:
      - type
    nodes.info.NodeInfoSettingsHttpType:
      type: object
      properties:
        default:
          type: string
      required:
      - default
    nodes.info.NodeInfoBootstrap:
      type: object
      properties:
        memory_lock:
          type: string
      required:
      - memory_lock
    nodes.info.NodeInfoSettingsTransport:
      type: object
      properties:
        type:
          allOf:
          - "$ref": "#/components/schemas/nodes.info.NodeInfoSettingsTransportType"
        type.default:
          type: string
        features:
          allOf:
          - "$ref": "#/components/schemas/nodes.info.NodeInfoSettingsTransportFeatures"
      required:
      - type
    nodes.info.NodeInfoSettingsTransportType:
      type: object
      properties:
        default:
          type: string
      required:
      - default
    nodes.info.NodeInfoSettingsTransportFeatures:
      type: object
      properties:
        x-pack:
          type: string
      required:
      - x-pack
    nodes.info.NodeInfoSettingsNetwork:
      type: object
      properties:
        host:
          oneOf:
          - "$ref": "#/components/schemas/_types.Host"
          - type: array
            items:
              "$ref": "#/components/schemas/_types.Host"
    nodes.info.NodeInfoXpack:
      type: object
      properties:
        license:
          allOf:
          - "$ref": "#/components/schemas/nodes.info.NodeInfoXpackLicense"
        security:
          allOf:
          - "$ref": "#/components/schemas/nodes.info.NodeInfoXpackSecurity"
        notification:
          type: object
          additionalProperties:
            type: object
        ml:
          allOf:
          - "$ref": "#/components/schemas/nodes.info.NodeInfoXpackMl"
      required:
      - security
    nodes.info.NodeInfoXpackLicense:
      type: object
      properties:
        self_generated:
          allOf:
          - "$ref": "#/components/schemas/nodes.info.NodeInfoXpackLicenseType"
      required:
      - self_generated
    nodes.info.NodeInfoXpackLicenseType:
      type: object
      properties:
        type:
          type: string
      required:
      - type
    nodes.info.NodeInfoXpackSecurity:
      type: object
      properties:
        http:
          allOf:
          - "$ref": "#/components/schemas/nodes.info.NodeInfoXpackSecuritySsl"
        enabled:
          type: string
        transport:
          allOf:
          - "$ref": "#/components/schemas/nodes.info.NodeInfoXpackSecuritySsl"
        authc:
          allOf:
          - "$ref": "#/components/schemas/nodes.info.NodeInfoXpackSecurityAuthc"
      required:
      - enabled
    nodes.info.NodeInfoXpackSecuritySsl:
      type: object
      properties:
        ssl:
          type: object
          additionalProperties:
            type: string
      required:
      - ssl
    nodes.info.NodeInfoXpackSecurityAuthc:
      type: object
      properties:
        realms:
          allOf:
          - "$ref": "#/components/schemas/nodes.info.NodeInfoXpackSecurityAuthcRealms"
        token:
          allOf:
          - "$ref": "#/components/schemas/nodes.info.NodeInfoXpackSecurityAuthcToken"
    nodes.info.NodeInfoXpackSecurityAuthcRealms:
      type: object
      properties:
        file:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/nodes.info.NodeInfoXpackSecurityAuthcRealmsStatus"
        native:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/nodes.info.NodeInfoXpackSecurityAuthcRealmsStatus"
        pki:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/nodes.info.NodeInfoXpackSecurityAuthcRealmsStatus"
    nodes.info.NodeInfoXpackSecurityAuthcRealmsStatus:
      type: object
      properties:
        enabled:
          type: string
        order:
          type: string
      required:
      - order
    nodes.info.NodeInfoXpackSecurityAuthcToken:
      type: object
      properties:
        enabled:
          type: string
      required:
      - enabled
    nodes.info.NodeInfoXpackMl:
      type: object
      properties:
        use_auto_machine_memory_percent:
          type: boolean
    nodes.info.NodeInfoScript:
      type: object
      properties:
        allowed_types:
          type: string
        disable_max_compilations_rate:
          type: string
      required:
      - allowed_types
    nodes.info.NodeInfoSearch:
      type: object
      properties:
        remote:
          allOf:
          - "$ref": "#/components/schemas/nodes.info.NodeInfoSearchRemote"
      required:
      - remote
    nodes.info.NodeInfoSearchRemote:
      type: object
      properties:
        connect:
          type: string
      required:
      - connect
    nodes.info.NodeInfoSettingsIngest:
      type: object
      properties:
        attachment:
          allOf:
          - "$ref": "#/components/schemas/nodes.info.NodeInfoIngestInfo"
        append:
          allOf:
          - "$ref": "#/components/schemas/nodes.info.NodeInfoIngestInfo"
        csv:
          allOf:
          - "$ref": "#/components/schemas/nodes.info.NodeInfoIngestInfo"
        convert:
          allOf:
          - "$ref": "#/components/schemas/nodes.info.NodeInfoIngestInfo"
        date:
          allOf:
          - "$ref": "#/components/schemas/nodes.info.NodeInfoIngestInfo"
        date_index_name:
          allOf:
          - "$ref": "#/components/schemas/nodes.info.NodeInfoIngestInfo"
        dot_expander:
          allOf:
          - "$ref": "#/components/schemas/nodes.info.NodeInfoIngestInfo"
        enrich:
          allOf:
          - "$ref": "#/components/schemas/nodes.info.NodeInfoIngestInfo"
        fail:
          allOf:
          - "$ref": "#/components/schemas/nodes.info.NodeInfoIngestInfo"
        foreach:
          allOf:
          - "$ref": "#/components/schemas/nodes.info.NodeInfoIngestInfo"
        json:
          allOf:
          - "$ref": "#/components/schemas/nodes.info.NodeInfoIngestInfo"
        user_agent:
          allOf:
          - "$ref": "#/components/schemas/nodes.info.NodeInfoIngestInfo"
        kv:
          allOf:
          - "$ref": "#/components/schemas/nodes.info.NodeInfoIngestInfo"
        geoip:
          allOf:
          - "$ref": "#/components/schemas/nodes.info.NodeInfoIngestInfo"
        grok:
          allOf:
          - "$ref": "#/components/schemas/nodes.info.NodeInfoIngestInfo"
        gsub:
          allOf:
          - "$ref": "#/components/schemas/nodes.info.NodeInfoIngestInfo"
        join:
          allOf:
          - "$ref": "#/components/schemas/nodes.info.NodeInfoIngestInfo"
        lowercase:
          allOf:
          - "$ref": "#/components/schemas/nodes.info.NodeInfoIngestInfo"
        remove:
          allOf:
          - "$ref": "#/components/schemas/nodes.info.NodeInfoIngestInfo"
        rename:
          allOf:
          - "$ref": "#/components/schemas/nodes.info.NodeInfoIngestInfo"
        script:
          allOf:
          - "$ref": "#/components/schemas/nodes.info.NodeInfoIngestInfo"
        set:
          allOf:
          - "$ref": "#/components/schemas/nodes.info.NodeInfoIngestInfo"
        sort:
          allOf:
          - "$ref": "#/components/schemas/nodes.info.NodeInfoIngestInfo"
        split:
          allOf:
          - "$ref": "#/components/schemas/nodes.info.NodeInfoIngestInfo"
        trim:
          allOf:
          - "$ref": "#/components/schemas/nodes.info.NodeInfoIngestInfo"
        uppercase:
          allOf:
          - "$ref": "#/components/schemas/nodes.info.NodeInfoIngestInfo"
        urldecode:
          allOf:
          - "$ref": "#/components/schemas/nodes.info.NodeInfoIngestInfo"
        bytes:
          allOf:
          - "$ref": "#/components/schemas/nodes.info.NodeInfoIngestInfo"
        dissect:
          allOf:
          - "$ref": "#/components/schemas/nodes.info.NodeInfoIngestInfo"
        set_security_user:
          allOf:
          - "$ref": "#/components/schemas/nodes.info.NodeInfoIngestInfo"
        pipeline:
          allOf:
          - "$ref": "#/components/schemas/nodes.info.NodeInfoIngestInfo"
        drop:
          allOf:
          - "$ref": "#/components/schemas/nodes.info.NodeInfoIngestInfo"
        circle:
          allOf:
          - "$ref": "#/components/schemas/nodes.info.NodeInfoIngestInfo"
        inference:
          allOf:
          - "$ref": "#/components/schemas/nodes.info.NodeInfoIngestInfo"
    nodes.info.NodeInfoIngestInfo:
      type: object
      properties:
        downloader:
          allOf:
          - "$ref": "#/components/schemas/nodes.info.NodeInfoIngestDownloader"
      required:
      - downloader
    nodes.info.NodeInfoIngestDownloader:
      type: object
      properties:
        enabled:
          type: string
      required:
      - enabled
    nodes.info.NodeThreadPoolInfo:
      type: object
      properties:
        core:
          type: number
        keep_alive:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        max:
          type: number
        queue_size:
          type: number
        size:
          type: number
        type:
          type: string
      required:
      - queue_size
      - type
    nodes.info.NodeInfoTransport:
      type: object
      properties:
        bound_address:
          type: array
          items:
            type: string
        publish_address:
          type: string
        profiles:
          type: object
          additionalProperties:
            type: string
      required:
      - bound_address
      - publish_address
      - profiles
    nodes.info.NodeInfoIngest:
      type: object
      properties:
        processors:
          type: array
          items:
            "$ref": "#/components/schemas/nodes.info.NodeInfoIngestProcessor"
      required:
      - processors
    nodes.info.NodeInfoIngestProcessor:
      type: object
      properties:
        type:
          type: string
      required:
      - type
    nodes.info.NodeInfoAggregation:
      type: object
      properties:
        types:
          type: array
          items:
            type: string
      required:
      - types
    nodes.info.RemoveClusterServer:
      type: object
      properties:
        bound_address:
          type: array
          items:
            "$ref": "#/components/schemas/_types.TransportAddress"
        publish_address:
          allOf:
          - "$ref": "#/components/schemas/_types.TransportAddress"
      required:
      - bound_address
      - publish_address
    _types.Password:
      type: string
    nodes.reload_secure_settings.ResponseBase:
      allOf:
      - "$ref": "#/components/schemas/nodes._types.NodesResponseBase"
      - type: object
        properties:
          cluster_name:
            allOf:
            - "$ref": "#/components/schemas/_types.Name"
          nodes:
            type: object
            additionalProperties:
              "$ref": "#/components/schemas/nodes._types.NodeReloadResult"
        required:
        - cluster_name
        - nodes
    nodes._types.NodeReloadResult:
      type: object
      properties:
        name:
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        reload_exception:
          allOf:
          - "$ref": "#/components/schemas/_types.ErrorCause"
        secure_setting_names:
          description: The names of the secure settings that were reloaded.
          type: array
          items:
            type: string
        keystore_path:
          description: The path to the keystore file.
          type: string
        keystore_digest:
          description: A SHA-256 hash of the keystore file contents.
          type: string
        keystore_last_modified_time:
          description: The last modification time of the keystore file.
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
      required:
      - name
    nodes.stats.NodeStatsMetrics:
      oneOf:
      - "$ref": "#/components/schemas/nodes.stats.NodeStatsMetric"
      - type: array
        items:
          "$ref": "#/components/schemas/nodes.stats.NodeStatsMetric"
    nodes.stats.NodeStatsMetric:
      type: string
      enum:
      - _all
      - _none
      - indices
      - os
      - process
      - jvm
      - thread_pool
      - fs
      - transport
      - http
      - breaker
      - script
      - discovery
      - ingest
      - adaptive_selection
      - script_cache
      - indexing_pressure
      - repositories
      - allocations
    _types.NodeStatsLevel:
      type: string
      enum:
      - node
      - indices
      - shards
    nodes.stats.ResponseBase:
      allOf:
      - "$ref": "#/components/schemas/nodes._types.NodesResponseBase"
      - type: object
        properties:
          cluster_name:
            allOf:
            - "$ref": "#/components/schemas/_types.Name"
          nodes:
            type: object
            additionalProperties:
              "$ref": "#/components/schemas/nodes._types.Stats"
        required:
        - nodes
    nodes._types.Stats:
      type: object
      properties:
        adaptive_selection:
          description: Statistics about adaptive replica selection.
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/nodes._types.AdaptiveSelection"
        breakers:
          description: Statistics about the field data circuit breaker.
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/nodes._types.Breaker"
        fs:
          description: File system information, data path, free disk space, read/write
            stats.
          allOf:
          - "$ref": "#/components/schemas/nodes._types.FileSystem"
        host:
          description: Network host for the node, based on the network host setting.
          allOf:
          - "$ref": "#/components/schemas/_types.Host"
        http:
          description: HTTP connection information.
          allOf:
          - "$ref": "#/components/schemas/nodes._types.Http"
        ingest:
          description: Statistics about ingest preprocessing.
          allOf:
          - "$ref": "#/components/schemas/nodes._types.Ingest"
        ip:
          description: IP address and port for the node.
          oneOf:
          - "$ref": "#/components/schemas/_types.Ip"
          - type: array
            items:
              "$ref": "#/components/schemas/_types.Ip"
        jvm:
          description: JVM stats, memory pool information, garbage collection, buffer
            pools, number of loaded/unloaded classes.
          allOf:
          - "$ref": "#/components/schemas/nodes._types.Jvm"
        name:
          description: |-
            Human-readable identifier for the node.
            Based on the node name setting.
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        os:
          description: Operating system stats, load average, mem, swap.
          allOf:
          - "$ref": "#/components/schemas/nodes._types.OperatingSystem"
        process:
          description: Process statistics, memory consumption, cpu usage, open file
            descriptors.
          allOf:
          - "$ref": "#/components/schemas/nodes._types.Process"
        roles:
          description: Roles assigned to the node.
          allOf:
          - "$ref": "#/components/schemas/_types.NodeRoles"
        script:
          description: Contains script statistics for the node.
          allOf:
          - "$ref": "#/components/schemas/nodes._types.Scripting"
        script_cache:
          type: object
          additionalProperties:
            oneOf:
            - "$ref": "#/components/schemas/nodes._types.ScriptCache"
            - type: array
              items:
                "$ref": "#/components/schemas/nodes._types.ScriptCache"
        thread_pool:
          description: Statistics about each thread pool, including current size,
            queue and rejected tasks.
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/nodes._types.ThreadCount"
        timestamp:
          type: number
        transport:
          description: Transport statistics about sent and received bytes in cluster
            communication.
          allOf:
          - "$ref": "#/components/schemas/nodes._types.Transport"
        transport_address:
          description: Host and port for the transport layer, used for internal communication
            between nodes in a cluster.
          allOf:
          - "$ref": "#/components/schemas/_types.TransportAddress"
        attributes:
          description: Contains a list of attributes for the node.
          type: object
          additionalProperties:
            type: string
        discovery:
          description: Contains node discovery statistics for the node.
          allOf:
          - "$ref": "#/components/schemas/nodes._types.Discovery"
        indexing_pressure:
          description: Contains indexing pressure statistics for the node.
          allOf:
          - "$ref": "#/components/schemas/nodes._types.IndexingPressure"
        indices:
          description: Indices stats about size, document count, indexing and deletion
            times, search times, field cache size, merges and flushes.
          allOf:
          - "$ref": "#/components/schemas/indices.stats.ShardStats"
    nodes._types.AdaptiveSelection:
      type: object
      properties:
        avg_queue_size:
          description: The exponentially weighted moving average queue size of search
            requests on the keyed node.
          type: number
        avg_response_time:
          description: The exponentially weighted moving average response time of
            search requests on the keyed node.
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        avg_response_time_ns:
          description: The exponentially weighted moving average response time, in
            nanoseconds, of search requests on the keyed node.
          type: number
        avg_service_time:
          description: The exponentially weighted moving average service time of search
            requests on the keyed node.
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        avg_service_time_ns:
          description: The exponentially weighted moving average service time, in
            nanoseconds, of search requests on the keyed node.
          type: number
        outgoing_searches:
          description: The number of outstanding search requests to the keyed node
            from the node these stats are for.
          type: number
        rank:
          description: The rank of this node; used for shard selection when routing
            search requests.
          type: string
    nodes._types.Breaker:
      type: object
      properties:
        estimated_size:
          description: Estimated memory used for the operation.
          type: string
        estimated_size_in_bytes:
          description: Estimated memory used, in bytes, for the operation.
          type: number
        limit_size:
          description: Memory limit for the circuit breaker.
          type: string
        limit_size_in_bytes:
          description: Memory limit, in bytes, for the circuit breaker.
          type: number
        overhead:
          description: A constant that all estimates for the circuit breaker are multiplied
            with to calculate a final estimate.
          type: number
        tripped:
          description: Total number of times the circuit breaker has been triggered
            and prevented an out of memory error.
          type: number
    nodes._types.FileSystem:
      type: object
      properties:
        data:
          description: List of all file stores.
          type: array
          items:
            "$ref": "#/components/schemas/nodes._types.DataPathStats"
        timestamp:
          description: |-
            Last time the file stores statistics were refreshed.
            Recorded in milliseconds since the Unix Epoch.
          type: number
        total:
          description: Contains statistics for all file stores of the node.
          allOf:
          - "$ref": "#/components/schemas/nodes._types.FileSystemTotal"
        io_stats:
          description: Contains I/O statistics for the node.
          allOf:
          - "$ref": "#/components/schemas/nodes._types.IoStats"
    nodes._types.DataPathStats:
      type: object
      properties:
        available:
          description: Total amount of disk space available to this Java virtual machine
            on this file store.
          type: string
        available_in_bytes:
          description: Total number of bytes available to this Java virtual machine
            on this file store.
          type: number
        disk_queue:
          type: string
        disk_reads:
          type: number
        disk_read_size:
          type: string
        disk_read_size_in_bytes:
          type: number
        disk_writes:
          type: number
        disk_write_size:
          type: string
        disk_write_size_in_bytes:
          type: number
        free:
          description: Total amount of unallocated disk space in the file store.
          type: string
        free_in_bytes:
          description: Total number of unallocated bytes in the file store.
          type: number
        mount:
          description: 'Mount point of the file store (for example: `/dev/sda2`).'
          type: string
        path:
          description: Path to the file store.
          type: string
        total:
          description: Total size of the file store.
          type: string
        total_in_bytes:
          description: Total size of the file store in bytes.
          type: number
        type:
          description: 'Type of the file store (ex: ext4).'
          type: string
    nodes._types.FileSystemTotal:
      type: object
      properties:
        available:
          description: |-
            Total disk space available to this Java virtual machine on all file stores.
            Depending on OS or process level restrictions, this might appear less than `free`.
            This is the actual amount of free disk space the Elasticsearch node can utilise.
          type: string
        available_in_bytes:
          description: |-
            Total number of bytes available to this Java virtual machine on all file stores.
            Depending on OS or process level restrictions, this might appear less than `free_in_bytes`.
            This is the actual amount of free disk space the Elasticsearch node can utilise.
          type: number
        free:
          description: Total unallocated disk space in all file stores.
          type: string
        free_in_bytes:
          description: Total number of unallocated bytes in all file stores.
          type: number
        total:
          description: Total size of all file stores.
          type: string
        total_in_bytes:
          description: Total size of all file stores in bytes.
          type: number
    nodes._types.IoStats:
      type: object
      properties:
        devices:
          description: |-
            Array of disk metrics for each device that is backing an Elasticsearch data path.
            These disk metrics are probed periodically and averages between the last probe and the current probe are computed.
          type: array
          items:
            "$ref": "#/components/schemas/nodes._types.IoStatDevice"
        total:
          description: The sum of the disk metrics for all devices that back an Elasticsearch
            data path.
          allOf:
          - "$ref": "#/components/schemas/nodes._types.IoStatDevice"
    nodes._types.IoStatDevice:
      type: object
      properties:
        device_name:
          description: The Linux device name.
          type: string
        operations:
          description: The total number of read and write operations for the device
            completed since starting Elasticsearch.
          type: number
        read_kilobytes:
          description: The total number of kilobytes read for the device since starting
            Elasticsearch.
          type: number
        read_operations:
          description: The total number of read operations for the device completed
            since starting Elasticsearch.
          type: number
        write_kilobytes:
          description: The total number of kilobytes written for the device since
            starting Elasticsearch.
          type: number
        write_operations:
          description: The total number of write operations for the device completed
            since starting Elasticsearch.
          type: number
    nodes._types.Jvm:
      type: object
      properties:
        buffer_pools:
          description: Contains statistics about JVM buffer pools for the node.
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/nodes._types.NodeBufferPool"
        classes:
          description: Contains statistics about classes loaded by JVM for the node.
          allOf:
          - "$ref": "#/components/schemas/nodes._types.JvmClasses"
        gc:
          description: Contains statistics about JVM garbage collectors for the node.
          allOf:
          - "$ref": "#/components/schemas/nodes._types.GarbageCollector"
        mem:
          description: Contains JVM memory usage statistics for the node.
          allOf:
          - "$ref": "#/components/schemas/nodes._types.JvmMemoryStats"
        threads:
          description: Contains statistics about JVM thread usage for the node.
          allOf:
          - "$ref": "#/components/schemas/nodes._types.JvmThreads"
        timestamp:
          description: Last time JVM statistics were refreshed.
          type: number
        uptime:
          description: |-
            Human-readable JVM uptime.
            Only returned if the `human` query parameter is `true`.
          type: string
        uptime_in_millis:
          description: JVM uptime in milliseconds.
          type: number
    nodes._types.NodeBufferPool:
      type: object
      properties:
        count:
          description: Number of buffer pools.
          type: number
        total_capacity:
          description: Total capacity of buffer pools.
          type: string
        total_capacity_in_bytes:
          description: Total capacity of buffer pools in bytes.
          type: number
        used:
          description: Size of buffer pools.
          type: string
        used_in_bytes:
          description: Size of buffer pools in bytes.
          type: number
    nodes._types.JvmClasses:
      type: object
      properties:
        current_loaded_count:
          description: Number of classes currently loaded by JVM.
          type: number
        total_loaded_count:
          description: Total number of classes loaded since the JVM started.
          type: number
        total_unloaded_count:
          description: Total number of classes unloaded since the JVM started.
          type: number
    nodes._types.GarbageCollector:
      type: object
      properties:
        collectors:
          description: Contains statistics about JVM garbage collectors for the node.
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/nodes._types.GarbageCollectorTotal"
    nodes._types.GarbageCollectorTotal:
      type: object
      properties:
        collection_count:
          description: Total number of JVM garbage collectors that collect objects.
          type: number
        collection_time:
          description: Total time spent by JVM collecting objects.
          type: string
        collection_time_in_millis:
          description: Total time, in milliseconds, spent by JVM collecting objects.
          type: number
    nodes._types.JvmMemoryStats:
      type: object
      properties:
        heap_used_in_bytes:
          description: Memory, in bytes, currently in use by the heap.
          type: number
        heap_used_percent:
          description: Percentage of memory currently in use by the heap.
          type: number
        heap_committed_in_bytes:
          description: Amount of memory, in bytes, available for use by the heap.
          type: number
        heap_max_in_bytes:
          description: Maximum amount of memory, in bytes, available for use by the
            heap.
          type: number
        heap_max:
          description: Maximum amount of memory, available for use by the heap.
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        non_heap_used_in_bytes:
          description: Non-heap memory used, in bytes.
          type: number
        non_heap_committed_in_bytes:
          description: Amount of non-heap memory available, in bytes.
          type: number
        pools:
          description: Contains statistics about heap memory usage for the node.
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/nodes._types.Pool"
    nodes._types.Pool:
      type: object
      properties:
        used_in_bytes:
          description: Memory, in bytes, used by the heap.
          type: number
        max_in_bytes:
          description: Maximum amount of memory, in bytes, available for use by the
            heap.
          type: number
        peak_used_in_bytes:
          description: Largest amount of memory, in bytes, historically used by the
            heap.
          type: number
        peak_max_in_bytes:
          description: Largest amount of memory, in bytes, historically used by the
            heap.
          type: number
    nodes._types.JvmThreads:
      type: object
      properties:
        count:
          description: Number of active threads in use by JVM.
          type: number
        peak_count:
          description: Highest number of threads used by JVM.
          type: number
    nodes._types.OperatingSystem:
      type: object
      properties:
        cpu:
          allOf:
          - "$ref": "#/components/schemas/nodes._types.Cpu"
        mem:
          allOf:
          - "$ref": "#/components/schemas/nodes._types.ExtendedMemoryStats"
        swap:
          allOf:
          - "$ref": "#/components/schemas/nodes._types.MemoryStats"
        cgroup:
          allOf:
          - "$ref": "#/components/schemas/nodes._types.Cgroup"
        timestamp:
          type: number
    nodes._types.Cpu:
      type: object
      properties:
        percent:
          type: number
        sys:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        sys_in_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
        total:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        total_in_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
        user:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        user_in_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
        load_average:
          type: object
          additionalProperties:
            type: number
    nodes._types.ExtendedMemoryStats:
      allOf:
      - "$ref": "#/components/schemas/nodes._types.MemoryStats"
      - type: object
        properties:
          free_percent:
            description: Percentage of free memory.
            type: number
          used_percent:
            description: Percentage of used memory.
            type: number
    nodes._types.MemoryStats:
      type: object
      properties:
        adjusted_total_in_bytes:
          description: |-
            If the amount of physical memory has been overridden using the `es`.`total_memory_bytes` system property then this reports the overridden value in bytes.
            Otherwise it reports the same value as `total_in_bytes`.
          type: number
        resident:
          type: string
        resident_in_bytes:
          type: number
        share:
          type: string
        share_in_bytes:
          type: number
        total_virtual:
          type: string
        total_virtual_in_bytes:
          type: number
        total_in_bytes:
          description: Total amount of physical memory in bytes.
          type: number
        free_in_bytes:
          description: Amount of free physical memory in bytes.
          type: number
        used_in_bytes:
          description: Amount of used physical memory in bytes.
          type: number
    nodes._types.Cgroup:
      type: object
      properties:
        cpuacct:
          description: Contains statistics about `cpuacct` control group for the node.
          allOf:
          - "$ref": "#/components/schemas/nodes._types.CpuAcct"
        cpu:
          description: Contains statistics about `cpu` control group for the node.
          allOf:
          - "$ref": "#/components/schemas/nodes._types.CgroupCpu"
        memory:
          description: Contains statistics about the memory control group for the
            node.
          allOf:
          - "$ref": "#/components/schemas/nodes._types.CgroupMemory"
    nodes._types.CpuAcct:
      type: object
      properties:
        control_group:
          description: The `cpuacct` control group to which the Elasticsearch process
            belongs.
          type: string
        usage_nanos:
          description: The total CPU time, in nanoseconds, consumed by all tasks in
            the same cgroup as the Elasticsearch process.
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitNanos"
    nodes._types.CgroupCpu:
      type: object
      properties:
        control_group:
          description: The `cpu` control group to which the Elasticsearch process
            belongs.
          type: string
        cfs_period_micros:
          description: The period of time, in microseconds, for how regularly all
            tasks in the same cgroup as the Elasticsearch process should have their
            access to CPU resources reallocated.
          type: number
        cfs_quota_micros:
          description: The total amount of time, in microseconds, for which all tasks
            in the same cgroup as the Elasticsearch process can run during one period
            `cfs_period_micros`.
          type: number
        stat:
          description: Contains CPU statistics for the node.
          allOf:
          - "$ref": "#/components/schemas/nodes._types.CgroupCpuStat"
    nodes._types.CgroupCpuStat:
      type: object
      properties:
        number_of_elapsed_periods:
          description: The number of reporting periods (as specified by `cfs_period_micros`)
            that have elapsed.
          type: number
        number_of_times_throttled:
          description: The number of times all tasks in the same cgroup as the Elasticsearch
            process have been throttled.
          type: number
        time_throttled_nanos:
          description: The total amount of time, in nanoseconds, for which all tasks
            in the same cgroup as the Elasticsearch process have been throttled.
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitNanos"
    nodes._types.CgroupMemory:
      type: object
      properties:
        control_group:
          description: The `memory` control group to which the Elasticsearch process
            belongs.
          type: string
        limit_in_bytes:
          description: |-
            The maximum amount of user memory (including file cache) allowed for all tasks in the same cgroup as the Elasticsearch process.
            This value can be too big to store in a `long`, so is returned as a string so that the value returned can exactly match what the underlying operating system interface returns.
            Any value that is too large to parse into a `long` almost certainly means no limit has been set for the cgroup.
          type: string
        usage_in_bytes:
          description: |-
            The total current memory usage by processes in the cgroup, in bytes, by all tasks in the same cgroup as the Elasticsearch process.
            This value is stored as a string for consistency with `limit_in_bytes`.
          type: string
    nodes._types.Process:
      type: object
      properties:
        cpu:
          description: Contains CPU statistics for the node.
          allOf:
          - "$ref": "#/components/schemas/nodes._types.Cpu"
        mem:
          description: Contains virtual memory statistics for the node.
          allOf:
          - "$ref": "#/components/schemas/nodes._types.MemoryStats"
        open_file_descriptors:
          description: Number of opened file descriptors associated with the current
            or `-1` if not supported.
          type: number
        max_file_descriptors:
          description: Maximum number of file descriptors allowed on the system, or
            `-1` if not supported.
          type: number
        timestamp:
          description: |-
            Last time the statistics were refreshed.
            Recorded in milliseconds since the Unix Epoch.
          type: number
    nodes._types.ScriptCache:
      type: object
      properties:
        cache_evictions:
          description: Total number of times the script cache has evicted old data.
          type: number
        compilation_limit_triggered:
          description: Total number of times the script compilation circuit breaker
            has limited inline script compilations.
          type: number
        compilations:
          description: Total number of inline script compilations performed by the
            node.
          type: number
        context:
          type: string
    nodes._types.Transport:
      type: object
      properties:
        inbound_handling_time_histogram:
          description: The distribution of the time spent handling each inbound message
            on a transport thread, represented as a histogram.
          type: array
          items:
            "$ref": "#/components/schemas/nodes._types.TransportHistogram"
        outbound_handling_time_histogram:
          description: The distribution of the time spent sending each outbound transport
            message on a transport thread, represented as a histogram.
          type: array
          items:
            "$ref": "#/components/schemas/nodes._types.TransportHistogram"
        rx_count:
          description: Total number of RX (receive) packets received by the node during
            internal cluster communication.
          type: number
        rx_size:
          description: Size of RX packets received by the node during internal cluster
            communication.
          type: string
        rx_size_in_bytes:
          description: Size, in bytes, of RX packets received by the node during internal
            cluster communication.
          type: number
        server_open:
          description: Current number of inbound TCP connections used for internal
            communication between nodes.
          type: number
        tx_count:
          description: Total number of TX (transmit) packets sent by the node during
            internal cluster communication.
          type: number
        tx_size:
          description: Size of TX packets sent by the node during internal cluster
            communication.
          type: string
        tx_size_in_bytes:
          description: Size, in bytes, of TX packets sent by the node during internal
            cluster communication.
          type: number
        total_outbound_connections:
          description: |-
            The cumulative number of outbound transport connections that this node has opened since it started.
            Each transport connection may comprise multiple TCP connections but is only counted once in this statistic.
            Transport connections are typically long-lived so this statistic should remain constant in a stable cluster.
          type: number
    nodes._types.TransportHistogram:
      type: object
      properties:
        count:
          description: The number of times a transport thread took a period of time
            within the bounds of this bucket to handle an inbound message.
          type: number
        lt_millis:
          description: |-
            The exclusive upper bound of the bucket in milliseconds.
            May be omitted on the last bucket if this bucket has no upper bound.
          type: number
        ge_millis:
          description: The inclusive lower bound of the bucket in milliseconds. May
            be omitted on the first bucket if this bucket has no lower bound.
          type: number
    nodes._types.Discovery:
      type: object
      properties:
        cluster_state_queue:
          description: Contains statistics for the cluster state queue of the node.
          allOf:
          - "$ref": "#/components/schemas/nodes._types.ClusterStateQueue"
        published_cluster_states:
          description: Contains statistics for the published cluster states of the
            node.
          allOf:
          - "$ref": "#/components/schemas/nodes._types.PublishedClusterStates"
        cluster_state_update:
          description: |-
            Contains low-level statistics about how long various activities took during cluster state updates while the node was the elected master.
            Omitted if the node is not master-eligible.
            Every field whose name ends in `_time` within this object is also represented as a raw number of milliseconds in a field whose name ends in `_time_millis`.
            The human-readable fields with a `_time` suffix are only returned if requested with the `?human=true` query parameter.
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/nodes._types.ClusterStateUpdate"
        serialized_cluster_states:
          allOf:
          - "$ref": "#/components/schemas/nodes._types.SerializedClusterState"
        cluster_applier_stats:
          allOf:
          - "$ref": "#/components/schemas/nodes._types.ClusterAppliedStats"
    nodes._types.ClusterStateQueue:
      type: object
      properties:
        total:
          description: Total number of cluster states in queue.
          type: number
        pending:
          description: Number of pending cluster states in queue.
          type: number
        committed:
          description: Number of committed cluster states in queue.
          type: number
    nodes._types.PublishedClusterStates:
      type: object
      properties:
        full_states:
          description: Number of published cluster states.
          type: number
        incompatible_diffs:
          description: Number of incompatible differences between published cluster
            states.
          type: number
        compatible_diffs:
          description: Number of compatible differences between published cluster
            states.
          type: number
    nodes._types.ClusterStateUpdate:
      type: object
      properties:
        count:
          description: The number of cluster state update attempts that did not change
            the cluster state since the node started.
          type: number
        computation_time:
          description: The cumulative amount of time spent computing no-op cluster
            state updates since the node started.
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        computation_time_millis:
          description: The cumulative amount of time, in milliseconds, spent computing
            no-op cluster state updates since the node started.
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
        publication_time:
          description: |-
            The cumulative amount of time spent publishing cluster state updates which ultimately succeeded, which includes everything from the start of the publication (just after the computation of the new cluster state) until the publication has finished and the master node is ready to start processing the next state update.
            This includes the time measured by `context_construction_time`, `commit_time`, `completion_time` and `master_apply_time`.
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        publication_time_millis:
          description: |-
            The cumulative amount of time, in milliseconds, spent publishing cluster state updates which ultimately succeeded, which includes everything from the start of the publication (just after the computation of the new cluster state) until the publication has finished and the master node is ready to start processing the next state update.
            This includes the time measured by `context_construction_time`, `commit_time`, `completion_time` and `master_apply_time`.
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
        context_construction_time:
          description: |-
            The cumulative amount of time spent constructing a publication context since the node started for publications that ultimately succeeded.
            This statistic includes the time spent computing the difference between the current and new cluster state preparing a serialized representation of this difference.
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        context_construction_time_millis:
          description: |-
            The cumulative amount of time, in milliseconds, spent constructing a publication context since the node started for publications that ultimately succeeded.
            This statistic includes the time spent computing the difference between the current and new cluster state preparing a serialized representation of this difference.
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
        commit_time:
          description: The cumulative amount of time spent waiting for a successful
            cluster state update to commit, which measures the time from the start
            of each publication until a majority of the master-eligible nodes have
            written the state to disk and confirmed the write to the elected master.
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        commit_time_millis:
          description: The cumulative amount of time, in milliseconds, spent waiting
            for a successful cluster state update to commit, which measures the time
            from the start of each publication until a majority of the master-eligible
            nodes have written the state to disk and confirmed the write to the elected
            master.
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
        completion_time:
          description: The cumulative amount of time spent waiting for a successful
            cluster state update to complete, which measures the time from the start
            of each publication until all the other nodes have notified the elected
            master that they have applied the cluster state.
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        completion_time_millis:
          description: The cumulative amount of time, in milliseconds,  spent waiting
            for a successful cluster state update to complete, which measures the
            time from the start of each publication until all the other nodes have
            notified the elected master that they have applied the cluster state.
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
        master_apply_time:
          description: The cumulative amount of time spent successfully applying cluster
            state updates on the elected master since the node started.
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        master_apply_time_millis:
          description: The cumulative amount of time, in milliseconds, spent successfully
            applying cluster state updates on the elected master since the node started.
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
        notification_time:
          description: The cumulative amount of time spent notifying listeners of
            a no-op cluster state update since the node started.
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        notification_time_millis:
          description: The cumulative amount of time, in milliseconds, spent notifying
            listeners of a no-op cluster state update since the node started.
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
      required:
      - count
    nodes._types.SerializedClusterState:
      type: object
      properties:
        full_states:
          description: Number of published cluster states.
          allOf:
          - "$ref": "#/components/schemas/nodes._types.SerializedClusterStateDetail"
        diffs:
          allOf:
          - "$ref": "#/components/schemas/nodes._types.SerializedClusterStateDetail"
    nodes._types.SerializedClusterStateDetail:
      type: object
      properties:
        count:
          type: number
        uncompressed_size:
          type: string
        uncompressed_size_in_bytes:
          type: number
        compressed_size:
          type: string
        compressed_size_in_bytes:
          type: number
    nodes._types.ClusterAppliedStats:
      type: object
      properties:
        recordings:
          type: array
          items:
            "$ref": "#/components/schemas/nodes._types.Recording"
    nodes._types.Recording:
      type: object
      properties:
        name:
          type: string
        cumulative_execution_count:
          type: number
        cumulative_execution_time:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        cumulative_execution_time_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
    nodes._types.IndexingPressure:
      type: object
      properties:
        memory:
          description: Contains statistics for memory consumption from indexing load.
          allOf:
          - "$ref": "#/components/schemas/nodes._types.IndexingPressureMemory"
    nodes.usage.NodesUsageMetrics:
      oneOf:
      - "$ref": "#/components/schemas/nodes.usage.NodesUsageMetric"
      - type: array
        items:
          "$ref": "#/components/schemas/nodes.usage.NodesUsageMetric"
    nodes.usage.NodesUsageMetric:
      type: string
      enum:
      - _all
      - rest_actions
      - aggregations
    nodes.usage.ResponseBase:
      allOf:
      - "$ref": "#/components/schemas/nodes._types.NodesResponseBase"
      - type: object
        properties:
          cluster_name:
            allOf:
            - "$ref": "#/components/schemas/_types.Name"
          nodes:
            type: object
            additionalProperties:
              "$ref": "#/components/schemas/nodes.usage.NodeUsage"
        required:
        - cluster_name
        - nodes
    nodes.usage.NodeUsage:
      type: object
      properties:
        rest_actions:
          description: |-
            The total number of times each REST endpoint has been called on this node since the last restart.
             Note that the REST endpoint names are not considered stable.
          type: object
          additionalProperties:
            type: number
        since:
          description: The timestamp for when the collection of these statistics started.
          allOf:
          - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
        timestamp:
          description: The timestamp for when these statistics were collected.
          allOf:
          - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
        aggregations:
          description: The total number of times search aggregations have been called
            on this node since the last restart.
          type: object
          additionalProperties:
            type: object
      required:
      - rest_actions
      - since
      - timestamp
      - aggregations
    query_rules._types.QueryRule:
      type: object
      properties:
        rule_id:
          description: A unique identifier for the rule.
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        type:
          description: |-
            The type of rule.
            `pinned` will identify and pin specific documents to the top of search results.
            `exclude` will exclude specific documents from search results.
          allOf:
          - "$ref": "#/components/schemas/query_rules._types.QueryRuleType"
        criteria:
          description: |-
            The criteria that must be met for the rule to be applied.
            If multiple criteria are specified for a rule, all criteria must be met for the rule to be applied.
          oneOf:
          - "$ref": "#/components/schemas/query_rules._types.QueryRuleCriteria"
          - type: array
            items:
              "$ref": "#/components/schemas/query_rules._types.QueryRuleCriteria"
        actions:
          description: |-
            The actions to take when the rule is matched.
            The format of this action depends on the rule type.
          allOf:
          - "$ref": "#/components/schemas/query_rules._types.QueryRuleActions"
        priority:
          type: number
      required:
      - rule_id
      - type
      - criteria
      - actions
    query_rules._types.QueryRuleType:
      type: string
      enum:
      - pinned
      - exclude
    query_rules._types.QueryRuleCriteria:
      type: object
      properties:
        type:
          description: |-
            The type of criteria. The following criteria types are supported:

            * `always`: Matches all queries, regardless of input.
            * `contains`: Matches that contain this value anywhere in the field meet the criteria defined by the rule. Only applicable for string values.
            * `exact`: Only exact matches meet the criteria defined by the rule. Applicable for string or numerical values.
            * `fuzzy`: Exact matches or matches within the allowed Levenshtein Edit Distance meet the criteria defined by the rule. Only applicable for string values.
            * `gt`: Matches with a value greater than this value meet the criteria defined by the rule. Only applicable for numerical values.
            * `gte`: Matches with a value greater than or equal to this value meet the criteria defined by the rule. Only applicable for numerical values.
            * `lt`: Matches with a value less than this value meet the criteria defined by the rule. Only applicable for numerical values.
            * `lte`: Matches with a value less than or equal to this value meet the criteria defined by the rule. Only applicable for numerical values.
            * `prefix`: Matches that start with this value meet the criteria defined by the rule. Only applicable for string values.
            * `suffix`: Matches that end with this value meet the criteria defined by the rule. Only applicable for string values.
          allOf:
          - "$ref": "#/components/schemas/query_rules._types.QueryRuleCriteriaType"
        metadata:
          description: |-
            The metadata field to match against.
            This metadata will be used to match against `match_criteria` sent in the rule.
            It is required for all criteria types except `always`.
          type: string
        values:
          description: |-
            The values to match against the `metadata` field.
            Only one value must match for the criteria to be met.
            It is required for all criteria types except `always`.
          type: array
          items:
            type: object
      required:
      - type
    query_rules._types.QueryRuleCriteriaType:
      type: string
      enum:
      - global
      - exact
      - exact_fuzzy
      - fuzzy
      - prefix
      - suffix
      - contains
      - lt
      - lte
      - gt
      - gte
      - always
    query_rules._types.QueryRuleActions:
      type: object
      properties:
        ids:
          description: |-
            The unique document IDs of the documents to apply the rule to.
            Only one of `ids` or `docs` may be specified and at least one must be specified.
          type: array
          items:
            "$ref": "#/components/schemas/_types.Id"
        docs:
          description: |-
            The documents to apply the rule to.
            Only one of `ids` or `docs` may be specified and at least one must be specified.
            There is a maximum value of 100 documents in a rule.
            You can specify the following attributes for each document:

            * `_index`: The index of the document to pin.
            * `_id`: The unique document ID.
          type: array
          items:
            "$ref": "#/components/schemas/_types.query_dsl.PinnedDoc"
    query_rules._types.QueryRuleset:
      type: object
      properties:
        ruleset_id:
          description: A unique identifier for the ruleset.
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        rules:
          description: Rules associated with the query ruleset.
          type: array
          items:
            "$ref": "#/components/schemas/query_rules._types.QueryRule"
      required:
      - ruleset_id
      - rules
    query_rules.list_rulesets.QueryRulesetListItem:
      type: object
      properties:
        ruleset_id:
          description: A unique identifier for the ruleset.
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        rule_total_count:
          description: The number of rules associated with the ruleset.
          type: number
        rule_criteria_types_counts:
          description: |-
            A map of criteria type (for example, `exact`) to the number of rules of that type.

            NOTE: The counts in `rule_criteria_types_counts` may be larger than the value of `rule_total_count` because a rule may have multiple criteria.
          type: object
          additionalProperties:
            type: number
        rule_type_counts:
          description: A map of rule type (for example, `pinned`) to the number of
            rules of that type.
          type: object
          additionalProperties:
            type: number
      required:
      - ruleset_id
      - rule_total_count
      - rule_criteria_types_counts
      - rule_type_counts
    query_rules.test.QueryRulesetMatchedRule:
      type: object
      properties:
        ruleset_id:
          description: Ruleset unique identifier
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        rule_id:
          description: Rule unique identifier within that ruleset
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
      required:
      - ruleset_id
      - rule_id
    _global.rank_eval.RankEvalRequestItem:
      type: object
      properties:
        id:
          description: The search request’s ID, used to group result details later.
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        request:
          description: The query being evaluated.
          allOf:
          - "$ref": "#/components/schemas/_global.rank_eval.RankEvalQuery"
        ratings:
          description: List of document ratings
          type: array
          items:
            "$ref": "#/components/schemas/_global.rank_eval.DocumentRating"
        template_id:
          description: The search template Id
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        params:
          description: The search template parameters.
          type: object
          additionalProperties:
            type: object
      required:
      - id
      - ratings
    _global.rank_eval.RankEvalQuery:
      type: object
      properties:
        query:
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.QueryContainer"
        size:
          type: number
      required:
      - query
    _global.rank_eval.DocumentRating:
      type: object
      properties:
        _id:
          description: The document ID.
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        _index:
          description: The document’s index. For data streams, this should be the
            document’s backing index.
          allOf:
          - "$ref": "#/components/schemas/_types.IndexName"
        rating:
          description: The document’s relevance with regard to this search request.
          type: number
      required:
      - _id
      - _index
      - rating
    _global.rank_eval.RankEvalMetric:
      type: object
      properties:
        precision:
          allOf:
          - "$ref": "#/components/schemas/_global.rank_eval.RankEvalMetricPrecision"
        recall:
          allOf:
          - "$ref": "#/components/schemas/_global.rank_eval.RankEvalMetricRecall"
        mean_reciprocal_rank:
          allOf:
          - "$ref": "#/components/schemas/_global.rank_eval.RankEvalMetricMeanReciprocalRank"
        dcg:
          allOf:
          - "$ref": "#/components/schemas/_global.rank_eval.RankEvalMetricDiscountedCumulativeGain"
        expected_reciprocal_rank:
          allOf:
          - "$ref": "#/components/schemas/_global.rank_eval.RankEvalMetricExpectedReciprocalRank"
    _global.rank_eval.RankEvalMetricPrecision:
      description: Precision at K (P@k)
      allOf:
      - "$ref": "#/components/schemas/_global.rank_eval.RankEvalMetricRatingTreshold"
      - type: object
        properties:
          ignore_unlabeled:
            description: Controls how unlabeled documents in the search results are
              counted. If set to true, unlabeled documents are ignored and neither
              count as relevant or irrelevant. Set to false (the default), they are
              treated as irrelevant.
            default: false
            type: boolean
    _global.rank_eval.RankEvalMetricRatingTreshold:
      allOf:
      - "$ref": "#/components/schemas/_global.rank_eval.RankEvalMetricBase"
      - type: object
        properties:
          relevant_rating_threshold:
            description: Sets the rating threshold above which documents are considered
              to be "relevant".
            default: 1
            type: number
    _global.rank_eval.RankEvalMetricBase:
      type: object
      properties:
        k:
          description: Sets the maximum number of documents retrieved per query. This
            value will act in place of the usual size parameter in the query.
          default: 10
          type: number
    _global.rank_eval.RankEvalMetricRecall:
      description: Recall at K (R@k)
      allOf:
      - "$ref": "#/components/schemas/_global.rank_eval.RankEvalMetricRatingTreshold"
      - type: object
    _global.rank_eval.RankEvalMetricMeanReciprocalRank:
      description: Mean Reciprocal Rank
      allOf:
      - "$ref": "#/components/schemas/_global.rank_eval.RankEvalMetricRatingTreshold"
      - type: object
    _global.rank_eval.RankEvalMetricDiscountedCumulativeGain:
      description: Discounted cumulative gain (DCG)
      allOf:
      - "$ref": "#/components/schemas/_global.rank_eval.RankEvalMetricBase"
      - type: object
        properties:
          normalize:
            description: If set to true, this metric will calculate the Normalized
              DCG.
            default: false
            type: boolean
    _global.rank_eval.RankEvalMetricExpectedReciprocalRank:
      description: Expected Reciprocal Rank (ERR)
      allOf:
      - "$ref": "#/components/schemas/_global.rank_eval.RankEvalMetricBase"
      - type: object
        properties:
          maximum_relevance:
            description: The highest relevance grade used in the user-supplied relevance
              judgments.
            type: number
        required:
        - maximum_relevance
    _global.rank_eval.RankEvalMetricDetail:
      type: object
      properties:
        metric_score:
          description: The metric_score in the details section shows the contribution
            of this query to the global quality metric score
          type: number
        unrated_docs:
          description: The unrated_docs section contains an _index and _id entry for
            each document in the search result for this query that didn’t have a ratings
            value. This can be used to ask the user to supply ratings for these documents
          type: array
          items:
            "$ref": "#/components/schemas/_global.rank_eval.UnratedDocument"
        hits:
          description: The hits section shows a grouping of the search results with
            their supplied ratings
          type: array
          items:
            "$ref": "#/components/schemas/_global.rank_eval.RankEvalHitItem"
        metric_details:
          description: The metric_details give additional information about the calculated
            quality metric (e.g. how many of the retrieved documents were relevant).
            The content varies for each metric but allows for better interpretation
            of the results
          type: object
          additionalProperties:
            type: object
            additionalProperties:
              type: object
      required:
      - metric_score
      - unrated_docs
      - hits
      - metric_details
    _global.rank_eval.UnratedDocument:
      type: object
      properties:
        _id:
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        _index:
          allOf:
          - "$ref": "#/components/schemas/_types.IndexName"
      required:
      - _id
      - _index
    _global.rank_eval.RankEvalHitItem:
      type: object
      properties:
        hit:
          allOf:
          - "$ref": "#/components/schemas/_global.rank_eval.RankEvalHit"
        rating:
          oneOf:
          - type: number
          - nullable: true
            type: string
      required:
      - hit
    _global.rank_eval.RankEvalHit:
      type: object
      properties:
        _id:
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        _index:
          allOf:
          - "$ref": "#/components/schemas/_types.IndexName"
        _score:
          type: number
      required:
      - _id
      - _index
      - _score
    _global.reindex.Destination:
      type: object
      properties:
        index:
          description: The name of the data stream, index, or index alias you are
            copying to.
          allOf:
          - "$ref": "#/components/schemas/_types.IndexName"
        op_type:
          description: |+
            If it is `create`, the operation will only index documents that do not already exist (also known as "put if absent").

            IMPORTANT: To reindex to a data stream destination, this argument must be `create`.

            Supported values include:
              - `index`: Overwrite any documents that already exist.
              - `create`: Only index documents that do not already exist.

          default: index
          allOf:
          - "$ref": "#/components/schemas/_types.OpType"
        pipeline:
          description: The name of the pipeline to use.
          type: string
        routing:
          description: |-
            By default, a document's routing is preserved unless it's changed by the script.
            If it is `keep`, the routing on the bulk request sent for each match is set to the routing on the match.
            If it is `discard`, the routing on the bulk request sent for each match is set to `null`.
            If it is `=value`, the routing on the bulk request sent for each match is set to all value specified after the equals sign (`=`).
          default: keep
          type: string
        version_type:
          description: |+
            The versioning to use for the indexing operation.

            Supported values include:
              - `internal`: Use internal versioning that starts at 1 and increments with each update or delete.
              - `external`: Only index the document if the specified version is strictly higher than the version of the stored document or if there is no existing document.
              - `external_gte`: Only index the document if the specified version is equal or higher than the version of the stored document or if there is no existing document.
            NOTE: The `external_gte` version type is meant for special use cases and should be used with care.
            If used incorrectly, it can result in loss of data.

          allOf:
          - "$ref": "#/components/schemas/_types.VersionType"
      required:
      - index
    _global.reindex.Source:
      type: object
      properties:
        index:
          description: |-
            The name of the data stream, index, or alias you are copying from.
            It accepts a comma-separated list to reindex from multiple sources.
          allOf:
          - "$ref": "#/components/schemas/_types.Indices"
        query:
          description: The documents to reindex, which is defined with Query DSL.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.QueryContainer"
        remote:
          description: A remote instance of Elasticsearch that you want to index from.
          x-state: Generally available; Added in 5.0.0
          allOf:
          - "$ref": "#/components/schemas/_global.reindex.RemoteSource"
        size:
          description: |-
            The number of documents to index per batch.
            Use it when you are indexing from remote to ensure that the batches fit within the on-heap buffer, which defaults to a maximum size of 100 MB.
          default: 1000
          type: number
        slice:
          description: Slice the reindex request manually using the provided slice
            ID and total number of slices.
          allOf:
          - "$ref": "#/components/schemas/_types.SlicedScroll"
        sort:
          deprecated: true
          description: |-
            A comma-separated list of `<field>:<direction>` pairs to sort by before indexing.
            Use it in conjunction with `max_docs` to control what documents are reindexed.

            WARNING: Sort in reindex is deprecated.
            Sorting in reindex was never guaranteed to index documents in order and prevents further development of reindex such as resilience and performance improvements.
            If used in combination with `max_docs`, consider using a query filter instead.
          allOf:
          - "$ref": "#/components/schemas/_types.Sort"
        _source:
          description: |-
            If `true`, reindex all source fields.
            Set it to a list to reindex select fields.
          default: 'true'
          allOf:
          - "$ref": "#/components/schemas/_global.search._types.SourceConfig"
        runtime_mappings:
          allOf:
          - "$ref": "#/components/schemas/_types.mapping.RuntimeFields"
      required:
      - index
    _global.reindex.RemoteSource:
      type: object
      properties:
        connect_timeout:
          description: The remote connection timeout.
          default: 30s
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        headers:
          description: An object containing the headers of the request.
          type: object
          additionalProperties:
            type: string
        host:
          description: |-
            The URL for the remote instance of Elasticsearch that you want to index from.
            This information is required when you're indexing from remote.
          allOf:
          - "$ref": "#/components/schemas/_types.Host"
        username:
          description: The username to use for authentication with the remote host
            (required when using basic auth).
          allOf:
          - "$ref": "#/components/schemas/_types.Username"
        password:
          description: The password to use for authentication with the remote host
            (required when using basic auth).
          allOf:
          - "$ref": "#/components/schemas/_types.Password"
        api_key:
          description: |-
            The API key to use for authentication with the remote host (as an alternative to basic auth when the remote cluster is in Elastic Cloud).
            (It is not permitted to set this and also to set an `Authorization` header via `headers`.)
          x-state: Generally available; Added in 9.3.0
          type: string
        socket_timeout:
          description: The remote socket read timeout.
          default: 30s
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
      required:
      - host
    _types.Username:
      type: string
    _global.reindex_rethrottle.ReindexNode:
      allOf:
      - "$ref": "#/components/schemas/_spec_utils.BaseNode"
      - type: object
        properties:
          tasks:
            type: object
            additionalProperties:
              "$ref": "#/components/schemas/_global.reindex_rethrottle.ReindexTask"
        required:
        - tasks
    _global.reindex_rethrottle.ReindexTask:
      type: object
      properties:
        action:
          type: string
        cancellable:
          type: boolean
        cancelled:
          type: boolean
        description:
          type: string
        id:
          type: number
        node:
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        running_time_in_nanos:
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitNanos"
        start_time_in_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
        status:
          allOf:
          - "$ref": "#/components/schemas/_types.ReindexStatus"
        type:
          type: string
        headers:
          allOf:
          - "$ref": "#/components/schemas/_types.HttpHeaders"
      required:
      - action
      - cancellable
      - cancelled
      - description
      - id
      - node
      - running_time_in_nanos
      - start_time_in_millis
      - status
      - type
      - headers
    _spec_utils.BaseNode:
      type: object
      properties:
        attributes:
          type: object
          additionalProperties:
            type: string
        host:
          allOf:
          - "$ref": "#/components/schemas/_types.Host"
        ip:
          allOf:
          - "$ref": "#/components/schemas/_types.Ip"
        name:
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        roles:
          allOf:
          - "$ref": "#/components/schemas/_types.NodeRoles"
        transport_address:
          allOf:
          - "$ref": "#/components/schemas/_types.TransportAddress"
      required:
      - attributes
      - host
      - ip
      - name
      - transport_address
    rollup.get_jobs.RollupJob:
      type: object
      properties:
        config:
          description: The rollup job configuration.
          allOf:
          - "$ref": "#/components/schemas/rollup.get_jobs.RollupJobConfiguration"
        stats:
          description: |-
            Transient statistics about the rollup job, such as how many documents have been processed and how many rollup summary docs have been indexed.
            These stats are not persisted.
            If a node is restarted, these stats are reset.
          allOf:
          - "$ref": "#/components/schemas/rollup.get_jobs.RollupJobStats"
        status:
          description: The current status of the indexer for the rollup job.
          allOf:
          - "$ref": "#/components/schemas/rollup.get_jobs.RollupJobStatus"
      required:
      - config
      - stats
      - status
    rollup.get_jobs.RollupJobConfiguration:
      type: object
      properties:
        cron:
          type: string
        groups:
          allOf:
          - "$ref": "#/components/schemas/rollup._types.Groupings"
        id:
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        index_pattern:
          type: string
        metrics:
          type: array
          items:
            "$ref": "#/components/schemas/rollup._types.FieldMetric"
        page_size:
          type: number
        rollup_index:
          allOf:
          - "$ref": "#/components/schemas/_types.IndexName"
        timeout:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
      required:
      - cron
      - groups
      - id
      - index_pattern
      - metrics
      - page_size
      - rollup_index
      - timeout
    rollup._types.Groupings:
      type: object
      properties:
        date_histogram:
          description: |-
            A date histogram group aggregates a date field into time-based buckets.
            This group is mandatory; you currently cannot roll up documents without a timestamp and a `date_histogram` group.
          allOf:
          - "$ref": "#/components/schemas/rollup._types.DateHistogramGrouping"
        histogram:
          description: The histogram group aggregates one or more numeric fields into
            numeric histogram intervals.
          allOf:
          - "$ref": "#/components/schemas/rollup._types.HistogramGrouping"
        terms:
          description: |-
            The terms group can be used on keyword or numeric fields to allow bucketing via the terms aggregation at a later point.
            The indexer enumerates and stores all values of a field for each time-period.
            This can be potentially costly for high-cardinality groups such as IP addresses, especially if the time-bucket is particularly sparse.
          allOf:
          - "$ref": "#/components/schemas/rollup._types.TermsGrouping"
    rollup._types.DateHistogramGrouping:
      type: object
      properties:
        delay:
          description: |-
            How long to wait before rolling up new documents.
            By default, the indexer attempts to roll up all data that is available.
            However, it is not uncommon for data to arrive out of order.
            The indexer is unable to deal with data that arrives after a time-span has been rolled up.
            You need to specify a delay that matches the longest period of time you expect out-of-order data to arrive.
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        field:
          description: The date field that is to be rolled up.
          allOf:
          - "$ref": "#/components/schemas/_types.Field"
        format:
          type: string
        interval:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        calendar_interval:
          description: The interval of time buckets to be generated when rolling up.
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        fixed_interval:
          description: The interval of time buckets to be generated when rolling up.
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        time_zone:
          description: |-
            Defines what `time_zone` the rollup documents are stored as.
            Unlike raw data, which can shift timezones on the fly, rolled documents have to be stored with a specific timezone.
            By default, rollup documents are stored in `UTC`.
          allOf:
          - "$ref": "#/components/schemas/_types.TimeZone"
      required:
      - field
    rollup._types.HistogramGrouping:
      type: object
      properties:
        fields:
          description: |-
            The set of fields that you wish to build histograms for.
            All fields specified must be some kind of numeric.
            Order does not matter.
          allOf:
          - "$ref": "#/components/schemas/_types.Fields"
        interval:
          description: |-
            The interval of histogram buckets to be generated when rolling up.
            For example, a value of `5` creates buckets that are five units wide (`0-5`, `5-10`, etc).
            Note that only one interval can be specified in the histogram group, meaning that all fields being grouped via the histogram must share the same interval.
          type: number
      required:
      - fields
      - interval
    rollup._types.TermsGrouping:
      type: object
      properties:
        fields:
          description: |-
            The set of fields that you wish to collect terms for.
            This array can contain fields that are both keyword and numerics.
            Order does not matter.
          allOf:
          - "$ref": "#/components/schemas/_types.Fields"
      required:
      - fields
    rollup._types.FieldMetric:
      type: object
      properties:
        field:
          description: The field to collect metrics for. This must be a numeric of
            some kind.
          allOf:
          - "$ref": "#/components/schemas/_types.Field"
        metrics:
          description: An array of metrics to collect for the field. At least one
            metric must be configured.
          type: array
          items:
            "$ref": "#/components/schemas/rollup._types.Metric"
      required:
      - field
      - metrics
    rollup._types.Metric:
      type: string
      enum:
      - min
      - max
      - sum
      - avg
      - value_count
    rollup.get_jobs.RollupJobStats:
      type: object
      properties:
        documents_processed:
          type: number
        index_failures:
          type: number
        index_time_in_ms:
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
        index_total:
          type: number
        pages_processed:
          type: number
        rollups_indexed:
          type: number
        search_failures:
          type: number
        search_time_in_ms:
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
        search_total:
          type: number
        trigger_count:
          type: number
        processing_time_in_ms:
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
        processing_total:
          type: number
      required:
      - documents_processed
      - index_failures
      - index_time_in_ms
      - index_total
      - pages_processed
      - rollups_indexed
      - search_failures
      - search_time_in_ms
      - search_total
      - trigger_count
      - processing_time_in_ms
      - processing_total
    rollup.get_jobs.RollupJobStatus:
      type: object
      properties:
        current_position:
          type: object
          additionalProperties:
            type: object
        job_state:
          allOf:
          - "$ref": "#/components/schemas/rollup.get_jobs.IndexingJobState"
        upgraded_doc_id:
          type: boolean
      required:
      - job_state
    rollup.get_jobs.IndexingJobState:
      type: string
      enum:
      - started
      - indexing
      - stopping
      - stopped
      - aborting
    rollup.get_rollup_caps.RollupCapabilities:
      type: object
      properties:
        rollup_jobs:
          description: There can be multiple, independent jobs configured for a single
            index or index pattern. Each of these jobs may have different configurations,
            so the API returns a list of all the various configurations available.
          type: array
          items:
            "$ref": "#/components/schemas/rollup.get_rollup_caps.RollupCapabilitySummary"
      required:
      - rollup_jobs
    rollup.get_rollup_caps.RollupCapabilitySummary:
      type: object
      properties:
        fields:
          type: object
          additionalProperties:
            type: array
            items:
              "$ref": "#/components/schemas/rollup.get_rollup_caps.RollupFieldSummary"
        index_pattern:
          type: string
        job_id:
          type: string
        rollup_index:
          type: string
      required:
      - fields
      - index_pattern
      - job_id
      - rollup_index
    rollup.get_rollup_caps.RollupFieldSummary:
      type: object
      properties:
        agg:
          type: string
        calendar_interval:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        time_zone:
          allOf:
          - "$ref": "#/components/schemas/_types.TimeZone"
      required:
      - agg
    rollup.get_rollup_index_caps.IndexCapabilities:
      type: object
      properties:
        rollup_jobs:
          type: array
          items:
            "$ref": "#/components/schemas/rollup.get_rollup_index_caps.RollupJobSummary"
      required:
      - rollup_jobs
    rollup.get_rollup_index_caps.RollupJobSummary:
      type: object
      properties:
        fields:
          type: object
          additionalProperties:
            type: array
            items:
              "$ref": "#/components/schemas/rollup.get_rollup_index_caps.RollupJobSummaryField"
        index_pattern:
          type: string
        job_id:
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        rollup_index:
          allOf:
          - "$ref": "#/components/schemas/_types.IndexName"
      required:
      - fields
      - index_pattern
      - job_id
      - rollup_index
    rollup.get_rollup_index_caps.RollupJobSummaryField:
      type: object
      properties:
        agg:
          type: string
        time_zone:
          allOf:
          - "$ref": "#/components/schemas/_types.TimeZone"
        calendar_interval:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
      required:
      - agg
    _global.scripts_painless_execute.PainlessContext:
      type: string
      enum:
      - painless_test
      - filter
      - score
      - boolean_field
      - date_field
      - double_field
      - geo_point_field
      - ip_field
      - keyword_field
      - long_field
      - composite_field
    _global.scripts_painless_execute.PainlessContextSetup:
      type: object
      properties:
        document:
          description: Document that's temporarily indexed in-memory and accessible
            from the script.
          type: object
        index:
          description: |-
            Index containing a mapping that's compatible with the indexed document.
            You may specify a remote index by prefixing the index with the remote cluster alias.
            For example, `remote1:my_index` indicates that you want to run the painless script against the "my_index" index on the "remote1" cluster.
            This request will be forwarded to the "remote1" cluster if you have configured a connection to that remote cluster.

            NOTE: Wildcards are not accepted in the index expression for this endpoint.
            The expression `*:myindex` will return the error "No such remote cluster" and the expression `logs*` or `remote1:logs*` will return the error "index not found".
          allOf:
          - "$ref": "#/components/schemas/_types.IndexName"
        query:
          description: Use this parameter to specify a query for computing a score.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.QueryContainer"
      required:
      - document
      - index
    search_application._types.SearchApplication:
      allOf:
      - "$ref": "#/components/schemas/search_application._types.SearchApplicationParameters"
      - type: object
        properties:
          name:
            description: Search Application name
            allOf:
            - "$ref": "#/components/schemas/_types.Name"
          updated_at_millis:
            description: Last time the Search Application was updated.
            allOf:
            - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
        required:
        - name
        - updated_at_millis
    search_application._types.SearchApplicationParameters:
      type: object
      properties:
        indices:
          description: Indices that are part of the Search Application.
          type: array
          items:
            "$ref": "#/components/schemas/_types.IndexName"
        analytics_collection_name:
          description: Analytics collection associated to the Search Application.
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        template:
          description: Search template to use on search operations.
          allOf:
          - "$ref": "#/components/schemas/search_application._types.SearchApplicationTemplate"
      required:
      - indices
    search_application._types.SearchApplicationTemplate:
      type: object
      properties:
        script:
          description: The associated mustache template.
          allOf:
          - "$ref": "#/components/schemas/_types.Script"
      required:
      - script
    search_application._types.AnalyticsCollection:
      type: object
      properties:
        event_data_stream:
          description: Data stream for the collection.
          allOf:
          - "$ref": "#/components/schemas/search_application._types.EventDataStream"
      required:
      - event_data_stream
    search_application._types.EventDataStream:
      type: object
      properties:
        name:
          allOf:
          - "$ref": "#/components/schemas/_types.IndexName"
      required:
      - name
    search_application._types.EventType:
      type: string
      enum:
      - page_view
      - search
      - search_click
    search_application.put_behavioral_analytics.AnalyticsAcknowledgeResponseBase:
      allOf:
      - "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
      - type: object
        properties:
          name:
            description: The name of the analytics collection created or updated
            allOf:
            - "$ref": "#/components/schemas/_types.Name"
        required:
        - name
    _global.search_mvt._types.ZoomLevel:
      type: number
    _global.search_mvt._types.Coordinate:
      type: number
    _global.search_mvt._types.GridAggregationType:
      type: string
      enum:
      - geotile
      - geohex
    _global.search_mvt._types.GridType:
      type: string
      enum:
      - grid
      - point
      - centroid
    _types.MapboxVectorTiles:
      type: object
    _global.search_shards.SearchShardsNodeAttributes:
      type: object
      properties:
        name:
          description: The human-readable identifier of the node.
          allOf:
          - "$ref": "#/components/schemas/_types.NodeName"
        ephemeral_id:
          description: The ephemeral ID of the node.
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        transport_address:
          description: The host and port where transport HTTP connections are accepted.
          allOf:
          - "$ref": "#/components/schemas/_types.TransportAddress"
        external_id:
          x-state: Generally available; Added in 8.3.0
          type: string
        attributes:
          description: Lists node attributes.
          type: object
          additionalProperties:
            type: string
        roles:
          allOf:
          - "$ref": "#/components/schemas/_types.NodeRoles"
        version:
          allOf:
          - "$ref": "#/components/schemas/_types.VersionString"
        min_index_version:
          type: number
        max_index_version:
          type: number
      required:
      - name
      - ephemeral_id
      - transport_address
      - external_id
      - attributes
      - roles
      - version
      - min_index_version
      - max_index_version
    _types.NodeShard:
      type: object
      properties:
        state:
          allOf:
          - "$ref": "#/components/schemas/indices.stats.ShardRoutingState"
        primary:
          type: boolean
        node:
          allOf:
          - "$ref": "#/components/schemas/_types.NodeName"
        shard:
          type: number
        index:
          allOf:
          - "$ref": "#/components/schemas/_types.IndexName"
        allocation_id:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/_types.Id"
        recovery_source:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/_types.Id"
        unassigned_info:
          allOf:
          - "$ref": "#/components/schemas/cluster.allocation_explain.UnassignedInformation"
        relocating_node:
          oneOf:
          - "$ref": "#/components/schemas/_types.NodeId"
          - nullable: true
            type: string
        relocation_failure_info:
          allOf:
          - "$ref": "#/components/schemas/_types.RelocationFailureInfo"
      required:
      - state
      - primary
      - shard
      - index
    _types.RelocationFailureInfo:
      type: object
      properties:
        failed_attempts:
          type: number
      required:
      - failed_attempts
    _global.search_shards.ShardStoreIndex:
      type: object
      properties:
        aliases:
          type: array
          items:
            "$ref": "#/components/schemas/_types.Name"
        filter:
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.QueryContainer"
    searchable_snapshots.cache_stats.Node:
      type: object
      properties:
        shared_cache:
          allOf:
          - "$ref": "#/components/schemas/searchable_snapshots.cache_stats.Shared"
      required:
      - shared_cache
    searchable_snapshots.cache_stats.Shared:
      type: object
      properties:
        reads:
          type: number
        bytes_read_in_bytes:
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        writes:
          type: number
        bytes_written_in_bytes:
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        evictions:
          type: number
        num_regions:
          type: number
        size_in_bytes:
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        region_size_in_bytes:
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
      required:
      - reads
      - bytes_read_in_bytes
      - writes
      - bytes_written_in_bytes
      - evictions
      - num_regions
      - size_in_bytes
      - region_size_in_bytes
    searchable_snapshots.mount.StorageOption:
      type: string
      enum:
      - full_copy
      - shared_cache
    searchable_snapshots.mount.MountedSnapshot:
      type: object
      properties:
        snapshot:
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        indices:
          allOf:
          - "$ref": "#/components/schemas/_types.Indices"
        shards:
          allOf:
          - "$ref": "#/components/schemas/_types.ShardStatistics"
      required:
      - snapshot
      - indices
      - shards
    searchable_snapshots._types.StatsLevel:
      type: string
      enum:
      - cluster
      - indices
      - shards
    security._types.GrantType:
      type: string
      enum:
      - password
      - access_token
    security._types.UserProfileWithMetadata:
      allOf:
      - "$ref": "#/components/schemas/security._types.UserProfile"
      - type: object
        properties:
          last_synchronized:
            type: number
          _doc:
            allOf:
            - "$ref": "#/components/schemas/security._types.UserProfileHitMetadata"
        required:
        - last_synchronized
        - _doc
    security._types.UserProfileHitMetadata:
      type: object
      properties:
        _primary_term:
          type: number
        _seq_no:
          allOf:
          - "$ref": "#/components/schemas/_types.SequenceNumber"
      required:
      - _primary_term
      - _seq_no
    security._types.UserProfile:
      type: object
      properties:
        uid:
          allOf:
          - "$ref": "#/components/schemas/security._types.UserProfileId"
        user:
          allOf:
          - "$ref": "#/components/schemas/security._types.UserProfileUser"
        data:
          type: object
          additionalProperties:
            type: object
        labels:
          type: object
          additionalProperties:
            type: object
        enabled:
          type: boolean
      required:
      - uid
      - user
      - data
      - labels
    security._types.UserProfileId:
      type: string
    security._types.UserProfileUser:
      type: object
      properties:
        email:
          oneOf:
          - type: string
          - nullable: true
            type: string
        full_name:
          oneOf:
          - "$ref": "#/components/schemas/_types.Name"
          - nullable: true
            type: string
        realm_name:
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        realm_domain:
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        roles:
          type: array
          items:
            type: string
        username:
          allOf:
          - "$ref": "#/components/schemas/_types.Username"
      required:
      - realm_name
      - roles
      - username
    security.authenticate.AuthenticateApiKey:
      type: object
      properties:
        id:
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        name:
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        managed_by:
          allOf:
          - "$ref": "#/components/schemas/security._types.ApiKeyManagedBy"
        internal:
          type: boolean
      required:
      - id
      - managed_by
    security._types.ApiKeyManagedBy:
      type: string
      enum:
      - cloud
      - elasticsearch
    security._types.RealmInfo:
      type: object
      properties:
        name:
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        type:
          type: string
      required:
      - name
      - type
    security.authenticate.Token:
      type: object
      properties:
        name:
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        type:
          x-state: Generally available; Added in 7.14.0
          type: string
      required:
      - name
    security._types.BulkError:
      type: object
      properties:
        count:
          description: The number of errors
          type: number
        details:
          description: Details about the errors, keyed by role name
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/_types.ErrorCause"
      required:
      - count
      - details
    security._types.RoleDescriptor:
      type: object
      properties:
        cluster:
          description: A list of cluster privileges. These privileges define the cluster
            level actions that API keys are able to execute.
          type: array
          items:
            "$ref": "#/components/schemas/security._types.ClusterPrivilege"
        indices:
          description: A list of indices permissions entries.
          type: array
          items:
            "$ref": "#/components/schemas/security._types.IndicesPrivileges"
        remote_indices:
          description: A list of indices permissions for remote clusters.
          x-state: Generally available; Added in 8.14.0
          type: array
          items:
            "$ref": "#/components/schemas/security._types.RemoteIndicesPrivileges"
        remote_cluster:
          description: |-
            A list of cluster permissions for remote clusters.
            NOTE: This is limited a subset of the cluster permissions.
          x-state: Generally available; Added in 8.15.0
          type: array
          items:
            "$ref": "#/components/schemas/security._types.RemoteClusterPrivileges"
        global:
          description: An object defining global privileges. A global privilege is
            a form of cluster privilege that is request-aware. Support for global
            privileges is currently limited to the management of application privileges.
          x-state: Generally available
          oneOf:
          - type: array
            items:
              "$ref": "#/components/schemas/security._types.GlobalPrivilege"
          - "$ref": "#/components/schemas/security._types.GlobalPrivilege"
        applications:
          description: A list of application privilege entries
          type: array
          items:
            "$ref": "#/components/schemas/security._types.ApplicationPrivileges"
        metadata:
          description: Optional meta-data. Within the metadata object, keys that begin
            with `_` are reserved for system usage.
          allOf:
          - "$ref": "#/components/schemas/_types.Metadata"
        run_as:
          externalDocs:
            url: https://www.elastic.co/docs/deploy-manage/users-roles/cluster-or-deployment-auth/submitting-requests-on-behalf-of-other-users
          description: |-
            A list of users that the API keys can impersonate.
            NOTE: In Elastic Cloud Serverless, the run-as feature is disabled.
            For API compatibility, you can still specify an empty `run_as` field, but a non-empty list will be rejected.
          type: array
          items:
            type: string
        description:
          description: Optional description of the role descriptor
          type: string
        restriction:
          description: Restriction for when the role descriptor is allowed to be effective.
          allOf:
          - "$ref": "#/components/schemas/security._types.Restriction"
        transient_metadata:
          type: object
          additionalProperties:
            type: object
    security._types.ClusterPrivilege:
      anyOf:
      - type: string
        enum:
        - all
        - cancel_task
        - create_snapshot
        - cross_cluster_replication
        - cross_cluster_search
        - delegate_pki
        - grant_api_key
        - manage
        - manage_api_key
        - manage_autoscaling
        - manage_behavioral_analytics
        - manage_ccr
        - manage_data_frame_transforms
        - manage_data_stream_global_retention
        - manage_enrich
        - manage_esql
        - manage_ilm
        - manage_index_templates
        - manage_inference
        - manage_ingest_pipelines
        - manage_logstash_pipelines
        - manage_ml
        - manage_oidc
        - manage_own_api_key
        - manage_pipeline
        - manage_rollup
        - manage_saml
        - manage_search_application
        - manage_search_query_rules
        - manage_search_synonyms
        - manage_security
        - manage_service_account
        - manage_slm
        - manage_token
        - manage_transform
        - manage_user_profile
        - manage_watcher
        - monitor
        - monitor_data_frame_transforms
        - monitor_data_stream_global_retention
        - monitor_enrich
        - monitor_esql
        - monitor_inference
        - monitor_ml
        - monitor_rollup
        - monitor_snapshot
        - monitor_stats
        - monitor_text_structure
        - monitor_transform
        - monitor_watcher
        - none
        - post_behavioral_analytics_event
        - read_ccr
        - read_fleet_secrets
        - read_ilm
        - read_pipeline
        - read_security
        - read_slm
        - transport_client
        - write_connector_secrets
        - write_fleet_secrets
      - type: string
    security._types.IndicesPrivileges:
      type: object
      properties:
        field_security:
          externalDocs:
            url: https://www.elastic.co/docs/deploy-manage/users-roles/cluster-or-deployment-auth/controlling-access-at-document-field-level
          description: The document fields that the owners of the role have read access
            to.
          allOf:
          - "$ref": "#/components/schemas/security._types.FieldSecurity"
        names:
          description: A list of indices (or index name patterns) to which the permissions
            in this entry apply.
          oneOf:
          - "$ref": "#/components/schemas/_types.IndexName"
          - type: array
            items:
              "$ref": "#/components/schemas/_types.IndexName"
        privileges:
          description: The index level privileges that owners of the role have on
            the specified indices.
          type: array
          items:
            "$ref": "#/components/schemas/security._types.IndexPrivilege"
        query:
          description: A search query that defines the documents the owners of the
            role have access to. A document within the specified indices must match
            this query for it to be accessible by the owners of the role.
          allOf:
          - "$ref": "#/components/schemas/security._types.IndicesPrivilegesQuery"
        allow_restricted_indices:
          description: Set to `true` if using wildcard or regular expressions for
            patterns that cover restricted indices. Implicitly, restricted indices
            have limited privileges that can cause pattern tests to fail. If restricted
            indices are explicitly included in the `names` list, Elasticsearch checks
            privileges against these indices regardless of the value set for `allow_restricted_indices`.
          default: false
          x-state: Generally available
          type: boolean
      required:
      - names
      - privileges
    security._types.FieldSecurity:
      type: object
      properties:
        except:
          allOf:
          - "$ref": "#/components/schemas/_types.Fields"
        grant:
          allOf:
          - "$ref": "#/components/schemas/_types.Fields"
    security._types.IndexPrivilege:
      anyOf:
      - type: string
        enum:
        - all
        - auto_configure
        - create
        - create_doc
        - create_index
        - cross_cluster_replication
        - cross_cluster_replication_internal
        - delete
        - delete_index
        - index
        - maintenance
        - manage
        - manage_data_stream_lifecycle
        - manage_follow_index
        - manage_ilm
        - manage_leader_index
        - monitor
        - none
        - read
        - read_cross_cluster
        - view_index_metadata
        - write
      - type: string
    security._types.IndicesPrivilegesQuery:
      description: |-
        While creating or updating a role you can provide either a JSON structure or a string to the API.
        However, the response provided by Elasticsearch will only be string with a json-as-text content.

        Since this is embedded in `IndicesPrivileges`, the same structure is used for clarity in both contexts.
      oneOf:
      - type: string
      - "$ref": "#/components/schemas/_types.query_dsl.QueryContainer"
      - "$ref": "#/components/schemas/security._types.RoleTemplateQuery"
    security._types.RoleTemplateQuery:
      type: object
      properties:
        template:
          externalDocs:
            url: https://www.elastic.co/docs/deploy-manage/users-roles/cluster-or-deployment-auth/controlling-access-at-document-field-level#templating-role-query
          description: |-
            When you create a role, you can specify a query that defines the document level security permissions. You can optionally
            use Mustache templates in the role query to insert the username of the current authenticated user into the role.
            Like other places in Elasticsearch that support templating or scripting, you can specify inline, stored, or file-based
            templates and define custom parameters. You access the details for the current authenticated user through the _user parameter.
          allOf:
          - "$ref": "#/components/schemas/security._types.RoleTemplateScript"
    security._types.RoleTemplateScript:
      type: object
      properties:
        source:
          allOf:
          - "$ref": "#/components/schemas/security._types.RoleTemplateInlineQuery"
        id:
          description: The `id` for a stored script.
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        params:
          description: |-
            Specifies any named parameters that are passed into the script as variables.
            Use parameters instead of hard-coded values to decrease compile time.
          type: object
          additionalProperties:
            type: object
        lang:
          description: |+
            Specifies the language the script is written in.

            Supported values include:
              - `painless`: Painless scripting language, purpose-built for Elasticsearch.
              - `expression`: Lucene’s expressions language, compiles a JavaScript expression to bytecode.
              - `mustache`: Mustache templated, used for templates.
              - `java`: Expert Java API

          default: painless
          allOf:
          - "$ref": "#/components/schemas/_types.ScriptLanguage"
        options:
          type: object
          additionalProperties:
            type: string
      x-model: true
      externalDocs:
        description: Templating a role query
        url: https://www.elastic.co/docs/deploy-manage/users-roles/cluster-or-deployment-auth/controlling-access-at-document-field-level#templating-role-query
    security._types.RoleTemplateInlineQuery:
      oneOf:
      - type: string
      - "$ref": "#/components/schemas/_types.query_dsl.QueryContainer"
    security._types.RemoteIndicesPrivileges:
      description: The subset of index level privileges that can be defined for remote
        clusters.
      type: object
      properties:
        clusters:
          description: A list of cluster aliases to which the permissions in this
            entry apply.
          allOf:
          - "$ref": "#/components/schemas/_types.Names"
        field_security:
          externalDocs:
            url: https://www.elastic.co/docs/deploy-manage/users-roles/cluster-or-deployment-auth/controlling-access-at-document-field-level
          description: The document fields that the owners of the role have read access
            to.
          allOf:
          - "$ref": "#/components/schemas/security._types.FieldSecurity"
        names:
          description: A list of indices (or index name patterns) to which the permissions
            in this entry apply.
          oneOf:
          - "$ref": "#/components/schemas/_types.IndexName"
          - type: array
            items:
              "$ref": "#/components/schemas/_types.IndexName"
        privileges:
          description: The index level privileges that owners of the role have on
            the specified indices.
          type: array
          items:
            "$ref": "#/components/schemas/security._types.IndexPrivilege"
        query:
          description: A search query that defines the documents the owners of the
            role have access to. A document within the specified indices must match
            this query for it to be accessible by the owners of the role.
          allOf:
          - "$ref": "#/components/schemas/security._types.IndicesPrivilegesQuery"
        allow_restricted_indices:
          description: Set to `true` if using wildcard or regular expressions for
            patterns that cover restricted indices. Implicitly, restricted indices
            have limited privileges that can cause pattern tests to fail. If restricted
            indices are explicitly included in the `names` list, Elasticsearch checks
            privileges against these indices regardless of the value set for `allow_restricted_indices`.
          default: false
          x-state: Generally available
          type: boolean
      required:
      - clusters
      - names
      - privileges
    security._types.RemoteClusterPrivileges:
      description: The subset of cluster level privileges that can be defined for
        remote clusters.
      type: object
      properties:
        clusters:
          description: A list of cluster aliases to which the permissions in this
            entry apply.
          allOf:
          - "$ref": "#/components/schemas/_types.Names"
        privileges:
          description: The cluster level privileges that owners of the role have on
            the remote cluster.
          type: array
          items:
            "$ref": "#/components/schemas/security._types.RemoteClusterPrivilege"
      required:
      - clusters
      - privileges
    security._types.RemoteClusterPrivilege:
      type: string
      enum:
      - monitor_enrich
      - monitor_stats
    security._types.GlobalPrivilege:
      type: object
      properties:
        application:
          allOf:
          - "$ref": "#/components/schemas/security._types.ApplicationGlobalUserPrivileges"
      required:
      - application
    security._types.ApplicationGlobalUserPrivileges:
      type: object
      properties:
        manage:
          allOf:
          - "$ref": "#/components/schemas/security._types.ManageUserPrivileges"
      required:
      - manage
    security._types.ManageUserPrivileges:
      type: object
      properties:
        applications:
          type: array
          items:
            type: string
      required:
      - applications
    security._types.ApplicationPrivileges:
      type: object
      properties:
        application:
          description: The name of the application to which this entry applies.
          type: string
        privileges:
          description: A list of strings, where each element is the name of an application
            privilege or action.
          type: array
          items:
            type: string
        resources:
          description: A list resources to which the privileges are applied.
          type: array
          items:
            type: string
      required:
      - application
      - privileges
      - resources
    security._types.Restriction:
      type: object
      properties:
        workflows:
          description: |-
            A list of workflows to which the API key is restricted.
            NOTE: In order to use a role restriction, an API key must be created with a single role descriptor.
          type: array
          items:
            "$ref": "#/components/schemas/security._types.RestrictionWorkflow"
      required:
      - workflows
    security._types.RestrictionWorkflow:
      anyOf:
      - type: string
        enum:
        - search_application_query
      - type: string
    security._types.ClusterNode:
      type: object
      properties:
        name:
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
      required:
      - name
    _types.Namespace:
      type: string
    _types.Service:
      type: string
    security._types.Access:
      type: object
      properties:
        replication:
          description: A list of indices permission entries for cross-cluster replication.
          type: array
          items:
            "$ref": "#/components/schemas/security._types.ReplicationAccess"
        search:
          description: A list of indices permission entries for cross-cluster search.
          type: array
          items:
            "$ref": "#/components/schemas/security._types.SearchAccess"
    security._types.ReplicationAccess:
      type: object
      properties:
        names:
          description: A list of indices (or index name patterns) to which the permissions
            in this entry apply.
          oneOf:
          - "$ref": "#/components/schemas/_types.IndexName"
          - type: array
            items:
              "$ref": "#/components/schemas/_types.IndexName"
        allow_restricted_indices:
          description: This needs to be set to true if the patterns in the names field
            should cover system indices.
          default: false
          type: boolean
      required:
      - names
    security._types.SearchAccess:
      type: object
      properties:
        field_security:
          externalDocs:
            url: https://www.elastic.co/docs/deploy-manage/users-roles/cluster-or-deployment-auth/controlling-access-at-document-field-level
          description: The document fields that the owners of the role have read access
            to.
          allOf:
          - "$ref": "#/components/schemas/security._types.FieldSecurity"
        names:
          description: A list of indices (or index name patterns) to which the permissions
            in this entry apply.
          oneOf:
          - "$ref": "#/components/schemas/_types.IndexName"
          - type: array
            items:
              "$ref": "#/components/schemas/_types.IndexName"
        query:
          description: A search query that defines the documents the owners of the
            role have access to. A document within the specified indices must match
            this query for it to be accessible by the owners of the role.
          allOf:
          - "$ref": "#/components/schemas/security._types.IndicesPrivilegesQuery"
        allow_restricted_indices:
          description: Set to `true` if using wildcard or regular expressions for
            patterns that cover restricted indices. Implicitly, restricted indices
            have limited privileges that can cause pattern tests to fail. If restricted
            indices are explicitly included in the `names` list, Elasticsearch checks
            privileges against these indices regardless of the value set for `allow_restricted_indices`.
          default: false
          x-state: Generally available
          type: boolean
      required:
      - names
    security.create_service_token.Token:
      type: object
      properties:
        name:
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        value:
          type: string
      required:
      - name
      - value
    security.delegate_pki.Authentication:
      type: object
      properties:
        username:
          type: string
        roles:
          type: array
          items:
            type: string
        full_name:
          oneOf:
          - type: string
          - nullable: true
            type: string
        email:
          oneOf:
          - type: string
          - nullable: true
            type: string
        token:
          type: object
          additionalProperties:
            type: string
        metadata:
          allOf:
          - "$ref": "#/components/schemas/_types.Metadata"
        enabled:
          type: boolean
        authentication_realm:
          allOf:
          - "$ref": "#/components/schemas/security.delegate_pki.AuthenticationRealm"
        lookup_realm:
          allOf:
          - "$ref": "#/components/schemas/security.delegate_pki.AuthenticationRealm"
        authentication_type:
          type: string
        api_key:
          type: object
          additionalProperties:
            type: string
      required:
      - username
      - roles
      - full_name
      - email
      - metadata
      - enabled
      - authentication_realm
      - lookup_realm
      - authentication_type
    security.delegate_pki.AuthenticationRealm:
      type: object
      properties:
        name:
          type: string
        type:
          type: string
        domain:
          type: string
      required:
      - name
      - type
    security.delete_privileges.FoundStatus:
      type: object
      properties:
        found:
          type: boolean
      required:
      - found
    security.enroll_kibana.Token:
      type: object
      properties:
        name:
          description: The name of the bearer token for the `elastic/kibana` service
            account.
          type: string
        value:
          description: |-
            The value of the bearer token for the `elastic/kibana` service account.
            Use this value to authenticate the service account with Elasticsearch.
          type: string
      required:
      - name
      - value
    security._types.ApiKey:
      type: object
      properties:
        id:
          description: Id for the API key
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        name:
          description: Name of the API key.
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        type:
          description: The type of the API key (e.g. `rest` or `cross_cluster`).
          x-state: Generally available; Added in 8.10.0
          allOf:
          - "$ref": "#/components/schemas/security._types.ApiKeyType"
        creation:
          description: Creation time for the API key in milliseconds.
          allOf:
          - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
        expiration:
          description: Expiration time for the API key in milliseconds.
          allOf:
          - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
        invalidated:
          description: |-
            Invalidation status for the API key.
            If the key has been invalidated, it has a value of `true`. Otherwise, it is `false`.
          type: boolean
        invalidation:
          description: If the key has been invalidated, invalidation time in milliseconds.
          x-state: Generally available; Added in 8.12.0
          allOf:
          - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
        username:
          description: Principal for which this API key was created
          allOf:
          - "$ref": "#/components/schemas/_types.Username"
        realm:
          description: Realm name of the principal for which this API key was created.
          type: string
        realm_type:
          description: Realm type of the principal for which this API key was created
          x-state: Generally available; Added in 8.14.0
          type: string
        metadata:
          description: Metadata of the API key
          x-state: Generally available; Added in 7.13.0
          allOf:
          - "$ref": "#/components/schemas/_types.Metadata"
        role_descriptors:
          description: |-
            The role descriptors assigned to this API key when it was created or last updated.
            An empty role descriptor means the API key inherits the owner user’s permissions.
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/security._types.RoleDescriptor"
        limited_by:
          description: |-
            The owner user’s permissions associated with the API key.
            It is a point-in-time snapshot captured at creation and subsequent updates.
            An API key’s effective permissions are an intersection of its assigned privileges and the owner user’s permissions.
          x-state: Generally available; Added in 8.5.0
          type: array
          items:
            type: object
            additionalProperties:
              "$ref": "#/components/schemas/security._types.RoleDescriptor"
        access:
          description: |-
            The access granted to cross-cluster API keys.
            The access is composed of permissions for cross cluster search and cross cluster replication.
            At least one of them must be specified.
            When specified, the new access assignment fully replaces the previously assigned access.
          x-state: Generally available; Added in 8.10.0
          allOf:
          - "$ref": "#/components/schemas/security._types.Access"
        certificate_identity:
          description: |-
            The certificate identity associated with a cross-cluster API key.
            Restricts the API key to connections authenticated by a specific TLS certificate.
            Only applicable to cross-cluster API keys.
          x-state: Generally available; Added in 9.3.0
          type: string
        profile_uid:
          description: The profile uid for the API key owner principal, if requested
            and if it exists
          x-state: Generally available; Added in 8.14.0
          type: string
        _sort:
          description: Sorting values when using the `sort` parameter with the `security.query_api_keys`
            API.
          allOf:
          - "$ref": "#/components/schemas/_types.SortResults"
      required:
      - id
      - name
      - type
      - creation
      - invalidated
      - username
      - realm
      - metadata
    security._types.ApiKeyType:
      type: string
      enum:
      - rest
      - cross_cluster
    security.put_privileges.Actions:
      type: object
      properties:
        actions:
          type: array
          items:
            type: string
        application:
          type: string
        name:
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        metadata:
          allOf:
          - "$ref": "#/components/schemas/_types.Metadata"
      required:
      - actions
    security.get_role.Role:
      type: object
      properties:
        cluster:
          type: array
          items:
            "$ref": "#/components/schemas/security._types.ClusterPrivilege"
        indices:
          type: array
          items:
            "$ref": "#/components/schemas/security._types.IndicesPrivileges"
        remote_indices:
          x-state: Generally available; Added in 8.14.0
          type: array
          items:
            "$ref": "#/components/schemas/security._types.RemoteIndicesPrivileges"
        remote_cluster:
          x-state: Generally available; Added in 8.15.0
          type: array
          items:
            "$ref": "#/components/schemas/security._types.RemoteClusterPrivileges"
        metadata:
          allOf:
          - "$ref": "#/components/schemas/_types.Metadata"
        description:
          type: string
        run_as:
          type: array
          items:
            type: string
        transient_metadata:
          type: object
          additionalProperties:
            type: object
        applications:
          type: array
          items:
            "$ref": "#/components/schemas/security._types.ApplicationPrivileges"
        role_templates:
          type: array
          items:
            "$ref": "#/components/schemas/security._types.RoleTemplate"
        global:
          x-state: Generally available; Added in 8.0.0
          type: object
          additionalProperties:
            type: object
            additionalProperties:
              type: object
              additionalProperties:
                type: array
                items:
                  type: string
      required:
      - cluster
      - indices
      - metadata
      - applications
    security._types.RoleTemplate:
      type: object
      properties:
        format:
          allOf:
          - "$ref": "#/components/schemas/security._types.TemplateFormat"
        template:
          allOf:
          - "$ref": "#/components/schemas/_types.Script"
      required:
      - template
    security._types.TemplateFormat:
      type: string
      enum:
      - string
      - json
    security._types.RoleMapping:
      type: object
      properties:
        enabled:
          type: boolean
        metadata:
          allOf:
          - "$ref": "#/components/schemas/_types.Metadata"
        roles:
          type: array
          items:
            type: string
        role_templates:
          type: array
          items:
            "$ref": "#/components/schemas/security._types.RoleTemplate"
        rules:
          allOf:
          - "$ref": "#/components/schemas/security._types.RoleMappingRule"
      required:
      - enabled
      - metadata
      - rules
    security._types.RoleMappingRule:
      type: object
      properties:
        any:
          type: array
          items:
            "$ref": "#/components/schemas/security._types.RoleMappingRule"
        all:
          type: array
          items:
            "$ref": "#/components/schemas/security._types.RoleMappingRule"
        field:
          type: object
          additionalProperties:
            oneOf:
            - "$ref": "#/components/schemas/_types.FieldValue"
            - type: array
              items:
                "$ref": "#/components/schemas/_types.FieldValue"
          minProperties: 1
          maxProperties: 1
        except:
          allOf:
          - "$ref": "#/components/schemas/security._types.RoleMappingRule"
      minProperties: 1
      maxProperties: 1
    security.get_service_accounts.RoleDescriptorWrapper:
      type: object
      properties:
        role_descriptor:
          allOf:
          - "$ref": "#/components/schemas/security._types.RoleDescriptorRead"
      required:
      - role_descriptor
    security._types.RoleDescriptorRead:
      type: object
      properties:
        cluster:
          description: A list of cluster privileges. These privileges define the cluster
            level actions that API keys are able to execute.
          type: array
          items:
            "$ref": "#/components/schemas/security._types.ClusterPrivilege"
        indices:
          description: A list of indices permissions entries.
          type: array
          items:
            "$ref": "#/components/schemas/security._types.IndicesPrivileges"
        remote_indices:
          description: A list of indices permissions for remote clusters.
          x-state: Generally available; Added in 8.14.0
          type: array
          items:
            "$ref": "#/components/schemas/security._types.RemoteIndicesPrivileges"
        remote_cluster:
          description: |-
            A list of cluster permissions for remote clusters.
            NOTE: This is limited a subset of the cluster permissions.
          x-state: Generally available; Added in 8.15.0
          type: array
          items:
            "$ref": "#/components/schemas/security._types.RemoteClusterPrivileges"
        global:
          description: An object defining global privileges. A global privilege is
            a form of cluster privilege that is request-aware. Support for global
            privileges is currently limited to the management of application privileges.
          x-state: Generally available
          oneOf:
          - type: array
            items:
              "$ref": "#/components/schemas/security._types.GlobalPrivilege"
          - "$ref": "#/components/schemas/security._types.GlobalPrivilege"
        applications:
          description: A list of application privilege entries
          type: array
          items:
            "$ref": "#/components/schemas/security._types.ApplicationPrivileges"
        metadata:
          description: Optional meta-data. Within the metadata object, keys that begin
            with `_` are reserved for system usage.
          allOf:
          - "$ref": "#/components/schemas/_types.Metadata"
        run_as:
          externalDocs:
            url: https://www.elastic.co/docs/deploy-manage/users-roles/cluster-or-deployment-auth/submitting-requests-on-behalf-of-other-users
          description: A list of users that the API keys can impersonate.
          type: array
          items:
            type: string
        description:
          description: An optional description of the role descriptor.
          type: string
        restriction:
          externalDocs:
            url: https://www.elastic.co/docs/deploy-manage/users-roles/cluster-or-deployment-auth/role-restriction
          description: A restriction for when the role descriptor is allowed to be
            effective.
          allOf:
          - "$ref": "#/components/schemas/security._types.Restriction"
        transient_metadata:
          type: object
          additionalProperties:
            type: object
      required:
      - cluster
      - indices
    security.get_service_credentials.NodesCredentials:
      type: object
      properties:
        _nodes:
          description: General status showing how nodes respond to the above collection
            request
          allOf:
          - "$ref": "#/components/schemas/_types.NodeStatistics"
        file_tokens:
          description: File-backed tokens collected from all nodes
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/security.get_service_credentials.NodesCredentialsFileToken"
      required:
      - _nodes
      - file_tokens
    security.get_service_credentials.NodesCredentialsFileToken:
      type: object
      properties:
        nodes:
          type: array
          items:
            type: string
      required:
      - nodes
    security._types.SecuritySettings:
      type: object
      properties:
        index:
          allOf:
          - "$ref": "#/components/schemas/indices._types.IndexSettings"
    security._types.NodeSecurityStats:
      type: object
      properties:
        roles:
          description: Role statistics.
          allOf:
          - "$ref": "#/components/schemas/security._types.RolesStats"
      required:
      - roles
    security._types.RolesStats:
      type: object
      properties:
        dls:
          description: Document-level security (DLS) statistics.
          allOf:
          - "$ref": "#/components/schemas/xpack.usage.SecurityRolesDls"
      required:
      - dls
    xpack.usage.SecurityRolesDls:
      type: object
      properties:
        bit_set_cache:
          allOf:
          - "$ref": "#/components/schemas/xpack.usage.SecurityRolesDlsBitSetCache"
      required:
      - bit_set_cache
    xpack.usage.SecurityRolesDlsBitSetCache:
      type: object
      properties:
        count:
          description: Number of entries in the cache.
          type: number
        memory:
          description: Human-readable amount of memory taken up by the cache.
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        memory_in_bytes:
          description: Memory taken up by the cache in bytes.
          allOf:
          - "$ref": "#/components/schemas/_types.ulong"
        hits:
          description: Total number of cache hits.
          x-state: Generally available; Added in 9.2.0
          type: number
        misses:
          description: Total number of cache misses.
          x-state: Generally available; Added in 9.2.0
          type: number
        evictions:
          description: Total number of cache evictions.
          x-state: Generally available; Added in 9.2.0
          type: number
        hits_time_in_millis:
          description: Total combined time spent in cache for hits in milliseconds.
          x-state: Generally available; Added in 9.2.0
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
        misses_time_in_millis:
          description: Total combined time spent in cache for misses in milliseconds.
          x-state: Generally available; Added in 9.2.0
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
      required:
      - count
      - memory_in_bytes
      - hits
      - misses
      - evictions
      - hits_time_in_millis
      - misses_time_in_millis
    security.get_token.AccessTokenGrantType:
      type: string
      enum:
      - password
      - client_credentials
      - _kerberos
      - refresh_token
    security.get_token.AuthenticatedUser:
      allOf:
      - "$ref": "#/components/schemas/security._types.User"
      - type: object
        properties:
          authentication_realm:
            allOf:
            - "$ref": "#/components/schemas/security.get_token.UserRealm"
          lookup_realm:
            allOf:
            - "$ref": "#/components/schemas/security.get_token.UserRealm"
          authentication_provider:
            allOf:
            - "$ref": "#/components/schemas/security.get_token.AuthenticationProvider"
          authentication_type:
            type: string
        required:
        - authentication_realm
        - lookup_realm
        - authentication_type
    security.get_token.UserRealm:
      type: object
      properties:
        name:
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        type:
          type: string
      required:
      - name
      - type
    security.get_token.AuthenticationProvider:
      type: object
      properties:
        type:
          type: string
        name:
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
      required:
      - type
      - name
    security._types.User:
      type: object
      properties:
        email:
          oneOf:
          - type: string
          - nullable: true
            type: string
        full_name:
          oneOf:
          - "$ref": "#/components/schemas/_types.Name"
          - nullable: true
            type: string
        metadata:
          allOf:
          - "$ref": "#/components/schemas/_types.Metadata"
        roles:
          type: array
          items:
            type: string
        username:
          allOf:
          - "$ref": "#/components/schemas/_types.Username"
        enabled:
          type: boolean
        profile_uid:
          allOf:
          - "$ref": "#/components/schemas/security._types.UserProfileId"
      required:
      - metadata
      - roles
      - username
      - enabled
    security._types.UserIndicesPrivileges:
      type: object
      properties:
        field_security:
          externalDocs:
            url: https://www.elastic.co/docs/deploy-manage/users-roles/cluster-or-deployment-auth/controlling-access-at-document-field-level
          description: The document fields that the owners of the role have read access
            to.
          type: array
          items:
            "$ref": "#/components/schemas/security._types.FieldSecurity"
        names:
          description: A list of indices (or index name patterns) to which the permissions
            in this entry apply.
          oneOf:
          - "$ref": "#/components/schemas/_types.IndexName"
          - type: array
            items:
              "$ref": "#/components/schemas/_types.IndexName"
        privileges:
          description: The index level privileges that owners of the role have on
            the specified indices.
          type: array
          items:
            "$ref": "#/components/schemas/security._types.IndexPrivilege"
        query:
          description: Search queries that define the documents the user has access
            to. A document within the specified indices must match these queries for
            it to be accessible by the owners of the role.
          type: array
          items:
            "$ref": "#/components/schemas/security._types.IndicesPrivilegesQuery"
        allow_restricted_indices:
          description: Set to `true` if using wildcard or regular expressions for
            patterns that cover restricted indices. Implicitly, restricted indices
            have limited privileges that can cause pattern tests to fail. If restricted
            indices are explicitly included in the `names` list, Elasticsearch checks
            privileges against these indices regardless of the value set for `allow_restricted_indices`.
          type: boolean
      required:
      - names
      - privileges
      - allow_restricted_indices
    security._types.RemoteUserIndicesPrivileges:
      type: object
      properties:
        field_security:
          externalDocs:
            url: https://www.elastic.co/docs/deploy-manage/users-roles/cluster-or-deployment-auth/controlling-access-at-document-field-level
          description: The document fields that the owners of the role have read access
            to.
          type: array
          items:
            "$ref": "#/components/schemas/security._types.FieldSecurity"
        names:
          description: A list of indices (or index name patterns) to which the permissions
            in this entry apply.
          oneOf:
          - "$ref": "#/components/schemas/_types.IndexName"
          - type: array
            items:
              "$ref": "#/components/schemas/_types.IndexName"
        privileges:
          description: The index level privileges that owners of the role have on
            the specified indices.
          type: array
          items:
            "$ref": "#/components/schemas/security._types.IndexPrivilege"
        query:
          description: Search queries that define the documents the user has access
            to. A document within the specified indices must match these queries for
            it to be accessible by the owners of the role.
          type: array
          items:
            "$ref": "#/components/schemas/security._types.IndicesPrivilegesQuery"
        allow_restricted_indices:
          description: Set to `true` if using wildcard or regular expressions for
            patterns that cover restricted indices. Implicitly, restricted indices
            have limited privileges that can cause pattern tests to fail. If restricted
            indices are explicitly included in the `names` list, Elasticsearch checks
            privileges against these indices regardless of the value set for `allow_restricted_indices`.
          type: boolean
        clusters:
          type: array
          items:
            type: string
      required:
      - names
      - privileges
      - allow_restricted_indices
      - clusters
    security.get_user_profile.GetUserProfileErrors:
      type: object
      properties:
        count:
          type: number
        details:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/_types.ErrorCause"
      required:
      - count
      - details
    security.grant_api_key.GrantApiKey:
      type: object
      properties:
        name:
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        expiration:
          description: Expiration time for the API key. By default, API keys never
            expire.
          allOf:
          - "$ref": "#/components/schemas/_types.DurationLarge"
        role_descriptors:
          description: |-
            The role descriptors for this API key.
            When it is not specified or is an empty array, the API key has a point in time snapshot of permissions of the specified user or access token.
            If you supply role descriptors, the resultant permissions are an intersection of API keys permissions and the permissions of the user or access token.
          oneOf:
          - type: object
            additionalProperties:
              "$ref": "#/components/schemas/security._types.RoleDescriptor"
          - type: array
            items:
              type: object
              additionalProperties:
                "$ref": "#/components/schemas/security._types.RoleDescriptor"
        metadata:
          description: |-
            Arbitrary metadata that you want to associate with the API key.
            It supports nested data structure.
            Within the `metadata` object, keys beginning with `_` are reserved for system usage.
          allOf:
          - "$ref": "#/components/schemas/_types.Metadata"
      required:
      - name
    security.grant_api_key.ApiKeyGrantType:
      type: string
      enum:
      - access_token
      - password
    security.has_privileges.ApplicationPrivilegesCheck:
      type: object
      properties:
        application:
          description: The name of the application.
          type: string
        privileges:
          description: |-
            A list of the privileges that you want to check for the specified resources.
            It may be either application privilege names or the names of actions that are granted by those privileges
          type: array
          items:
            type: string
        resources:
          description: A list of resource names against which the privileges should
            be checked.
          type: array
          items:
            type: string
      required:
      - application
      - privileges
      - resources
    security.has_privileges.IndexPrivilegesCheck:
      type: object
      properties:
        names:
          description: A list of indices.
          allOf:
          - "$ref": "#/components/schemas/_types.Indices"
        privileges:
          description: A list of the privileges that you want to check for the specified
            indices.
          type: array
          items:
            "$ref": "#/components/schemas/security._types.IndexPrivilege"
        allow_restricted_indices:
          description: |-
            This needs to be set to `true` (default is `false`) if using wildcards or regexps for patterns that cover restricted indices.
            Implicitly, restricted indices do not match index patterns because restricted indices usually have limited privileges and including them in pattern tests would render most such tests false.
            If restricted indices are explicitly included in the names list, privileges will be checked against them regardless of the value of `allow_restricted_indices`.
          type: boolean
      required:
      - names
      - privileges
    security.has_privileges.ApplicationsPrivileges:
      type: object
      additionalProperties:
        "$ref": "#/components/schemas/security.has_privileges.ResourcePrivileges"
    security.has_privileges.ResourcePrivileges:
      type: object
      additionalProperties:
        "$ref": "#/components/schemas/security.has_privileges.Privileges"
    security.has_privileges.Privileges:
      type: object
      additionalProperties:
        type: boolean
    security.has_privileges_user_profile.PrivilegesCheck:
      type: object
      properties:
        application:
          type: array
          items:
            "$ref": "#/components/schemas/security.has_privileges.ApplicationPrivilegesCheck"
        cluster:
          description: A list of the cluster privileges that you want to check.
          type: array
          items:
            "$ref": "#/components/schemas/security._types.ClusterPrivilege"
        index:
          type: array
          items:
            "$ref": "#/components/schemas/security.has_privileges.IndexPrivilegesCheck"
    security.has_privileges_user_profile.HasPrivilegesUserProfileErrors:
      type: object
      properties:
        count:
          type: number
        details:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/_types.ErrorCause"
      required:
      - count
      - details
    security._types.CreatedStatus:
      type: object
      properties:
        created:
          type: boolean
      required:
      - created
    security.query_api_keys.ApiKeyAggregationContainer:
      allOf:
      - type: object
        properties:
          aggregations:
            description: |-
              Sub-aggregations for this aggregation.
              Only applies to bucket aggregations.
            type: object
            additionalProperties:
              "$ref": "#/components/schemas/security.query_api_keys.ApiKeyAggregationContainer"
          meta:
            allOf:
            - "$ref": "#/components/schemas/_types.Metadata"
      - type: object
        properties:
          cardinality:
            description: A single-value metrics aggregation that calculates an approximate
              count of distinct values.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.CardinalityAggregation"
          composite:
            description: |-
              A multi-bucket aggregation that creates composite buckets from different sources.
              Unlike the other multi-bucket aggregations, you can use the `composite` aggregation to paginate *all* buckets from a multi-level aggregation efficiently.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.CompositeAggregation"
          date_range:
            description: A multi-bucket value source based aggregation that enables
              the user to define a set of date ranges - each representing a bucket.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.DateRangeAggregation"
          filter:
            description: A single bucket aggregation that narrows the set of documents
              to those that match a query.
            allOf:
            - "$ref": "#/components/schemas/security.query_api_keys.ApiKeyQueryContainer"
          filters:
            description: A multi-bucket aggregation where each bucket contains the
              documents that match a query.
            allOf:
            - "$ref": "#/components/schemas/security.query_api_keys.ApiKeyFiltersAggregation"
          missing:
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.MissingAggregation"
          range:
            description: A multi-bucket value source based aggregation that enables
              the user to define a set of ranges - each representing a bucket.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.RangeAggregation"
          terms:
            description: A multi-bucket value source based aggregation where buckets
              are dynamically built - one per unique value.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.TermsAggregation"
          value_count:
            description: A single-value metrics aggregation that counts the number
              of values that are extracted from the aggregated documents.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.ValueCountAggregation"
        minProperties: 1
        maxProperties: 1
    security.query_api_keys.ApiKeyQueryContainer:
      type: object
      properties:
        bool:
          description: Matches documents matching boolean combinations of other queries.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.BoolQuery"
        exists:
          description: Returns documents that contain an indexed value for a field.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.ExistsQuery"
        ids:
          description: |-
            Returns documents based on their IDs.
            This query uses document IDs stored in the `_id` field.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.IdsQuery"
        match:
          description: |-
            Returns documents that match a provided text, number, date or boolean value.
            The provided text is analyzed before matching.
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/_types.query_dsl.MatchQuery"
          minProperties: 1
          maxProperties: 1
        match_all:
          description: Matches all documents, giving them all a `_score` of 1.0.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.MatchAllQuery"
        prefix:
          description: Returns documents that contain a specific prefix in a provided
            field.
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/_types.query_dsl.PrefixQuery"
          minProperties: 1
          maxProperties: 1
        range:
          description: Returns documents that contain terms within a provided range.
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/_types.query_dsl.RangeQuery"
          minProperties: 1
          maxProperties: 1
        simple_query_string:
          description: Returns documents based on a provided query string, using a
            parser with a limited but fault-tolerant syntax.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.SimpleQueryStringQuery"
        term:
          description: |-
            Returns documents that contain an exact term in a provided field.
            To return a document, the query term must exactly match the queried field's value, including whitespace and capitalization.
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/_types.query_dsl.TermQuery"
          minProperties: 1
          maxProperties: 1
        terms:
          description: |-
            Returns documents that contain one or more exact terms in a provided field.
            To return a document, one or more terms must exactly match a field value, including whitespace and capitalization.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.TermsQuery"
        wildcard:
          description: Returns documents that contain terms matching a wildcard pattern.
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/_types.query_dsl.WildcardQuery"
          minProperties: 1
          maxProperties: 1
      minProperties: 1
      maxProperties: 1
    security.query_api_keys.ApiKeyFiltersAggregation:
      allOf:
      - "$ref": "#/components/schemas/_types.aggregations.BucketAggregationBase"
      - type: object
        properties:
          filters:
            description: Collection of queries from which to build buckets.
            allOf:
            - "$ref": "#/components/schemas/_types.aggregations.BucketsApiKeyQueryContainer"
          other_bucket:
            description: Set to `true` to add a bucket to the response which will
              contain all documents that do not match any of the given filters.
            type: boolean
          other_bucket_key:
            description: The key with which the other bucket is returned.
            default: _other_
            type: string
          keyed:
            description: |-
              By default, the named filters aggregation returns the buckets as an object.
              Set to `false` to return the buckets as an array of objects.
            default: true
            type: boolean
    _types.aggregations.BucketsApiKeyQueryContainer:
      description: |-
        Aggregation buckets. By default they are returned as an array, but if the aggregation has keys configured for
        the different buckets, the result is a dictionary.
      oneOf:
      - type: object
        additionalProperties:
          "$ref": "#/components/schemas/security.query_api_keys.ApiKeyQueryContainer"
      - type: array
        items:
          "$ref": "#/components/schemas/security.query_api_keys.ApiKeyQueryContainer"
    security.query_api_keys.ApiKeyAggregate:
      oneOf:
      - "$ref": "#/components/schemas/_types.aggregations.CardinalityAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.ValueCountAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.StringTermsAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.LongTermsAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.DoubleTermsAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.UnmappedTermsAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.MultiTermsAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.MissingAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.FilterAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.FiltersAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.RangeAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.DateRangeAggregate"
      - "$ref": "#/components/schemas/_types.aggregations.CompositeAggregate"
    security.query_role.RoleQueryContainer:
      type: object
      properties:
        bool:
          description: matches roles matching boolean combinations of other queries.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.BoolQuery"
        exists:
          description: Returns roles that contain an indexed value for a field.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.ExistsQuery"
        ids:
          description: |-
            Returns roles based on their IDs.
            This query uses role document IDs stored in the `_id` field.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.IdsQuery"
        match:
          description: |-
            Returns roles that match a provided text, number, date or boolean value.
            The provided text is analyzed before matching.
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/_types.query_dsl.MatchQuery"
          minProperties: 1
          maxProperties: 1
        match_all:
          description: Matches all roles, giving them all a `_score` of 1.0.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.MatchAllQuery"
        prefix:
          description: Returns roles that contain a specific prefix in a provided
            field.
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/_types.query_dsl.PrefixQuery"
          minProperties: 1
          maxProperties: 1
        range:
          description: Returns roles that contain terms within a provided range.
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/_types.query_dsl.RangeQuery"
          minProperties: 1
          maxProperties: 1
        simple_query_string:
          description: Returns roles based on a provided query string, using a parser
            with a limited but fault-tolerant syntax.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.SimpleQueryStringQuery"
        term:
          description: |-
            Returns roles that contain an exact term in a provided field.
            To return a document, the query term must exactly match the queried field's value, including whitespace and capitalization.
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/_types.query_dsl.TermQuery"
          minProperties: 1
          maxProperties: 1
        terms:
          description: |-
            Returns roles that contain one or more exact terms in a provided field.
            To return a document, one or more terms must exactly match a field value, including whitespace and capitalization.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.TermsQuery"
        wildcard:
          description: Returns roles that contain terms matching a wildcard pattern.
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/_types.query_dsl.WildcardQuery"
          minProperties: 1
          maxProperties: 1
      minProperties: 1
      maxProperties: 1
    security.query_role.QueryRole:
      allOf:
      - "$ref": "#/components/schemas/security._types.RoleDescriptor"
      - type: object
        properties:
          _sort:
            allOf:
            - "$ref": "#/components/schemas/_types.SortResults"
          name:
            description: Name of the role.
            type: string
        required:
        - name
    security.query_user.UserQueryContainer:
      type: object
      properties:
        ids:
          description: |-
            Returns users based on their IDs.
            This query uses the user document IDs stored in the `_id` field.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.IdsQuery"
        bool:
          description: matches users matching boolean combinations of other queries.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.BoolQuery"
        exists:
          description: Returns users that contain an indexed value for a field.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.ExistsQuery"
        match:
          description: |-
            Returns users that match a provided text, number, date or boolean value.
            The provided text is analyzed before matching.
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/_types.query_dsl.MatchQuery"
          minProperties: 1
          maxProperties: 1
        match_all:
          description: Matches all users, giving them all a `_score` of 1.0.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.MatchAllQuery"
        prefix:
          description: Returns users that contain a specific prefix in a provided
            field.
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/_types.query_dsl.PrefixQuery"
          minProperties: 1
          maxProperties: 1
        range:
          description: Returns users that contain terms within a provided range.
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/_types.query_dsl.RangeQuery"
          minProperties: 1
          maxProperties: 1
        simple_query_string:
          description: Returns users based on a provided query string, using a parser
            with a limited but fault-tolerant syntax.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.SimpleQueryStringQuery"
        term:
          description: |-
            Returns users that contain an exact term in a provided field.
            To return a document, the query term must exactly match the queried field's value, including whitespace and capitalization.
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/_types.query_dsl.TermQuery"
          minProperties: 1
          maxProperties: 1
        terms:
          description: |-
            Returns users that contain one or more exact terms in a provided field.
            To return a document, one or more terms must exactly match a field value, including whitespace and capitalization.
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.TermsQuery"
        wildcard:
          description: Returns users that contain terms matching a wildcard pattern.
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/_types.query_dsl.WildcardQuery"
          minProperties: 1
          maxProperties: 1
      minProperties: 1
      maxProperties: 1
    security.query_user.QueryUser:
      allOf:
      - "$ref": "#/components/schemas/security._types.User"
      - type: object
        properties:
          _sort:
            allOf:
            - "$ref": "#/components/schemas/_types.SortResults"
    security.suggest_user_profiles.Hint:
      type: object
      properties:
        uids:
          description: A list of profile UIDs to match against.
          type: array
          items:
            "$ref": "#/components/schemas/security._types.UserProfileId"
        labels:
          description: |-
            A single key-value pair to match against the labels section
            of a profile. A profile is considered matching if it matches
            at least one of the strings.
          type: object
          additionalProperties:
            oneOf:
            - type: string
            - type: array
              items:
                type: string
    security.suggest_user_profiles.TotalUserProfiles:
      type: object
      properties:
        value:
          type: number
        relation:
          allOf:
          - "$ref": "#/components/schemas/_types.RelationName"
      required:
      - value
      - relation
    simulate.ingest.MergeType:
      type: string
      enum:
      - index
      - template
    simulate.ingest.SimulateIngestDocumentResult:
      type: object
      properties:
        doc:
          allOf:
          - "$ref": "#/components/schemas/simulate.ingest.IngestDocumentSimulation"
    simulate.ingest.IngestDocumentSimulation:
      description: |-
        The results of ingest simulation on a single document. The _source of the document contains
        the results after running all pipelines listed in executed_pipelines on the document. The
        list of executed pipelines is derived from the pipelines that would be executed if this
        document had been ingested into _index.
      type: object
      properties:
        _id:
          description: Identifier for the document.
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        _index:
          description: Name of the index that the document would be indexed into if
            this were not a simulation.
          allOf:
          - "$ref": "#/components/schemas/_types.IndexName"
        _source:
          description: JSON body for the document.
          type: object
          additionalProperties:
            type: object
        _version:
          description: ''
          allOf:
          - "$ref": "#/components/schemas/_spec_utils.StringifiedVersionNumber"
        executed_pipelines:
          description: A list of the names of the pipelines executed on this document.
          type: array
          items:
            type: string
        ignored_fields:
          description: |-
            A list of the fields that would be ignored at the indexing step. For example, a field whose
            value is larger than the allowed limit would make it through all of the pipelines, but
            would not be indexed into Elasticsearch.
          type: array
          items:
            type: object
            additionalProperties:
              type: string
        error:
          description: |-
            Any error resulting from simulatng ingest on this doc. This can be an error generated by
            executing a processor, or a mapping validation error when simulating indexing the resulting
            doc.
          allOf:
          - "$ref": "#/components/schemas/_types.ErrorCause"
        effective_mapping:
          allOf:
          - "$ref": "#/components/schemas/_types.mapping.TypeMapping"
      required:
      - _id
      - _index
      - _source
      - _version
      - executed_pipelines
    slm._types.SnapshotLifecycle:
      type: object
      properties:
        in_progress:
          allOf:
          - "$ref": "#/components/schemas/slm._types.InProgress"
        last_failure:
          allOf:
          - "$ref": "#/components/schemas/slm._types.Invocation"
        last_success:
          allOf:
          - "$ref": "#/components/schemas/slm._types.Invocation"
        modified_date:
          description: The last time the policy was modified.
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
        modified_date_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
        next_execution:
          description: The next time the policy will run.
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
        next_execution_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
        policy:
          allOf:
          - "$ref": "#/components/schemas/slm._types.Policy"
        version:
          description: |-
            The version of the snapshot policy.
            Only the latest version is stored and incremented when the policy is updated.
          allOf:
          - "$ref": "#/components/schemas/_types.VersionNumber"
        stats:
          allOf:
          - "$ref": "#/components/schemas/slm._types.Statistics"
      required:
      - modified_date_millis
      - next_execution_millis
      - policy
      - version
      - stats
    slm._types.InProgress:
      type: object
      properties:
        name:
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        start_time_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
        state:
          type: string
        uuid:
          allOf:
          - "$ref": "#/components/schemas/_types.Uuid"
      required:
      - name
      - start_time_millis
      - state
      - uuid
    slm._types.Invocation:
      type: object
      properties:
        snapshot_name:
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        time:
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
      required:
      - snapshot_name
      - time
    slm._types.Policy:
      type: object
      properties:
        config:
          allOf:
          - "$ref": "#/components/schemas/slm._types.Configuration"
        name:
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        repository:
          type: string
        retention:
          allOf:
          - "$ref": "#/components/schemas/slm._types.Retention"
        schedule:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.CronExpression"
      required:
      - name
      - repository
      - schedule
    slm._types.Configuration:
      type: object
      properties:
        ignore_unavailable:
          description: If false, the snapshot fails if any data stream or index in
            indices is missing or closed. If true, the snapshot ignores missing or
            closed data streams and indices.
          default: false
          type: boolean
        indices:
          description: |-
            A comma-separated list of data streams and indices to include in the snapshot. Multi-index syntax is supported.
            By default, a snapshot includes all data streams and indices in the cluster. If this argument is provided, the snapshot only includes the specified data streams and clusters.
          allOf:
          - "$ref": "#/components/schemas/_types.Indices"
        include_global_state:
          description: If true, the current global state is included in the snapshot.
          default: true
          type: boolean
        feature_states:
          description: |-
            A list of feature states to be included in this snapshot. A list of features available for inclusion in the snapshot and their descriptions be can be retrieved using the get features API.
            Each feature state includes one or more system indices containing data necessary for the function of that feature. Providing an empty array will include no feature states in the snapshot, regardless of the value of include_global_state. By default, all available feature states will be included in the snapshot if include_global_state is true, or no feature states if include_global_state is false.
          type: array
          items:
            type: string
        metadata:
          description: Attaches arbitrary metadata to the snapshot, such as a record
            of who took the snapshot, why it was taken, or any other useful data.
            Metadata must be less than 1024 bytes.
          allOf:
          - "$ref": "#/components/schemas/_types.Metadata"
        partial:
          description: If false, the entire snapshot will fail if one or more indices
            included in the snapshot do not have all primary shards available.
          default: false
          type: boolean
    slm._types.Retention:
      type: object
      properties:
        expire_after:
          description: Time period after which a snapshot is considered expired and
            eligible for deletion. SLM deletes expired snapshots based on the slm.retention_schedule.
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        max_count:
          description: Maximum number of snapshots to retain, even if the snapshots
            have not yet expired. If the number of snapshots in the repository exceeds
            this limit, the policy retains the most recent snapshots and deletes older
            snapshots.
          type: number
        min_count:
          description: Minimum number of snapshots to retain, even if the snapshots
            have expired.
          type: number
      required:
      - expire_after
      - max_count
      - min_count
    watcher._types.CronExpression:
      type: string
    slm._types.Statistics:
      type: object
      properties:
        retention_deletion_time:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        retention_deletion_time_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
        retention_failed:
          type: number
        retention_runs:
          type: number
        retention_timed_out:
          type: number
        policy:
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        total_snapshots_deleted:
          type: number
        total_snapshot_deletion_failures:
          type: number
        total_snapshots_failed:
          type: number
        total_snapshots_taken:
          type: number
    slm._types.SnapshotPolicyStats:
      type: object
      properties:
        policy:
          type: string
        snapshots_taken:
          type: number
        snapshots_failed:
          type: number
        snapshots_deleted:
          type: number
        snapshot_deletion_failures:
          type: number
      required:
      - policy
      - snapshots_taken
      - snapshots_failed
      - snapshots_deleted
      - snapshot_deletion_failures
    snapshot.cleanup_repository.CleanupRepositoryResults:
      type: object
      properties:
        deleted_blobs:
          description: |-
            The number of binary large objects (blobs) removed from the snapshot repository during cleanup operations.
            A non-zero value indicates that unreferenced blobs were found and subsequently cleaned up.
          type: number
        deleted_bytes:
          description: The number of bytes freed by cleanup operations.
          type: number
      required:
      - deleted_blobs
      - deleted_bytes
    snapshot._types.SnapshotInfo:
      type: object
      properties:
        data_streams:
          type: array
          items:
            type: string
        duration:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        duration_in_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
        end_time:
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
        end_time_in_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
        failures:
          type: array
          items:
            "$ref": "#/components/schemas/snapshot._types.SnapshotShardFailure"
        include_global_state:
          type: boolean
        indices:
          type: array
          items:
            "$ref": "#/components/schemas/_types.IndexName"
        index_details:
          x-state: Generally available; Added in 7.13.0
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/snapshot._types.IndexDetails"
        metadata:
          allOf:
          - "$ref": "#/components/schemas/_types.Metadata"
        reason:
          type: string
        repository:
          x-state: Generally available; Added in 7.14.0
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        snapshot:
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        shards:
          allOf:
          - "$ref": "#/components/schemas/_types.ShardStatistics"
        start_time:
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
        start_time_in_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
        state:
          type: string
        uuid:
          allOf:
          - "$ref": "#/components/schemas/_types.Uuid"
        version:
          allOf:
          - "$ref": "#/components/schemas/_types.VersionString"
        version_id:
          allOf:
          - "$ref": "#/components/schemas/_types.VersionNumber"
        feature_states:
          type: array
          items:
            "$ref": "#/components/schemas/snapshot._types.InfoFeatureState"
      required:
      - data_streams
      - snapshot
      - uuid
    snapshot._types.SnapshotShardFailure:
      type: object
      properties:
        index:
          allOf:
          - "$ref": "#/components/schemas/_types.IndexName"
        node_id:
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        reason:
          type: string
        shard_id:
          type: number
        index_uuid:
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        status:
          type: string
      required:
      - index
      - reason
      - shard_id
      - index_uuid
      - status
    snapshot._types.IndexDetails:
      type: object
      properties:
        shard_count:
          type: number
        size:
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        size_in_bytes:
          type: number
        max_segments_per_shard:
          type: number
      required:
      - shard_count
      - size_in_bytes
      - max_segments_per_shard
    snapshot._types.InfoFeatureState:
      type: object
      properties:
        feature_name:
          type: string
        indices:
          allOf:
          - "$ref": "#/components/schemas/_types.Indices"
      required:
      - feature_name
      - indices
    snapshot._types.Repository:
      discriminator:
        propertyName: type
        mapping:
          azure: "#/components/schemas/snapshot._types.AzureRepository"
          fs: "#/components/schemas/snapshot._types.SharedFileSystemRepository"
          gcs: "#/components/schemas/snapshot._types.GcsRepository"
          s3: "#/components/schemas/snapshot._types.S3Repository"
          source: "#/components/schemas/snapshot._types.SourceOnlyRepository"
          url: "#/components/schemas/snapshot._types.ReadOnlyUrlRepository"
      oneOf:
      - "$ref": "#/components/schemas/snapshot._types.AzureRepository"
      - "$ref": "#/components/schemas/snapshot._types.GcsRepository"
      - "$ref": "#/components/schemas/snapshot._types.S3Repository"
      - "$ref": "#/components/schemas/snapshot._types.SharedFileSystemRepository"
      - "$ref": "#/components/schemas/snapshot._types.ReadOnlyUrlRepository"
      - "$ref": "#/components/schemas/snapshot._types.SourceOnlyRepository"
    snapshot._types.AzureRepository:
      allOf:
      - "$ref": "#/components/schemas/snapshot._types.RepositoryBase"
      - type: object
        properties:
          type:
            externalDocs:
              url: https://www.elastic.co/docs/deploy-manage/tools/snapshot-and-restore/azure-repository
            description: The Azure repository type.
            type: string
            enum:
            - azure
          settings:
            description: The repository settings.
            allOf:
            - "$ref": "#/components/schemas/snapshot._types.AzureRepositorySettings"
        required:
        - type
    snapshot._types.AzureRepositorySettings:
      allOf:
      - "$ref": "#/components/schemas/snapshot._types.RepositorySettingsBase"
      - type: object
        properties:
          base_path:
            description: |-
              The path to the repository data within the container.
              It defaults to the root directory.

              NOTE: Don't set `base_path` when configuring a snapshot repository for Elastic Cloud Enterprise.
              Elastic Cloud Enterprise automatically generates the `base_path` for each deployment so that multiple deployments can share the same bucket.
            type: string
          client:
            description: The name of the Azure repository client to use.
            default: default
            type: string
          container:
            description: The Azure container.
            default: elasticsearch-snapshots
            type: string
          delete_objects_max_size:
            description: |-
              The maxmimum batch size, between 1 and 256, used for `BlobBatch` requests.
              Defaults to 256 which is the maximum number supported by the Azure blob batch API.
            default: 256
            type: number
          location_mode:
            description: |-
              Either `primary_only` or `secondary_only`.
              Note that if you set it to `secondary_only`, it will force `readonly` to `true`.
            default: primary_only
            type: string
          max_concurrent_batch_deletes:
            description: |-
              The maximum number of concurrent batch delete requests that will be submitted for any individual bulk delete with `BlobBatch`.
              Note that the effective number of concurrent deletes is further limited by the Azure client connection and event loop thread limits.
              Defaults to 10, minimum is 1, maximum is 100.
            default: 10
            type: number
          readonly:
            description: |-
              If `true`, the repository is read-only.
              The cluster can retrieve and restore snapshots from the repository but not write to the repository or create snapshots in it.

              Only a cluster with write access can create snapshots in the repository.
              All other clusters connected to the repository should have the `readonly` parameter set to `true`.
              If `false`, the cluster can write to the repository and create snapshots in it.

              IMPORTANT: If you register the same snapshot repository with multiple clusters, only one cluster should have write access to the repository.
              Having multiple clusters write to the repository at the same time risks corrupting the contents of the repository.
            default: false
            type: boolean
    snapshot._types.RepositorySettingsBase:
      type: object
      properties:
        chunk_size:
          description: |-
            Big files can be broken down into multiple smaller blobs in the blob store during snapshotting.
            It is not recommended to change this value from its default unless there is an explicit reason for limiting the size of blobs in the repository.
            Setting a value lower than the default can result in an increased number of API calls to the blob store during snapshot create and restore operations compared to using the default value and thus make both operations slower and more costly.
            Specify the chunk size as a byte unit, for example: `10MB`, `5KB`, 500B.
            The default varies by repository type.
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        compress:
          description: |-
            When set to `true`, metadata files are stored in compressed format.
            This setting doesn't affect index files that are already compressed by default.
          default: true
          type: boolean
        max_restore_bytes_per_sec:
          description: |-
            The maximum snapshot restore rate per node.
            It defaults to unlimited.
            Note that restores are also throttled through recovery settings.
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        max_snapshot_bytes_per_sec:
          description: |-
            The maximum snapshot creation rate per node.
            It defaults to 40mb per second.
            Note that if the recovery settings for managed services are set, then it defaults to unlimited, and the rate is additionally throttled through recovery settings.
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
    snapshot._types.RepositoryBase:
      type: object
      properties:
        uuid:
          allOf:
          - "$ref": "#/components/schemas/_types.Uuid"
    snapshot._types.GcsRepository:
      allOf:
      - "$ref": "#/components/schemas/snapshot._types.RepositoryBase"
      - type: object
        properties:
          type:
            externalDocs:
              url: https://www.elastic.co/docs/deploy-manage/tools/snapshot-and-restore/google-cloud-storage-repository
            description: The Google Cloud Storage repository type.
            type: string
            enum:
            - gcs
          settings:
            description: The repository settings.
            allOf:
            - "$ref": "#/components/schemas/snapshot._types.GcsRepositorySettings"
        required:
        - type
        - settings
    snapshot._types.GcsRepositorySettings:
      allOf:
      - "$ref": "#/components/schemas/snapshot._types.RepositorySettingsBase"
      - type: object
        properties:
          bucket:
            description: The name of the bucket to be used for snapshots.
            type: string
          application_name:
            deprecated: true
            description: The name used by the client when it uses the Google Cloud
              Storage service.
            type: string
          base_path:
            description: |-
              The path to the repository data within the bucket.
              It defaults to the root of the bucket.

              NOTE: Don't set `base_path` when configuring a snapshot repository for Elastic Cloud Enterprise.
              Elastic Cloud Enterprise automatically generates the `base_path` for each deployment so that multiple deployments can share the same bucket.
            type: string
          client:
            description: The name of the client to use to connect to Google Cloud
              Storage.
            default: default
            type: string
          readonly:
            description: |-
              If `true`, the repository is read-only.
              The cluster can retrieve and restore snapshots from the repository but not write to the repository or create snapshots in it.

              Only a cluster with write access can create snapshots in the repository.
              All other clusters connected to the repository should have the `readonly` parameter set to `true`.

              If `false`, the cluster can write to the repository and create snapshots in it.

              IMPORTANT: If you register the same snapshot repository with multiple clusters, only one cluster should have write access to the repository.
              Having multiple clusters write to the repository at the same time risks corrupting the contents of the repository.
            default: false
            type: boolean
        required:
        - bucket
    snapshot._types.S3Repository:
      allOf:
      - "$ref": "#/components/schemas/snapshot._types.RepositoryBase"
      - type: object
        properties:
          type:
            externalDocs:
              url: https://www.elastic.co/docs/deploy-manage/tools/snapshot-and-restore/s3-repository
            description: The S3 repository type.
            type: string
            enum:
            - s3
          settings:
            description: |-
              The repository settings.

              NOTE: In addition to the specified settings, you can also use all non-secure client settings in the repository settings.
              In this case, the client settings found in the repository settings will be merged with those of the named client used by the repository.
              Conflicts between client and repository settings are resolved by the repository settings taking precedence over client settings.
            allOf:
            - "$ref": "#/components/schemas/snapshot._types.S3RepositorySettings"
        required:
        - type
        - settings
    snapshot._types.S3RepositorySettings:
      allOf:
      - "$ref": "#/components/schemas/snapshot._types.RepositorySettingsBase"
      - type: object
        properties:
          bucket:
            externalDocs:
              url: https://docs.aws.amazon.com/AmazonS3/latest/userguide/BucketRestrictions.html#bucketnamingrules
            description: |-
              The name of the S3 bucket to use for snapshots.
              The bucket name must adhere to Amazon's S3 bucket naming rules.
            type: string
          base_path:
            description: |-
              The path to the repository data within its bucket.
              It defaults to an empty string, meaning that the repository is at the root of the bucket.
              The value of this setting should not start or end with a forward slash (`/`).

              NOTE: Don't set base_path when configuring a snapshot repository for Elastic Cloud Enterprise.
              Elastic Cloud Enterprise automatically generates the `base_path` for each deployment so that multiple deployments may share the same bucket.
            type: string
          buffer_size:
            description: |-
              The minimum threshold below which the chunk is uploaded using a single request.
              Beyond this threshold, the S3 repository will use the AWS Multipart Upload API to split the chunk into several parts, each of `buffer_size` length, and to upload each part in its own request.
              Note that setting a buffer size lower than 5mb is not allowed since it will prevent the use of the Multipart API and may result in upload errors.
              It is also not possible to set a buffer size greater than 5gb as it is the maximum upload size allowed by S3.
              Defaults to `100mb` or 5% of JVM heap, whichever is smaller.
            allOf:
            - "$ref": "#/components/schemas/_types.ByteSize"
          canned_acl:
            externalDocs:
              url: https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html#canned-acl
            description: |-
              The S3 repository supports all S3 canned ACLs: `private`, `public-read`, `public-read-write`, `authenticated-read`, `log-delivery-write`, `bucket-owner-read`, `bucket-owner-full-control`.
              You could specify a canned ACL using the `canned_acl` setting.
              When the S3 repository creates buckets and objects, it adds the canned ACL into the buckets and objects.
            default: private
            type: string
          client:
            description: The name of the S3 client to use to connect to S3.
            default: default
            type: string
          delete_objects_max_size:
            externalDocs:
              url: https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjects.html
            description: |-
              The maxmimum batch size, between 1 and 1000, used for `DeleteObjects` requests.
              Defaults to 1000 which is the maximum number supported by the  AWS DeleteObjects API.
            default: 1000
            type: number
          get_register_retry_delay:
            description: The time to wait before trying again if an attempt to read
              a linearizable register fails.
            default: 5s
            allOf:
            - "$ref": "#/components/schemas/_types.Duration"
          max_multipart_parts:
            description: |-
              The maximum number of parts that Elasticsearch will write during a multipart upload of a single object.
              Files which are larger than `buffer_size × max_multipart_parts` will be chunked into several smaller objects.
              Elasticsearch may also split a file across multiple objects to satisfy other constraints such as the `chunk_size` limit.
              Defaults to `10000` which is the maximum number of parts in a multipart upload in AWS S3.
            default: 10000
            type: number
          max_multipart_upload_cleanup_size:
            externalDocs:
              url: https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html
            description: |-
              The maximum number of possibly-dangling multipart uploads to clean up in each batch of snapshot deletions.
              Defaults to 1000 which is the maximum number supported by the AWS ListMultipartUploads API.
              If set to `0`, Elasticsearch will not attempt to clean up dangling multipart uploads.
            default: 1000
            type: number
          readonly:
            description: |-
              If true, the repository is read-only.
              The cluster can retrieve and restore snapshots from the repository but not write to the repository or create snapshots in it.

              Only a cluster with write access can create snapshots in the repository.
              All other clusters connected to the repository should have the `readonly` parameter set to `true`.

              If `false`, the cluster can write to the repository and create snapshots in it.

              IMPORTANT: If you register the same snapshot repository with multiple clusters, only one cluster should have write access to the repository.
              Having multiple clusters write to the repository at the same time risks corrupting the contents of the repository.
            default: false
            type: boolean
          server_side_encryption:
            description: When set to `true`, files are encrypted on server side using
              an AES256 algorithm.
            default: false
            type: boolean
          storage_class:
            externalDocs:
              url: https://www.elastic.co/docs/deploy-manage/tools/snapshot-and-restore/s3-repository#repository-s3-storage-classes
            description: |-
              The S3 storage class for objects written to the repository.
              Values may be `standard`, `reduced_redundancy`, `standard_ia`, `onezone_ia`, and `intelligent_tiering`.
            default: standard
            type: string
          throttled_delete_retry.delay_increment:
            description: |-
              The delay before the first retry and the amount the delay is incremented by on each subsequent retry.
              The default is 50ms and the minimum is 0ms.
            default: 50ms
            allOf:
            - "$ref": "#/components/schemas/_types.Duration"
          throttled_delete_retry.maximum_delay:
            description: |-
              The upper bound on how long the delays between retries will grow to.
              The default is 5s and the minimum is 0ms.
            default: 5s
            allOf:
            - "$ref": "#/components/schemas/_types.Duration"
          throttled_delete_retry.maximum_number_of_retries:
            description: |-
              The number times to retry a throttled snapshot deletion.
              The default is 10 and the minimum value is 0 which will disable retries altogether.
              Note that if retries are enabled in the Azure client, each of these retries comprises that many client-level retries.
            type: number
        required:
        - bucket
    snapshot._types.SharedFileSystemRepository:
      allOf:
      - "$ref": "#/components/schemas/snapshot._types.RepositoryBase"
      - type: object
        properties:
          type:
            externalDocs:
              url: https://www.elastic.co/docs/deploy-manage/tools/snapshot-and-restore/shared-file-system-repository
            description: The shared file system repository type.
            type: string
            enum:
            - fs
          settings:
            description: The repository settings.
            allOf:
            - "$ref": "#/components/schemas/snapshot._types.SharedFileSystemRepositorySettings"
        required:
        - type
        - settings
    snapshot._types.SharedFileSystemRepositorySettings:
      allOf:
      - "$ref": "#/components/schemas/snapshot._types.RepositorySettingsBase"
      - type: object
        properties:
          location:
            description: |-
              The location of the shared filesystem used to store and retrieve snapshots.
              This location must be registered in the `path.repo` setting on all master and data nodes in the cluster.
              Unlike `path.repo`, this setting supports only a single file path.
            type: string
          max_number_of_snapshots:
            description: |-
              The maximum number of snapshots the repository can contain.
              The default is `Integer.MAX_VALUE`, which is 2^31-1 or `2147483647`.
            default: 2147483647
            type: number
          readonly:
            description: |-
              If `true`, the repository is read-only.
              The cluster can retrieve and restore snapshots from the repository but not write to the repository or create snapshots in it.

              Only a cluster with write access can create snapshots in the repository.
              All other clusters connected to the repository should have the `readonly` parameter set to `true`.

              If `false`, the cluster can write to the repository and create snapshots in it.

              IMPORTANT: If you register the same snapshot repository with multiple clusters, only one cluster should have write access to the repository.
              Having multiple clusters write to the repository at the same time risks corrupting the contents of the repository.
            default: false
            type: boolean
        required:
        - location
    snapshot._types.ReadOnlyUrlRepository:
      allOf:
      - "$ref": "#/components/schemas/snapshot._types.RepositoryBase"
      - type: object
        properties:
          type:
            externalDocs:
              url: https://www.elastic.co/docs/deploy-manage/tools/snapshot-and-restore/read-only-url-repository
            description: The read-only URL repository type.
            type: string
            enum:
            - url
          settings:
            description: The repository settings.
            allOf:
            - "$ref": "#/components/schemas/snapshot._types.ReadOnlyUrlRepositorySettings"
        required:
        - type
        - settings
    snapshot._types.ReadOnlyUrlRepositorySettings:
      allOf:
      - "$ref": "#/components/schemas/snapshot._types.RepositorySettingsBase"
      - type: object
        properties:
          http_max_retries:
            description: The maximum number of retries for HTTP and HTTPS URLs.
            default: 5
            type: number
          http_socket_timeout:
            description: The maximum wait time for data transfers over a connection.
            default: 50s
            allOf:
            - "$ref": "#/components/schemas/_types.Duration"
          max_number_of_snapshots:
            description: |-
              The maximum number of snapshots the repository can contain.
              The default is `Integer.MAX_VALUE`, which is 2^31-1 or `2147483647`.
            default: 2147483647
            type: number
          url:
            description: |-
              The URL location of the root of the shared filesystem repository.
              The following protocols are supported:

              * `file`
              * `ftp`
              * `http`
              * `https`
              * `jar`

              URLs using the HTTP, HTTPS, or FTP protocols must be explicitly allowed with the `repositories.url.allowed_urls` cluster setting.
              This setting supports wildcards in the place of a host, path, query, or fragment in the URL.

              URLs using the file protocol must point to the location of a shared filesystem accessible to all master and data nodes in the cluster.
              This location must be registered in the `path.repo` setting.
              You don't need to register URLs using the FTP, HTTP, HTTPS, or JAR protocols in the `path.repo` setting.
            type: string
        required:
        - url
    snapshot._types.SourceOnlyRepository:
      allOf:
      - "$ref": "#/components/schemas/snapshot._types.RepositoryBase"
      - type: object
        properties:
          type:
            externalDocs:
              url: https://www.elastic.co/docs/deploy-manage/tools/snapshot-and-restore/source-only-repository
            description: The source-only repository type.
            type: string
            enum:
            - source
          settings:
            description: The repository settings.
            allOf:
            - "$ref": "#/components/schemas/snapshot._types.SourceOnlyRepositorySettings"
        required:
        - type
        - settings
    snapshot._types.SourceOnlyRepositorySettings:
      allOf:
      - "$ref": "#/components/schemas/snapshot._types.RepositorySettingsBase"
      - type: object
        properties:
          delegate_type:
            description: |-
              The delegated repository type. For valid values, refer to the `type` parameter.
              Source repositories can use `settings` properties for its delegated repository type.
            type: string
          max_number_of_snapshots:
            description: |-
              The maximum number of snapshots the repository can contain.
              The default is `Integer.MAX_VALUE`, which is 2^31-1 or `2147483647`.
            default: 2147483647
            type: number
          read_only:
            description: |-
              If `true`, the repository is read-only.
              The cluster can retrieve and restore snapshots from the repository but not write to the repository or create snapshots in it.

              Only a cluster with write access can create snapshots in the repository.
              All other clusters connected to the repository should have the `readonly` parameter set to `true`.

              If `false`, the cluster can write to the repository and create snapshots in it.

              IMPORTANT: If you register the same snapshot repository with multiple clusters, only one cluster should have write access to the repository.
              Having multiple clusters write to the repository at the same time risks corrupting the contents of the repository.
            default: false
            type: boolean
    snapshot._types.SnapshotSort:
      type: string
      enum:
      - start_time
      - duration
      - name
      - index_count
      - repository
      - shard_count
      - failed_shard_count
    snapshot._types.SnapshotState:
      type: string
      enum:
      - IN_PROGRESS
      - SUCCESS
      - FAILED
      - PARTIAL
      - INCOMPATIBLE
    snapshot.get.SnapshotResponseItem:
      type: object
      properties:
        repository:
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        snapshots:
          type: array
          items:
            "$ref": "#/components/schemas/snapshot._types.SnapshotInfo"
        error:
          allOf:
          - "$ref": "#/components/schemas/_types.ErrorCause"
      required:
      - repository
    snapshot.repository_analyze.SnapshotNodeInfo:
      type: object
      properties:
        id:
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        name:
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
      required:
      - id
      - name
    snapshot.repository_analyze.DetailsInfo:
      type: object
      properties:
        blob:
          description: A description of the blob that was written and read.
          allOf:
          - "$ref": "#/components/schemas/snapshot.repository_analyze.BlobDetails"
        overwrite_elapsed:
          description: |-
            The elapsed time spent overwriting the blob.
            If the blob was not overwritten, this information is omitted.
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        overwrite_elapsed_nanos:
          description: |-
            The elapsed time spent overwriting the blob, in nanoseconds.
            If the blob was not overwritten, this information is omitted.
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitNanos"
        write_elapsed:
          description: The elapsed time spent writing the blob.
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        write_elapsed_nanos:
          description: The elapsed time spent writing the blob, in nanoseconds.
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitNanos"
        write_throttled:
          description: The length of time spent waiting for the `max_snapshot_bytes_per_sec`
            (or `indices.recovery.max_bytes_per_sec` if the recovery settings for
            managed services are set) throttle while writing the blob.
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        write_throttled_nanos:
          description: The length of time spent waiting for the `max_snapshot_bytes_per_sec`
            (or `indices.recovery.max_bytes_per_sec` if the recovery settings for
            managed services are set) throttle while writing the blob, in nanoseconds.
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitNanos"
        writer_node:
          description: The node which wrote the blob and coordinated the read operations.
          allOf:
          - "$ref": "#/components/schemas/snapshot.repository_analyze.SnapshotNodeInfo"
      required:
      - blob
      - write_elapsed
      - write_elapsed_nanos
      - write_throttled
      - write_throttled_nanos
      - writer_node
    snapshot.repository_analyze.BlobDetails:
      type: object
      properties:
        name:
          description: The name of the blob.
          type: string
        overwritten:
          description: |-
            Indicates whether the blob was overwritten while the read operations were ongoing.
              /**
          type: boolean
        read_early:
          type: boolean
        read_end:
          description: The position, in bytes, at which read operations completed.
          type: number
        read_start:
          description: The position, in bytes, at which read operations started.
          type: number
        reads:
          description: A description of every read operation performed on the blob.
          allOf:
          - "$ref": "#/components/schemas/snapshot.repository_analyze.ReadBlobDetails"
        size:
          description: The size of the blob.
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        size_bytes:
          description: The size of the blob in bytes.
          type: number
      required:
      - name
      - overwritten
      - read_early
      - read_end
      - read_start
      - reads
      - size
      - size_bytes
    snapshot.repository_analyze.ReadBlobDetails:
      type: object
      properties:
        before_write_complete:
          description: Indicates whether the read operation may have started before
            the write operation was complete.
          type: boolean
        elapsed:
          description: |-
            The length of time spent reading the blob.
            If the blob was not found, this detail is omitted.
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        elapsed_nanos:
          description: |-
            The length of time spent reading the blob, in nanoseconds.
            If the blob was not found, this detail is omitted.
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitNanos"
        first_byte_time:
          description: |-
            The length of time waiting for the first byte of the read operation to be received.
            If the blob was not found, this detail is omitted.
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        first_byte_time_nanos:
          description: |-
            The length of time waiting for the first byte of the read operation to be received, in nanoseconds.
            If the blob was not found, this detail is omitted.
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitNanos"
        found:
          description: |-
            Indicates whether the blob was found by the read operation.
            If the read was started before the write completed or the write was ended before completion, it might be false.
          type: boolean
        node:
          description: The node that performed the read operation.
          allOf:
          - "$ref": "#/components/schemas/snapshot.repository_analyze.SnapshotNodeInfo"
        throttled:
          description: |-
            The length of time spent waiting due to the `max_restore_bytes_per_sec` or `indices.recovery.max_bytes_per_sec` throttles during the read of the blob.
            If the blob was not found, this detail is omitted.
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        throttled_nanos:
          description: |-
            The length of time spent waiting due to the `max_restore_bytes_per_sec` or `indices.recovery.max_bytes_per_sec` throttles during the read of the blob, in nanoseconds.
            If the blob was not found, this detail is omitted.
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitNanos"
      required:
      - first_byte_time_nanos
      - found
      - node
    snapshot.repository_analyze.SummaryInfo:
      type: object
      properties:
        read:
          description: A collection of statistics that summarise the results of the
            read operations in the test.
          allOf:
          - "$ref": "#/components/schemas/snapshot.repository_analyze.ReadSummaryInfo"
        write:
          description: A collection of statistics that summarise the results of the
            write operations in the test.
          allOf:
          - "$ref": "#/components/schemas/snapshot.repository_analyze.WriteSummaryInfo"
      required:
      - read
      - write
    snapshot.repository_analyze.ReadSummaryInfo:
      type: object
      properties:
        count:
          description: The number of read operations performed in the test.
          type: number
        max_wait:
          description: The maximum time spent waiting for the first byte of any read
            request to be received.
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        max_wait_nanos:
          description: The maximum time spent waiting for the first byte of any read
            request to be received, in nanoseconds.
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitNanos"
        total_elapsed:
          description: The total elapsed time spent on reading blobs in the test.
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        total_elapsed_nanos:
          description: The total elapsed time spent on reading blobs in the test,
            in nanoseconds.
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitNanos"
        total_size:
          description: The total size of all the blobs or partial blobs read in the
            test.
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        total_size_bytes:
          description: The total size of all the blobs or partial blobs read in the
            test, in bytes.
          type: number
        total_throttled:
          description: The total time spent waiting due to the `max_restore_bytes_per_sec`
            or `indices.recovery.max_bytes_per_sec` throttles.
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        total_throttled_nanos:
          description: The total time spent waiting due to the `max_restore_bytes_per_sec`
            or `indices.recovery.max_bytes_per_sec` throttles, in nanoseconds.
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitNanos"
        total_wait:
          description: The total time spent waiting for the first byte of each read
            request to be received.
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        total_wait_nanos:
          description: The total time spent waiting for the first byte of each read
            request to be received, in nanoseconds.
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitNanos"
      required:
      - count
      - max_wait
      - max_wait_nanos
      - total_elapsed
      - total_elapsed_nanos
      - total_size
      - total_size_bytes
      - total_throttled
      - total_throttled_nanos
      - total_wait
      - total_wait_nanos
    snapshot.repository_analyze.WriteSummaryInfo:
      type: object
      properties:
        count:
          description: The number of write operations performed in the test.
          type: number
        total_elapsed:
          description: The total elapsed time spent on writing blobs in the test.
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        total_elapsed_nanos:
          description: The total elapsed time spent on writing blobs in the test,
            in nanoseconds.
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitNanos"
        total_size:
          description: The total size of all the blobs written in the test.
          allOf:
          - "$ref": "#/components/schemas/_types.ByteSize"
        total_size_bytes:
          description: The total size of all the blobs written in the test, in bytes.
          type: number
        total_throttled:
          description: The total time spent waiting due to the `max_snapshot_bytes_per_sec`
            throttle.
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        total_throttled_nanos:
          description: The total time spent waiting due to the `max_snapshot_bytes_per_sec`
            throttle, in nanoseconds.
          type: number
      required:
      - count
      - total_elapsed
      - total_elapsed_nanos
      - total_size
      - total_size_bytes
      - total_throttled
      - total_throttled_nanos
    snapshot.restore.SnapshotRestore:
      type: object
      properties:
        indices:
          type: array
          items:
            "$ref": "#/components/schemas/_types.IndexName"
        snapshot:
          type: string
        shards:
          allOf:
          - "$ref": "#/components/schemas/_types.ShardStatistics"
      required:
      - indices
      - snapshot
      - shards
    snapshot._types.Status:
      type: object
      properties:
        include_global_state:
          description: Indicates whether the current cluster state is included in
            the snapshot.
          type: boolean
        indices:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/snapshot._types.SnapshotIndexStats"
        repository:
          description: The name of the repository that includes the snapshot.
          type: string
        shards_stats:
          description: Statistics for the shards in the snapshot.
          allOf:
          - "$ref": "#/components/schemas/snapshot._types.ShardsStats"
        snapshot:
          description: The name of the snapshot.
          type: string
        state:
          description: |-
            The current snapshot state:

            * `FAILED`: The snapshot finished with an error and failed to store any data.
            * `STARTED`: The snapshot is currently running.
            * `SUCCESS`: The snapshot completed.
          type: string
        stats:
          description: Details about the number (`file_count`) and size (`size_in_bytes`)
            of files included in the snapshot.
          allOf:
          - "$ref": "#/components/schemas/snapshot._types.SnapshotStats"
        uuid:
          description: The universally unique identifier (UUID) for the snapshot.
          allOf:
          - "$ref": "#/components/schemas/_types.Uuid"
      required:
      - include_global_state
      - indices
      - repository
      - shards_stats
      - snapshot
      - state
      - stats
      - uuid
    snapshot._types.SnapshotIndexStats:
      type: object
      properties:
        shards:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/snapshot._types.SnapshotShardsStatus"
        shards_stats:
          allOf:
          - "$ref": "#/components/schemas/snapshot._types.ShardsStats"
        stats:
          allOf:
          - "$ref": "#/components/schemas/snapshot._types.SnapshotStats"
      required:
      - shards
      - shards_stats
      - stats
    snapshot._types.SnapshotShardsStatus:
      type: object
      properties:
        stage:
          description: |2+


            Supported values include:
              - `DONE`: The number of shards in the snapshot that were successfully stored in the repository.
              - `FAILURE`: The number of shards in the snapshot that were not successfully stored in the repository.
              - `FINALIZE`: The number of shards in the snapshot that are in the finalizing stage of being stored in the repository.
              - `INIT`: The number of shards in the snapshot that are in the initializing stage of being stored in the repository.
              - `STARTED`: The number of shards in the snapshot that are in the started stage of being stored in the repository.

          allOf:
          - "$ref": "#/components/schemas/snapshot._types.ShardsStatsStage"
        stats:
          allOf:
          - "$ref": "#/components/schemas/snapshot._types.ShardsStatsSummary"
      required:
      - stage
      - stats
    snapshot._types.ShardsStatsStage:
      type: string
      enum:
      - DONE
      - FAILURE
      - FINALIZE
      - INIT
      - STARTED
    snapshot._types.ShardsStatsSummary:
      type: object
      properties:
        incremental:
          allOf:
          - "$ref": "#/components/schemas/snapshot._types.ShardsStatsSummaryItem"
        total:
          allOf:
          - "$ref": "#/components/schemas/snapshot._types.ShardsStatsSummaryItem"
        start_time_in_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
        time:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        time_in_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
      required:
      - incremental
      - total
      - start_time_in_millis
      - time_in_millis
    snapshot._types.ShardsStatsSummaryItem:
      type: object
      properties:
        file_count:
          type: number
        size_in_bytes:
          type: number
      required:
      - file_count
      - size_in_bytes
    snapshot._types.ShardsStats:
      type: object
      properties:
        done:
          description: The number of shards that initialized, started, and finalized
            successfully.
          type: number
        failed:
          description: The number of shards that failed to be included in the snapshot.
          type: number
        finalizing:
          description: The number of shards that are finalizing but are not done.
          type: number
        initializing:
          description: The number of shards that are still initializing.
          type: number
        started:
          description: The number of shards that have started but are not finalized.
          type: number
        total:
          description: The total number of shards included in the snapshot.
          type: number
      required:
      - done
      - failed
      - finalizing
      - initializing
      - started
      - total
    snapshot._types.SnapshotStats:
      type: object
      properties:
        incremental:
          description: |-
            The number and size of files that still need to be copied as part of the incremental snapshot.
            For completed snapshots, this property indicates the number and size of files that were not already in the repository and were copied as part of the incremental snapshot.
          allOf:
          - "$ref": "#/components/schemas/snapshot._types.FileCountSnapshotStats"
        start_time_in_millis:
          description: The time, in milliseconds, when the snapshot creation process
            started.
          allOf:
          - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
        time:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        time_in_millis:
          description: The total time, in milliseconds, that it took for the snapshot
            process to complete.
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
        total:
          description: The total number and size of files that are referenced by the
            snapshot.
          allOf:
          - "$ref": "#/components/schemas/snapshot._types.FileCountSnapshotStats"
      required:
      - incremental
      - start_time_in_millis
      - time_in_millis
      - total
    snapshot._types.FileCountSnapshotStats:
      type: object
      properties:
        file_count:
          type: number
        size_in_bytes:
          type: number
      required:
      - file_count
      - size_in_bytes
    snapshot.verify_repository.CompactNodeInfo:
      type: object
      properties:
        name:
          description: |-
            A human-readable name for the node.
            You can set this name using the `node.name` property in `elasticsearch.yml`.
            The default value is the machine's hostname.
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
      required:
      - name
    sql._types.Column:
      type: object
      properties:
        name:
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        type:
          type: string
      required:
      - name
      - type
    sql._types.Row:
      type: array
      items:
        type: object
    sql.query.SqlFormat:
      type: string
      enum:
      - csv
      - json
      - tsv
      - txt
      - yaml
      - cbor
      - smile
    ssl.certificates.CertificateInformation:
      type: object
      properties:
        alias:
          description: |-
            If the path refers to a container file (a jks keystore, or a PKCS#12 file), it is the alias of the certificate.
            Otherwise, it is null.
          oneOf:
          - type: string
          - nullable: true
            type: string
        expiry:
          description: The ISO formatted date of the certificate's expiry (not-after)
            date.
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
        format:
          description: |-
            The format of the file.
            Valid values include `jks`, `PKCS12`, and `PEM`.
          type: string
        has_private_key:
          description: Indicates whether Elasticsearch has access to the private key
            for this certificate.
          type: boolean
        issuer:
          description: The Distinguished Name of the certificate's issuer.
          type: string
        path:
          description: The path to the certificate, as configured in the `elasticsearch.yml`
            file.
          type: string
        serial_number:
          description: The hexadecimal representation of the certificate's serial
            number.
          type: string
        subject_dn:
          description: The Distinguished Name of the certificate's subject.
          type: string
      required:
      - alias
      - expiry
      - format
      - has_private_key
      - path
      - serial_number
      - subject_dn
    streams._types.StreamType:
      type: string
      enum:
      - logs
      - logs.otel
      - logs.ecs
    streams.status.StreamStatus:
      type: object
      properties:
        enabled:
          description: If true, the stream feature is enabled.
          type: boolean
      required:
      - enabled
    synonyms._types.SynonymsUpdateResult:
      type: object
      properties:
        result:
          description: The update operation result.
          allOf:
          - "$ref": "#/components/schemas/_types.Result"
        reload_analyzers_details:
          description: |-
            Updating synonyms in a synonym set can reload the associated analyzers in case refresh is set to true.
            This information is the analyzers reloading result.
          allOf:
          - "$ref": "#/components/schemas/indices.reload_search_analyzers.ReloadResult"
      required:
      - result
    synonyms._types.SynonymRuleRead:
      type: object
      properties:
        id:
          description: Synonym Rule identifier
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        synonyms:
          externalDocs:
            url: https://www.elastic.co/docs/reference/text-analysis/analysis-synonym-graph-tokenfilter#_solr_format_2
          description: Synonyms, in Solr format, that conform the synonym rule.
          allOf:
          - "$ref": "#/components/schemas/synonyms._types.SynonymString"
      required:
      - id
      - synonyms
    synonyms._types.SynonymString:
      type: string
    synonyms.get_synonyms_sets.SynonymsSetItem:
      type: object
      properties:
        synonyms_set:
          description: Synonyms set identifier
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        count:
          description: Number of synonym rules that the synonym set contains
          type: number
      required:
      - synonyms_set
      - count
    synonyms._types.SynonymRule:
      type: object
      properties:
        id:
          description: |-
            The identifier for the synonym rule.
            If you do not specify a synonym rule ID when you create a rule, an identifier is created automatically by Elasticsearch.
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        synonyms:
          externalDocs:
            url: https://www.elastic.co/docs/reference/text-analysis/analysis-synonym-graph-tokenfilter#analysis-synonym-graph-define-synonyms
          description: The synonyms that conform the synonym rule in Solr format.
          allOf:
          - "$ref": "#/components/schemas/synonyms._types.SynonymString"
      required:
      - synonyms
    tasks._types.GroupBy:
      type: string
      enum:
      - nodes
      - parents
      - none
    text_structure._types.EcsCompatibilityType:
      type: string
      enum:
      - disabled
      - v1
    text_structure._types.FormatType:
      type: string
      enum:
      - delimited
      - ndjson
      - semi_structured_text
      - xml
    text_structure._types.FieldStat:
      type: object
      properties:
        count:
          type: number
        cardinality:
          type: number
        top_hits:
          type: array
          items:
            "$ref": "#/components/schemas/text_structure._types.TopHit"
        mean_value:
          type: number
        median_value:
          type: number
        max_value:
          type: number
        min_value:
          type: number
        earliest:
          type: string
        latest:
          type: string
      required:
      - count
      - cardinality
      - top_hits
    text_structure._types.TopHit:
      type: object
      properties:
        count:
          type: number
        value:
          type: object
      required:
      - count
      - value
    ingest._types.PipelineConfig:
      type: object
      properties:
        description:
          description: Description of the ingest pipeline.
          type: string
        version:
          description: Version number used by external systems to track ingest pipelines.
          allOf:
          - "$ref": "#/components/schemas/_types.VersionNumber"
        processors:
          description: |-
            Processors used to perform transformations on documents before indexing.
            Processors run sequentially in the order specified.
          type: array
          items:
            "$ref": "#/components/schemas/ingest._types.ProcessorContainer"
      required:
      - processors
    text_structure.find_structure.FindStructureFormat:
      type: string
      enum:
      - ndjson
      - xml
      - delimited
      - semi_structured_text
    text_structure.test_grok_pattern.MatchedText:
      type: object
      properties:
        matched:
          type: boolean
        fields:
          type: object
          additionalProperties:
            type: array
            items:
              "$ref": "#/components/schemas/text_structure.test_grok_pattern.MatchedField"
      required:
      - matched
    text_structure.test_grok_pattern.MatchedField:
      type: object
      properties:
        match:
          type: string
        offset:
          type: number
        length:
          type: number
      required:
      - match
      - offset
      - length
    transform.get_node_stats.TransformNodeFullStats:
      type: object
      properties:
        total:
          allOf:
          - "$ref": "#/components/schemas/transform.get_node_stats.TransformNodeStats"
      required:
      - total
    transform.get_node_stats.TransformNodeStats:
      type: object
      properties:
        scheduler:
          allOf:
          - "$ref": "#/components/schemas/transform.get_node_stats.TransformSchedulerStats"
      required:
      - scheduler
    transform.get_node_stats.TransformSchedulerStats:
      type: object
      properties:
        registered_transform_count:
          type: number
        peek_transform:
          type: string
      required:
      - registered_transform_count
    transform.get_transform.TransformSummary:
      type: object
      properties:
        authorization:
          description: The security privileges that the transform uses to run its
            queries. If Elastic Stack security features were disabled at the time
            of the most recent update to the transform, this property is omitted.
          allOf:
          - "$ref": "#/components/schemas/ml._types.TransformAuthorization"
        create_time:
          description: The time the transform was created.
          allOf:
          - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
        create_time_string:
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
        description:
          description: Free text description of the transform.
          type: string
        dest:
          description: The destination for the transform.
          allOf:
          - "$ref": "#/components/schemas/_global.reindex.Destination"
        frequency:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        id:
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        latest:
          allOf:
          - "$ref": "#/components/schemas/transform._types.Latest"
        pivot:
          description: The pivot method transforms the data by aggregating and grouping
            it.
          allOf:
          - "$ref": "#/components/schemas/transform._types.Pivot"
        retention_policy:
          allOf:
          - "$ref": "#/components/schemas/transform._types.RetentionPolicyContainer"
        settings:
          description: Defines optional transform settings.
          allOf:
          - "$ref": "#/components/schemas/transform._types.Settings"
        source:
          description: The source of the data for the transform.
          allOf:
          - "$ref": "#/components/schemas/transform._types.Source"
        sync:
          description: Defines the properties transforms require to run continuously.
          allOf:
          - "$ref": "#/components/schemas/transform._types.SyncContainer"
        version:
          description: The version of Elasticsearch that existed on the node when
            the transform was created.
          allOf:
          - "$ref": "#/components/schemas/_types.VersionString"
        _meta:
          allOf:
          - "$ref": "#/components/schemas/_types.Metadata"
      required:
      - dest
      - id
      - source
    ml._types.TransformAuthorization:
      type: object
      properties:
        api_key:
          description: If an API key was used for the most recent update to the transform,
            its name and identifier are listed in the response.
          allOf:
          - "$ref": "#/components/schemas/ml._types.ApiKeyAuthorization"
        roles:
          description: If a user ID was used for the most recent update to the transform,
            its roles at the time of the update are listed in the response.
          type: array
          items:
            type: string
        service_account:
          description: If a service account was used for the most recent update to
            the transform, the account name is listed in the response.
          type: string
    transform._types.Latest:
      type: object
      properties:
        sort:
          description: Specifies the date field that is used to identify the latest
            documents.
          allOf:
          - "$ref": "#/components/schemas/_types.Field"
        unique_key:
          description: Specifies an array of one or more fields that are used to group
            the data.
          type: array
          items:
            "$ref": "#/components/schemas/_types.Field"
      required:
      - sort
      - unique_key
    transform._types.Pivot:
      type: object
      properties:
        aggregations:
          description: |-
            Defines how to aggregate the grouped data. The following aggregations are currently supported: average, bucket
            script, bucket selector, cardinality, filter, geo bounds, geo centroid, geo line, max, median absolute deviation,
            min, missing, percentiles, rare terms, scripted metric, stats, sum, terms, top metrics, value count, weighted
            average.
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/_types.aggregations.AggregationContainer"
        group_by:
          description: |-
            Defines how to group the data. More than one grouping can be defined per pivot. The following groupings are
            currently supported: date histogram, geotile grid, histogram, terms.
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/transform._types.PivotGroupByContainer"
    transform._types.PivotGroupByContainer:
      type: object
      properties:
        date_histogram:
          allOf:
          - "$ref": "#/components/schemas/_types.aggregations.DateHistogramAggregation"
        geotile_grid:
          allOf:
          - "$ref": "#/components/schemas/_types.aggregations.GeoTileGridAggregation"
        histogram:
          allOf:
          - "$ref": "#/components/schemas/_types.aggregations.HistogramAggregation"
        terms:
          allOf:
          - "$ref": "#/components/schemas/_types.aggregations.TermsAggregation"
      minProperties: 1
      maxProperties: 1
    transform._types.RetentionPolicyContainer:
      type: object
      properties:
        time:
          description: Specifies that the transform uses a time field to set the retention
            policy.
          allOf:
          - "$ref": "#/components/schemas/transform._types.RetentionPolicy"
      minProperties: 1
      maxProperties: 1
    transform._types.RetentionPolicy:
      type: object
      properties:
        field:
          description: The date field that is used to calculate the age of the document.
          allOf:
          - "$ref": "#/components/schemas/_types.Field"
        max_age:
          description: |-
            Specifies the maximum age of a document in the destination index. Documents that are older than the configured
            value are removed from the destination index.
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
      required:
      - field
      - max_age
    transform._types.Settings:
      description: The source of the data for the transform.
      type: object
      properties:
        align_checkpoints:
          description: |-
            Specifies whether the transform checkpoint ranges should be optimized for performance. Such optimization can align
            checkpoint ranges with the date histogram interval when date histogram is specified as a group source in the
            transform config. As a result, less document updates in the destination index will be performed thus improving
            overall performance.
          default: true
          type: boolean
        dates_as_epoch_millis:
          description: |-
            Defines if dates in the ouput should be written as ISO formatted string or as millis since epoch. epoch_millis was
            the default for transforms created before version 7.11. For compatible output set this value to `true`.
          default: false
          type: boolean
        deduce_mappings:
          description: Specifies whether the transform should deduce the destination
            index mappings from the transform configuration.
          default: true
          type: boolean
        docs_per_second:
          description: |-
            Specifies a limit on the number of input documents per second. This setting throttles the transform by adding a
            wait time between search requests. The default value is null, which disables throttling.
          type: number
        max_page_search_size:
          description: |-
            Defines the initial page size to use for the composite aggregation for each checkpoint. If circuit breaker
            exceptions occur, the page size is dynamically adjusted to a lower value. The minimum value is `10` and the
            maximum is `65,536`.
          default: 500
          type: number
        use_point_in_time:
          externalDocs:
            url: https://www.elastic.co/docs/api/doc/elasticsearch/operation/operation-open-point-in-time
          description: |-
            Specifies whether the transform checkpoint will use the Point In Time API while searching over the source index.
            In general, Point In Time is an optimization that will reduce pressure on the source index by reducing the amount
            of refreshes and merges, but it can be expensive if a large number of Point In Times are opened and closed for a
            given index. The benefits and impact depend on the data being searched, the ingest rate into the source index, and
            the amount of other consumers searching the same source index.
          default: true
          type: boolean
        unattended:
          description: |-
            If `true`, the transform runs in unattended mode. In unattended mode, the transform retries indefinitely in case
            of an error which means the transform never fails. Setting the number of retries other than infinite fails in
            validation.
          default: false
          x-state: Generally available; Added in 8.5.0
          type: boolean
    transform._types.Source:
      type: object
      properties:
        index:
          description: |-
            The source indices for the transform. It can be a single index, an index pattern (for example, `"my-index-*""`), an
            array of indices (for example, `["my-index-000001", "my-index-000002"]`), or an array of index patterns (for
            example, `["my-index-*", "my-other-index-*"]`. For remote indices use the syntax `"remote_name:index_name"`. If
            any indices are in remote clusters then the master node and at least one transform node must have the `remote_cluster_client` node role.
          allOf:
          - "$ref": "#/components/schemas/_types.Indices"
        runtime_mappings:
          description: |-
            Definitions of search-time runtime fields that can be used by the transform. For search runtime fields all data
            nodes, including remote nodes, must be 7.12 or later.
          x-state: Generally available; Added in 7.12.0
          allOf:
          - "$ref": "#/components/schemas/_types.mapping.RuntimeFields"
        query:
          x-model: true
          type: object
          description: 'A query clause that retrieves a subset of data from the source
            index.

            '
          externalDocs:
            url: https://www.elastic.co/docs/explore-analyze/query-filter/languages/querydsl
            description: Query DSL
      required:
      - index
    transform._types.SyncContainer:
      type: object
      properties:
        time:
          description: Specifies that the transform uses a time field to synchronize
            the source and destination indices.
          allOf:
          - "$ref": "#/components/schemas/transform._types.TimeSync"
      minProperties: 1
      maxProperties: 1
    transform._types.TimeSync:
      type: object
      properties:
        delay:
          description: The time delay between the current time and the latest input
            data time.
          default: 60s
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        field:
          description: |-
            The date field that is used to identify new documents in the source. In general, it’s a good idea to use a field
            that contains the ingest timestamp. If you use a different field, you might need to set the delay such that it
            accounts for data transmission delays.
          allOf:
          - "$ref": "#/components/schemas/_types.Field"
      required:
      - field
    transform.get_transform_stats.TransformStats:
      type: object
      properties:
        checkpointing:
          allOf:
          - "$ref": "#/components/schemas/transform.get_transform_stats.Checkpointing"
        health:
          allOf:
          - "$ref": "#/components/schemas/transform.get_transform_stats.TransformStatsHealth"
        id:
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        node:
          x-state: Generally available
          allOf:
          - "$ref": "#/components/schemas/_types.NodeAttributes"
        reason:
          type: string
        state:
          type: string
        stats:
          allOf:
          - "$ref": "#/components/schemas/transform.get_transform_stats.TransformIndexerStats"
      required:
      - checkpointing
      - id
      - state
      - stats
    transform.get_transform_stats.Checkpointing:
      type: object
      properties:
        changes_last_detected_at:
          type: number
        changes_last_detected_at_string:
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
        last:
          allOf:
          - "$ref": "#/components/schemas/transform.get_transform_stats.CheckpointStats"
        next:
          allOf:
          - "$ref": "#/components/schemas/transform.get_transform_stats.CheckpointStats"
        operations_behind:
          type: number
        last_search_time:
          type: number
        last_search_time_string:
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
      required:
      - last
    transform.get_transform_stats.CheckpointStats:
      type: object
      properties:
        checkpoint:
          type: number
        checkpoint_progress:
          allOf:
          - "$ref": "#/components/schemas/transform.get_transform_stats.TransformProgress"
        timestamp:
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
        timestamp_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
        time_upper_bound:
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
        time_upper_bound_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
      required:
      - checkpoint
    transform.get_transform_stats.TransformProgress:
      type: object
      properties:
        docs_indexed:
          type: number
        docs_processed:
          type: number
        docs_remaining:
          type: number
        percent_complete:
          type: number
        total_docs:
          type: number
      required:
      - docs_indexed
      - docs_processed
    transform.get_transform_stats.TransformStatsHealth:
      type: object
      properties:
        status:
          description: |2+


            Supported values include:
              - `green` (or `GREEN`): All shards are assigned.
              - `yellow` (or `YELLOW`): All primary shards are assigned, but one or more replica shards are unassigned. If a node in the cluster fails, some data could be unavailable until that node is repaired.
              - `red` (or `RED`): One or more primary shards are unassigned, so some data is unavailable. This can occur briefly during cluster startup as primary shards are assigned.
              - `unknown`
              - `unavailable`

          allOf:
          - "$ref": "#/components/schemas/_types.HealthStatus"
        issues:
          description: If a non-healthy status is returned, contains a list of issues
            of the transform.
          type: array
          items:
            "$ref": "#/components/schemas/transform.get_transform_stats.TransformHealthIssue"
      required:
      - status
    transform.get_transform_stats.TransformHealthIssue:
      type: object
      properties:
        type:
          description: The type of the issue
          type: string
        issue:
          description: A description of the issue
          type: string
        details:
          description: Details about the issue
          type: string
        count:
          description: Number of times this issue has occurred since it started
          type: number
        first_occurrence:
          description: The timestamp this issue occurred for for the first time
          allOf:
          - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
        first_occurence_string:
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
      required:
      - type
      - issue
      - count
    transform.get_transform_stats.TransformIndexerStats:
      type: object
      properties:
        delete_time_in_ms:
          allOf:
          - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
        documents_indexed:
          type: number
        documents_deleted:
          type: number
        documents_processed:
          type: number
        exponential_avg_checkpoint_duration_ms:
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitFloatMillis"
        exponential_avg_documents_indexed:
          type: number
        exponential_avg_documents_processed:
          type: number
        index_failures:
          type: number
        index_time_in_ms:
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
        index_total:
          type: number
        pages_processed:
          type: number
        processing_time_in_ms:
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
        processing_total:
          type: number
        search_failures:
          type: number
        search_time_in_ms:
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
        search_total:
          type: number
        trigger_count:
          type: number
      required:
      - documents_indexed
      - documents_processed
      - exponential_avg_checkpoint_duration_ms
      - exponential_avg_documents_indexed
      - exponential_avg_documents_processed
      - index_failures
      - index_time_in_ms
      - index_total
      - pages_processed
      - processing_time_in_ms
      - processing_total
      - search_failures
      - search_time_in_ms
      - search_total
      - trigger_count
    transform._types.Destination:
      type: object
      properties:
        index:
          description: |-
            The destination index for the transform. The mappings of the destination index are deduced based on the source
            fields when possible. If alternate mappings are required, use the create index API prior to starting the
            transform.
          allOf:
          - "$ref": "#/components/schemas/_types.IndexName"
        pipeline:
          description: The unique identifier for an ingest pipeline.
          type: string
    _global.update.UpdateWriteResponseBase:
      allOf:
      - "$ref": "#/components/schemas/_types.WriteResponseBase"
      - type: object
        properties:
          get:
            allOf:
            - "$ref": "#/components/schemas/_types.InlineGet"
    _global.update_by_query_rethrottle.UpdateByQueryRethrottleNode:
      allOf:
      - "$ref": "#/components/schemas/_spec_utils.BaseNode"
      - type: object
        properties:
          tasks:
            type: object
            additionalProperties:
              "$ref": "#/components/schemas/tasks._types.TaskInfo"
        required:
        - tasks
    watcher._types.WatchStatus:
      type: object
      properties:
        actions:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.Actions"
        last_checked:
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
        last_met_condition:
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
        state:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.ActivationState"
        version:
          allOf:
          - "$ref": "#/components/schemas/_types.VersionNumber"
        execution_state:
          type: string
      required:
      - actions
      - state
      - version
    watcher._types.Actions:
      type: object
      additionalProperties:
        "$ref": "#/components/schemas/watcher._types.ActionStatus"
    watcher._types.ActionStatus:
      type: object
      properties:
        ack:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.AcknowledgeState"
        last_execution:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.ExecutionState"
        last_successful_execution:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.ExecutionState"
        last_throttle:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.ThrottleState"
      required:
      - ack
    watcher._types.AcknowledgeState:
      type: object
      properties:
        state:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.AcknowledgementOptions"
        timestamp:
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
      required:
      - state
      - timestamp
    watcher._types.AcknowledgementOptions:
      type: string
      enum:
      - awaits_successful_execution
      - ackable
      - acked
    watcher._types.ExecutionState:
      type: object
      properties:
        successful:
          type: boolean
        timestamp:
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
        reason:
          type: string
      required:
      - successful
      - timestamp
    watcher._types.ThrottleState:
      type: object
      properties:
        reason:
          type: string
        timestamp:
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
      required:
      - reason
      - timestamp
    watcher._types.ActivationState:
      type: object
      properties:
        active:
          type: boolean
        timestamp:
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
      required:
      - active
      - timestamp
    watcher._types.ActivationStatus:
      type: object
      properties:
        actions:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.Actions"
        state:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.ActivationState"
        version:
          allOf:
          - "$ref": "#/components/schemas/_types.VersionNumber"
      required:
      - actions
      - state
      - version
    watcher._types.ActionExecutionMode:
      type: string
      enum:
      - simulate
      - force_simulate
      - execute
      - force_execute
      - skip
    watcher._types.SimulatedActions:
      type: object
      properties:
        actions:
          type: array
          items:
            type: string
        all:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.SimulatedActions"
        use_all:
          type: boolean
      required:
      - actions
      - all
      - use_all
    watcher._types.ScheduleTriggerEvent:
      type: object
      properties:
        scheduled_time:
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
        triggered_time:
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
      required:
      - scheduled_time
    watcher._types.Watch:
      type: object
      properties:
        actions:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/watcher._types.Action"
        condition:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.ConditionContainer"
        input:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.InputContainer"
        metadata:
          allOf:
          - "$ref": "#/components/schemas/_types.Metadata"
        status:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.WatchStatus"
        throttle_period:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        throttle_period_in_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
        transform:
          allOf:
          - "$ref": "#/components/schemas/_types.TransformContainer"
        trigger:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.TriggerContainer"
      required:
      - actions
      - condition
      - input
      - trigger
    watcher._types.Action:
      type: object
      properties:
        action_type:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.ActionType"
        condition:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.ConditionContainer"
        foreach:
          type: string
        max_iterations:
          type: number
        name:
          allOf:
          - "$ref": "#/components/schemas/_types.Name"
        throttle_period:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        throttle_period_in_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
        transform:
          allOf:
          - "$ref": "#/components/schemas/_types.TransformContainer"
        index:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.IndexAction"
        logging:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.LoggingAction"
        email:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.EmailAction"
        pagerduty:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.PagerDutyAction"
        slack:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.SlackAction"
        webhook:
          x-state: Generally available; Added in 7.14.0
          allOf:
          - "$ref": "#/components/schemas/watcher._types.WebhookAction"
    watcher._types.ActionType:
      type: string
      enum:
      - email
      - webhook
      - index
      - logging
      - slack
      - pagerduty
    watcher._types.ConditionContainer:
      type: object
      properties:
        always:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.AlwaysCondition"
        array_compare:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/watcher._types.ArrayCompareCondition"
          minProperties: 1
          maxProperties: 1
        compare:
          type: object
          additionalProperties:
            type: object
            additionalProperties:
              "$ref": "#/components/schemas/_types.FieldValue"
            minProperties: 1
            maxProperties: 1
          minProperties: 1
          maxProperties: 1
        never:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.NeverCondition"
        script:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.ScriptCondition"
      minProperties: 1
      maxProperties: 1
    watcher._types.AlwaysCondition:
      type: object
    watcher._types.ArrayCompareCondition:
      type: object
      properties:
        path:
          type: string
      required:
      - path
    watcher._types.NeverCondition:
      type: object
    watcher._types.ScriptCondition:
      type: object
      properties:
        lang:
          description: |2+


            Supported values include:
              - `painless`: Painless scripting language, purpose-built for Elasticsearch.
              - `expression`: Lucene’s expressions language, compiles a JavaScript expression to bytecode.
              - `mustache`: Mustache templated, used for templates.
              - `java`: Expert Java API

          default: painless
          allOf:
          - "$ref": "#/components/schemas/_types.ScriptLanguage"
        params:
          type: object
          additionalProperties:
            type: object
        source:
          allOf:
          - "$ref": "#/components/schemas/_types.ScriptSource"
        id:
          type: string
    _types.TransformContainer:
      type: object
      properties:
        chain:
          type: array
          items:
            "$ref": "#/components/schemas/_types.TransformContainer"
        script:
          allOf:
          - "$ref": "#/components/schemas/_types.ScriptTransform"
        search:
          allOf:
          - "$ref": "#/components/schemas/_types.SearchTransform"
      minProperties: 1
      maxProperties: 1
    _types.ScriptTransform:
      type: object
      properties:
        lang:
          default: painless
          type: string
        params:
          type: object
          additionalProperties:
            type: object
        source:
          allOf:
          - "$ref": "#/components/schemas/_types.ScriptSource"
        id:
          type: string
    _types.SearchTransform:
      type: object
      properties:
        request:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.SearchInputRequestDefinition"
        timeout:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
      required:
      - request
      - timeout
    watcher._types.SearchInputRequestDefinition:
      type: object
      properties:
        body:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.SearchInputRequestBody"
        indices:
          type: array
          items:
            "$ref": "#/components/schemas/_types.IndexName"
        indices_options:
          allOf:
          - "$ref": "#/components/schemas/_types.IndicesOptions"
        search_type:
          description: |2+


            Supported values include:
              - `query_then_fetch`: Documents are scored using local term and document frequencies for the shard. This is usually faster but less accurate.
              - `dfs_query_then_fetch`: Documents are scored using global term and document frequencies across all shards. This is usually slower but more accurate.

          allOf:
          - "$ref": "#/components/schemas/_types.SearchType"
        template:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.SearchTemplateRequestBody"
        rest_total_hits_as_int:
          type: boolean
    watcher._types.SearchInputRequestBody:
      type: object
      properties:
        query:
          allOf:
          - "$ref": "#/components/schemas/_types.query_dsl.QueryContainer"
      required:
      - query
    watcher._types.SearchTemplateRequestBody:
      type: object
      properties:
        explain:
          default: false
          type: boolean
        id:
          description: |-
            ID of the search template to use. If no source is specified,
            this parameter is required.
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        params:
          type: object
          additionalProperties:
            type: object
        profile:
          default: false
          type: boolean
        source:
          description: |-
            An inline search template. Supports the same parameters as the search API's
            request body. Also supports Mustache variables. If no id is specified, this
            parameter is required.
          type: string
    watcher._types.IndexAction:
      type: object
      properties:
        index:
          allOf:
          - "$ref": "#/components/schemas/_types.IndexName"
        doc_id:
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        refresh:
          allOf:
          - "$ref": "#/components/schemas/_types.Refresh"
        op_type:
          description: |2+


            Supported values include:
              - `index`: Overwrite any documents that already exist.
              - `create`: Only index documents that do not already exist.

          default: index
          allOf:
          - "$ref": "#/components/schemas/_types.OpType"
        timeout:
          default: 60s
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        execution_time_field:
          allOf:
          - "$ref": "#/components/schemas/_types.Field"
      required:
      - index
    watcher._types.LoggingAction:
      type: object
      properties:
        level:
          type: string
        text:
          type: string
        category:
          type: string
      required:
      - text
    watcher._types.EmailAction:
      allOf:
      - "$ref": "#/components/schemas/watcher._types.Email"
      - type: object
    watcher._types.Email:
      type: object
      properties:
        id:
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        bcc:
          oneOf:
          - type: string
          - type: array
            items:
              type: string
        body:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.EmailBody"
        cc:
          oneOf:
          - type: string
          - type: array
            items:
              type: string
        from:
          type: string
        priority:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.EmailPriority"
        reply_to:
          oneOf:
          - type: string
          - type: array
            items:
              type: string
        sent_date:
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
        subject:
          type: string
        to:
          oneOf:
          - type: string
          - type: array
            items:
              type: string
        attachments:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/watcher._types.EmailAttachmentContainer"
      required:
      - subject
      - to
    watcher._types.EmailBody:
      type: object
      properties:
        html:
          type: string
        text:
          type: string
    watcher._types.EmailPriority:
      type: string
      enum:
      - lowest
      - low
      - normal
      - high
      - highest
    watcher._types.EmailAttachmentContainer:
      type: object
      properties:
        http:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.HttpEmailAttachment"
        reporting:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.ReportingEmailAttachment"
        data:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.DataEmailAttachment"
      minProperties: 1
      maxProperties: 1
    watcher._types.HttpEmailAttachment:
      type: object
      properties:
        content_type:
          type: string
        inline:
          type: boolean
        request:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.HttpInputRequestDefinition"
    watcher._types.HttpInputRequestDefinition:
      type: object
      properties:
        auth:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.HttpInputAuthentication"
        body:
          type: string
        connection_timeout:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        headers:
          type: object
          additionalProperties:
            type: string
        host:
          allOf:
          - "$ref": "#/components/schemas/_types.Host"
        method:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.HttpInputMethod"
        params:
          type: object
          additionalProperties:
            type: string
        path:
          type: string
        port:
          allOf:
          - "$ref": "#/components/schemas/_types.uint"
        proxy:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.HttpInputProxy"
        read_timeout:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        scheme:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.ConnectionScheme"
        url:
          type: string
    watcher._types.HttpInputAuthentication:
      type: object
      properties:
        basic:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.HttpInputBasicAuthentication"
      required:
      - basic
    watcher._types.HttpInputBasicAuthentication:
      type: object
      properties:
        password:
          allOf:
          - "$ref": "#/components/schemas/_types.Password"
        username:
          allOf:
          - "$ref": "#/components/schemas/_types.Username"
      required:
      - password
      - username
    watcher._types.HttpInputMethod:
      type: string
      enum:
      - head
      - get
      - post
      - put
      - delete
    watcher._types.HttpInputProxy:
      type: object
      properties:
        host:
          allOf:
          - "$ref": "#/components/schemas/_types.Host"
        port:
          allOf:
          - "$ref": "#/components/schemas/_types.uint"
      required:
      - host
      - port
    watcher._types.ConnectionScheme:
      type: string
      enum:
      - http
      - https
    watcher._types.ReportingEmailAttachment:
      type: object
      properties:
        url:
          type: string
        inline:
          type: boolean
        retries:
          default: 40
          type: number
        interval:
          default: 15s
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        request:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.HttpInputRequestDefinition"
      required:
      - url
    watcher._types.DataEmailAttachment:
      type: object
      properties:
        format:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.DataAttachmentFormat"
    watcher._types.DataAttachmentFormat:
      type: string
      enum:
      - json
      - yaml
    watcher._types.PagerDutyAction:
      allOf:
      - "$ref": "#/components/schemas/watcher._types.PagerDutyEvent"
      - type: object
    watcher._types.PagerDutyEvent:
      type: object
      properties:
        account:
          type: string
        attach_payload:
          type: boolean
        client:
          type: string
        client_url:
          type: string
        contexts:
          type: array
          items:
            "$ref": "#/components/schemas/watcher._types.PagerDutyContext"
        description:
          type: string
        event_type:
          default: trigger
          allOf:
          - "$ref": "#/components/schemas/watcher._types.PagerDutyEventType"
        incident_key:
          type: string
        proxy:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.PagerDutyEventProxy"
      required:
      - attach_payload
      - description
      - incident_key
    watcher._types.PagerDutyContext:
      type: object
      properties:
        href:
          type: string
        src:
          type: string
        type:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.PagerDutyContextType"
      required:
      - type
    watcher._types.PagerDutyContextType:
      type: string
      enum:
      - link
      - image
    watcher._types.PagerDutyEventType:
      type: string
      enum:
      - trigger
      - resolve
      - acknowledge
    watcher._types.PagerDutyEventProxy:
      type: object
      properties:
        host:
          allOf:
          - "$ref": "#/components/schemas/_types.Host"
        port:
          type: number
    watcher._types.SlackAction:
      type: object
      properties:
        account:
          type: string
        message:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.SlackMessage"
      required:
      - message
    watcher._types.SlackMessage:
      type: object
      properties:
        attachments:
          type: array
          items:
            "$ref": "#/components/schemas/watcher._types.SlackAttachment"
        dynamic_attachments:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.SlackDynamicAttachment"
        from:
          type: string
        icon:
          type: string
        text:
          type: string
        to:
          type: array
          items:
            type: string
      required:
      - attachments
      - from
      - text
      - to
    watcher._types.SlackAttachment:
      type: object
      properties:
        author_icon:
          type: string
        author_link:
          type: string
        author_name:
          type: string
        color:
          type: string
        fallback:
          type: string
        fields:
          type: array
          items:
            "$ref": "#/components/schemas/watcher._types.SlackAttachmentField"
        footer:
          type: string
        footer_icon:
          type: string
        image_url:
          type: string
        pretext:
          type: string
        text:
          type: string
        thumb_url:
          type: string
        title:
          type: string
        title_link:
          type: string
        ts:
          allOf:
          - "$ref": "#/components/schemas/_types.EpochTimeUnitSeconds"
      required:
      - author_name
      - title
    watcher._types.SlackAttachmentField:
      type: object
      properties:
        short:
          type: boolean
        title:
          type: string
        value:
          type: string
      required:
      - short
      - title
      - value
    watcher._types.SlackDynamicAttachment:
      type: object
      properties:
        attachment_template:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.SlackAttachment"
        list_path:
          type: string
      required:
      - attachment_template
      - list_path
    watcher._types.WebhookAction:
      allOf:
      - "$ref": "#/components/schemas/watcher._types.HttpInputRequestDefinition"
      - type: object
    watcher._types.InputContainer:
      type: object
      properties:
        chain:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.ChainInput"
        http:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.HttpInput"
        search:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.SearchInput"
        simple:
          type: object
          additionalProperties:
            type: object
      minProperties: 1
      maxProperties: 1
    watcher._types.ChainInput:
      type: object
      properties:
        inputs:
          type: array
          items:
            type: object
            additionalProperties:
              "$ref": "#/components/schemas/watcher._types.InputContainer"
            minProperties: 1
            maxProperties: 1
      required:
      - inputs
    watcher._types.HttpInput:
      type: object
      properties:
        extract:
          type: array
          items:
            type: string
        request:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.HttpInputRequestDefinition"
        response_content_type:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.ResponseContentType"
    watcher._types.ResponseContentType:
      type: string
      enum:
      - json
      - yaml
      - text
    watcher._types.SearchInput:
      type: object
      properties:
        extract:
          type: array
          items:
            type: string
        request:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.SearchInputRequestDefinition"
        timeout:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
      required:
      - request
    watcher._types.TriggerContainer:
      type: object
      properties:
        schedule:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.ScheduleContainer"
      minProperties: 1
      maxProperties: 1
    watcher._types.ScheduleContainer:
      type: object
      properties:
        timezone:
          type: string
        cron:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.CronExpression"
        daily:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.DailySchedule"
        hourly:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.HourlySchedule"
        interval:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        monthly:
          oneOf:
          - "$ref": "#/components/schemas/watcher._types.TimeOfMonth"
          - type: array
            items:
              "$ref": "#/components/schemas/watcher._types.TimeOfMonth"
        weekly:
          oneOf:
          - "$ref": "#/components/schemas/watcher._types.TimeOfWeek"
          - type: array
            items:
              "$ref": "#/components/schemas/watcher._types.TimeOfWeek"
        yearly:
          oneOf:
          - "$ref": "#/components/schemas/watcher._types.TimeOfYear"
          - type: array
            items:
              "$ref": "#/components/schemas/watcher._types.TimeOfYear"
      minProperties: 1
      maxProperties: 1
    watcher._types.DailySchedule:
      type: object
      properties:
        at:
          type: array
          items:
            "$ref": "#/components/schemas/watcher._types.ScheduleTimeOfDay"
      required:
      - at
    watcher._types.HourlySchedule:
      type: object
      properties:
        minute:
          type: array
          items:
            type: number
      required:
      - minute
    watcher._types.TimeOfMonth:
      type: object
      properties:
        at:
          type: array
          items:
            type: string
        'on':
          type: array
          items:
            type: number
      required:
      - at
      - 'on'
    watcher._types.TimeOfWeek:
      type: object
      properties:
        at:
          type: array
          items:
            type: string
        'on':
          type: array
          items:
            "$ref": "#/components/schemas/watcher._types.Day"
      required:
      - at
      - 'on'
    watcher._types.Day:
      type: string
      enum:
      - sunday
      - monday
      - tuesday
      - wednesday
      - thursday
      - friday
      - saturday
    watcher._types.TimeOfYear:
      type: object
      properties:
        at:
          type: array
          items:
            type: string
        int:
          type: array
          items:
            "$ref": "#/components/schemas/watcher._types.Month"
        'on':
          type: array
          items:
            type: number
      required:
      - at
      - int
      - 'on'
    watcher._types.Month:
      type: string
      enum:
      - january
      - february
      - march
      - april
      - may
      - june
      - july
      - august
      - september
      - october
      - november
      - december
    watcher.execute_watch.WatchRecord:
      type: object
      properties:
        condition:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.ConditionContainer"
        input:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.InputContainer"
        messages:
          type: array
          items:
            type: string
        metadata:
          allOf:
          - "$ref": "#/components/schemas/_types.Metadata"
        node:
          type: string
        result:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.ExecutionResult"
        state:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.ExecutionStatus"
        trigger_event:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.TriggerEventResult"
        user:
          allOf:
          - "$ref": "#/components/schemas/_types.Username"
        watch_id:
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        status:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.WatchStatus"
      required:
      - condition
      - input
      - messages
      - node
      - result
      - state
      - trigger_event
      - user
      - watch_id
    watcher._types.ExecutionResult:
      type: object
      properties:
        actions:
          type: array
          items:
            "$ref": "#/components/schemas/watcher._types.ExecutionResultAction"
        condition:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.ExecutionResultCondition"
        execution_duration:
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
        execution_time:
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
        input:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.ExecutionResultInput"
      required:
      - actions
      - condition
      - execution_duration
      - execution_time
      - input
    watcher._types.ExecutionResultAction:
      type: object
      properties:
        email:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.EmailResult"
        id:
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        index:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.IndexResult"
        logging:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.LoggingResult"
        pagerduty:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.PagerDutyResult"
        reason:
          type: string
        slack:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.SlackResult"
        status:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.ActionStatusOptions"
        type:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.ActionType"
        webhook:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.WebhookResult"
        error:
          allOf:
          - "$ref": "#/components/schemas/_types.ErrorCause"
      required:
      - id
      - status
      - type
    watcher._types.EmailResult:
      type: object
      properties:
        account:
          type: string
        message:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.Email"
        reason:
          type: string
      required:
      - message
    watcher._types.IndexResult:
      type: object
      properties:
        response:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.IndexResultSummary"
      required:
      - response
    watcher._types.IndexResultSummary:
      type: object
      properties:
        created:
          type: boolean
        id:
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        index:
          allOf:
          - "$ref": "#/components/schemas/_types.IndexName"
        result:
          allOf:
          - "$ref": "#/components/schemas/_types.Result"
        version:
          allOf:
          - "$ref": "#/components/schemas/_types.VersionNumber"
      required:
      - created
      - id
      - index
      - result
      - version
    watcher._types.LoggingResult:
      type: object
      properties:
        logged_text:
          type: string
      required:
      - logged_text
    watcher._types.PagerDutyResult:
      type: object
      properties:
        event:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.PagerDutyEvent"
        reason:
          type: string
        request:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.HttpInputRequestResult"
        response:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.HttpInputResponseResult"
      required:
      - event
    watcher._types.HttpInputRequestResult:
      allOf:
      - "$ref": "#/components/schemas/watcher._types.HttpInputRequestDefinition"
      - type: object
    watcher._types.HttpInputResponseResult:
      type: object
      properties:
        body:
          type: string
        headers:
          allOf:
          - "$ref": "#/components/schemas/_types.HttpHeaders"
        status:
          type: number
      required:
      - body
      - headers
      - status
    watcher._types.SlackResult:
      type: object
      properties:
        account:
          type: string
        message:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.SlackMessage"
      required:
      - message
    watcher._types.ActionStatusOptions:
      type: string
      enum:
      - success
      - failure
      - simulated
      - throttled
    watcher._types.WebhookResult:
      type: object
      properties:
        request:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.HttpInputRequestResult"
        response:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.HttpInputResponseResult"
      required:
      - request
    watcher._types.ExecutionResultCondition:
      type: object
      properties:
        met:
          type: boolean
        status:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.ActionStatusOptions"
        type:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.ConditionType"
      required:
      - met
      - status
      - type
    watcher._types.ConditionType:
      type: string
      enum:
      - always
      - never
      - script
      - compare
      - array_compare
    watcher._types.ExecutionResultInput:
      type: object
      properties:
        payload:
          type: object
          additionalProperties:
            type: object
        status:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.ActionStatusOptions"
        type:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.InputType"
      required:
      - payload
      - status
      - type
    watcher._types.InputType:
      type: string
      enum:
      - http
      - search
      - simple
    watcher._types.ExecutionStatus:
      type: string
      enum:
      - awaits_execution
      - checking
      - execution_not_needed
      - throttled
      - executed
      - failed
      - deleted_while_queued
      - not_executed_already_queued
    watcher._types.TriggerEventResult:
      type: object
      properties:
        manual:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.TriggerEventContainer"
        triggered_time:
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
        type:
          type: string
      required:
      - manual
      - triggered_time
      - type
    watcher._types.TriggerEventContainer:
      type: object
      properties:
        schedule:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.ScheduleTriggerEvent"
      minProperties: 1
      maxProperties: 1
    watcher._types.QueryWatch:
      type: object
      properties:
        _id:
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
        status:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.WatchStatus"
        watch:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.Watch"
        _primary_term:
          type: number
        _seq_no:
          allOf:
          - "$ref": "#/components/schemas/_types.SequenceNumber"
      required:
      - _id
    watcher.stats.WatcherMetric:
      type: string
      enum:
      - _all
      - all
      - queued_watches
      - current_watches
      - pending_watches
    watcher.stats.WatcherNodeStats:
      type: object
      properties:
        current_watches:
          description: |-
            The current executing watches metric gives insight into the watches that are currently being executed by Watcher.
            Additional information is shared per watch that is currently executing.
            This information includes the `watch_id`, the time its execution started and its current execution phase.
            To include this metric, the `metric` option should be set to `current_watches` or `_all`.
            In addition you can also specify the `emit_stacktraces=true` parameter, which adds stack traces for each watch that is being run.
            These stack traces can give you more insight into an execution of a watch.
          type: array
          items:
            "$ref": "#/components/schemas/watcher.stats.WatchRecordStats"
        execution_thread_pool:
          allOf:
          - "$ref": "#/components/schemas/watcher._types.ExecutionThreadPool"
        queued_watches:
          description: |-
            Watcher moderates the execution of watches such that their execution won't put too much pressure on the node and its resources.
            If too many watches trigger concurrently and there isn't enough capacity to run them all, some of the watches are queued, waiting for the current running watches to finish.s
            The queued watches metric gives insight on these queued watches.

            To include this metric, the `metric` option should include `queued_watches` or `_all`.
          type: array
          items:
            "$ref": "#/components/schemas/watcher.stats.WatchRecordQueuedStats"
        watch_count:
          description: The number of watches currently registered.
          type: number
        watcher_state:
          description: The current state of Watcher.
          allOf:
          - "$ref": "#/components/schemas/watcher.stats.WatcherState"
        node_id:
          allOf:
          - "$ref": "#/components/schemas/_types.Id"
      required:
      - execution_thread_pool
      - watch_count
      - watcher_state
      - node_id
    watcher.stats.WatchRecordStats:
      allOf:
      - "$ref": "#/components/schemas/watcher.stats.WatchRecordQueuedStats"
      - type: object
        properties:
          execution_phase:
            description: The current watch execution phase.
            allOf:
            - "$ref": "#/components/schemas/watcher._types.ExecutionPhase"
          triggered_time:
            description: The time the watch was triggered by the trigger engine.
            allOf:
            - "$ref": "#/components/schemas/_types.DateTime"
          executed_actions:
            type: array
            items:
              type: string
          watch_id:
            allOf:
            - "$ref": "#/components/schemas/_types.Id"
          watch_record_id:
            description: The watch record identifier.
            allOf:
            - "$ref": "#/components/schemas/_types.Id"
        required:
        - execution_phase
        - triggered_time
        - watch_id
        - watch_record_id
    watcher._types.ExecutionPhase:
      type: string
      enum:
      - awaits_execution
      - started
      - input
      - condition
      - actions
      - watch_transform
      - aborted
      - finished
    watcher.stats.WatchRecordQueuedStats:
      type: object
      properties:
        execution_time:
          description: |-
            The time the watch was run.
            This is just before the input is being run.
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
      required:
      - execution_time
    watcher._types.ExecutionThreadPool:
      type: object
      properties:
        max_size:
          description: The largest size of the execution thread pool, which indicates
            the largest number of concurrent running watches.
          type: number
        queue_size:
          description: The number of watches that were triggered and are currently
            queued.
          type: number
      required:
      - max_size
      - queue_size
    watcher.stats.WatcherState:
      type: string
      enum:
      - stopped
      - starting
      - started
      - stopping
    xpack.info.XPackCategory:
      type: string
      enum:
      - build
      - features
      - license
    xpack.info.BuildInformation:
      type: object
      properties:
        date:
          allOf:
          - "$ref": "#/components/schemas/_types.DateTime"
        hash:
          type: string
      required:
      - date
      - hash
    xpack.info.Features:
      type: object
      properties:
        aggregate_metric:
          allOf:
          - "$ref": "#/components/schemas/xpack.info.Feature"
        analytics:
          allOf:
          - "$ref": "#/components/schemas/xpack.info.Feature"
        ccr:
          allOf:
          - "$ref": "#/components/schemas/xpack.info.Feature"
        data_streams:
          allOf:
          - "$ref": "#/components/schemas/xpack.info.Feature"
        data_tiers:
          allOf:
          - "$ref": "#/components/schemas/xpack.info.Feature"
        enrich:
          allOf:
          - "$ref": "#/components/schemas/xpack.info.Feature"
        enterprise_search:
          x-state: Generally available; Added in 8.8.0
          allOf:
          - "$ref": "#/components/schemas/xpack.info.Feature"
        eql:
          allOf:
          - "$ref": "#/components/schemas/xpack.info.Feature"
        esql:
          x-state: Generally available; Added in 8.14.0
          allOf:
          - "$ref": "#/components/schemas/xpack.info.Feature"
        graph:
          allOf:
          - "$ref": "#/components/schemas/xpack.info.Feature"
        gpu_vector_indexing:
          x-state: Generally available; Added in 9.3.2
          allOf:
          - "$ref": "#/components/schemas/xpack.info.Feature"
        ilm:
          allOf:
          - "$ref": "#/components/schemas/xpack.info.Feature"
        logstash:
          allOf:
          - "$ref": "#/components/schemas/xpack.info.Feature"
        logsdb:
          allOf:
          - "$ref": "#/components/schemas/xpack.info.Feature"
        ml:
          allOf:
          - "$ref": "#/components/schemas/xpack.info.Feature"
        monitoring:
          allOf:
          - "$ref": "#/components/schemas/xpack.info.Feature"
        rollup:
          allOf:
          - "$ref": "#/components/schemas/xpack.info.Feature"
        runtime_fields:
          allOf:
          - "$ref": "#/components/schemas/xpack.info.Feature"
        searchable_snapshots:
          allOf:
          - "$ref": "#/components/schemas/xpack.info.Feature"
        security:
          allOf:
          - "$ref": "#/components/schemas/xpack.info.Feature"
        slm:
          allOf:
          - "$ref": "#/components/schemas/xpack.info.Feature"
        spatial:
          allOf:
          - "$ref": "#/components/schemas/xpack.info.Feature"
        sql:
          allOf:
          - "$ref": "#/components/schemas/xpack.info.Feature"
        transform:
          allOf:
          - "$ref": "#/components/schemas/xpack.info.Feature"
        universal_profiling:
          x-state: Generally available; Added in 8.7.0
          allOf:
          - "$ref": "#/components/schemas/xpack.info.Feature"
        voting_only:
          allOf:
          - "$ref": "#/components/schemas/xpack.info.Feature"
        watcher:
          allOf:
          - "$ref": "#/components/schemas/xpack.info.Feature"
        archive:
          x-state: Generally available; Added in 8.2.0
          allOf:
          - "$ref": "#/components/schemas/xpack.info.Feature"
      required:
      - aggregate_metric
      - analytics
      - ccr
      - data_streams
      - data_tiers
      - enrich
      - enterprise_search
      - eql
      - esql
      - graph
      - gpu_vector_indexing
      - ilm
      - logstash
      - logsdb
      - ml
      - monitoring
      - rollup
      - searchable_snapshots
      - security
      - slm
      - spatial
      - sql
      - transform
      - universal_profiling
      - voting_only
      - watcher
      - archive
    xpack.info.Feature:
      type: object
      properties:
        available:
          type: boolean
        description:
          type: string
        enabled:
          type: boolean
        native_code_info:
          allOf:
          - "$ref": "#/components/schemas/xpack.info.NativeCodeInformation"
      required:
      - available
      - enabled
    xpack.info.NativeCodeInformation:
      type: object
      properties:
        build_hash:
          type: string
        version:
          allOf:
          - "$ref": "#/components/schemas/_types.VersionString"
      required:
      - build_hash
      - version
    xpack.info.MinimalLicenseInformation:
      type: object
      properties:
        expiry_date_in_millis:
          allOf:
          - "$ref": "#/components/schemas/_types.EpochTimeUnitMillis"
        mode:
          allOf:
          - "$ref": "#/components/schemas/license._types.LicenseType"
        status:
          allOf:
          - "$ref": "#/components/schemas/license._types.LicenseStatus"
        type:
          allOf:
          - "$ref": "#/components/schemas/license._types.LicenseType"
        uid:
          type: string
      required:
      - expiry_date_in_millis
      - mode
      - status
      - type
      - uid
    xpack.usage.Base:
      type: object
      properties:
        available:
          type: boolean
        enabled:
          type: boolean
      required:
      - available
      - enabled
    xpack.usage.Analytics:
      allOf:
      - "$ref": "#/components/schemas/xpack.usage.Base"
      - type: object
        properties:
          stats:
            allOf:
            - "$ref": "#/components/schemas/xpack.usage.AnalyticsStatistics"
        required:
        - stats
    xpack.usage.AnalyticsStatistics:
      type: object
      properties:
        boxplot_usage:
          type: number
        cumulative_cardinality_usage:
          type: number
        string_stats_usage:
          type: number
        top_metrics_usage:
          type: number
        t_test_usage:
          type: number
        moving_percentiles_usage:
          type: number
        normalize_usage:
          type: number
        rate_usage:
          type: number
        multi_terms_usage:
          type: number
      required:
      - boxplot_usage
      - cumulative_cardinality_usage
      - string_stats_usage
      - top_metrics_usage
      - t_test_usage
      - moving_percentiles_usage
      - normalize_usage
      - rate_usage
    xpack.usage.Archive:
      allOf:
      - "$ref": "#/components/schemas/xpack.usage.Base"
      - type: object
        properties:
          indices_count:
            type: number
        required:
        - indices_count
    xpack.usage.Watcher:
      allOf:
      - "$ref": "#/components/schemas/xpack.usage.Base"
      - type: object
        properties:
          execution:
            allOf:
            - "$ref": "#/components/schemas/xpack.usage.WatcherActions"
          watch:
            allOf:
            - "$ref": "#/components/schemas/xpack.usage.WatcherWatch"
          count:
            allOf:
            - "$ref": "#/components/schemas/xpack.usage.Counter"
        required:
        - execution
        - watch
        - count
    xpack.usage.WatcherActions:
      type: object
      properties:
        actions:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/xpack.usage.WatcherActionTotals"
      required:
      - actions
    xpack.usage.WatcherActionTotals:
      type: object
      properties:
        total:
          allOf:
          - "$ref": "#/components/schemas/_types.Duration"
        total_time_in_ms:
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
      required:
      - total
      - total_time_in_ms
    xpack.usage.WatcherWatch:
      type: object
      properties:
        input:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/xpack.usage.Counter"
        condition:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/xpack.usage.Counter"
        action:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/xpack.usage.Counter"
        trigger:
          allOf:
          - "$ref": "#/components/schemas/xpack.usage.WatcherWatchTrigger"
      required:
      - input
      - trigger
    xpack.usage.Counter:
      type: object
      properties:
        active:
          type: number
        total:
          type: number
      required:
      - active
      - total
    xpack.usage.WatcherWatchTrigger:
      type: object
      properties:
        schedule:
          allOf:
          - "$ref": "#/components/schemas/xpack.usage.WatcherWatchTriggerSchedule"
        _all:
          allOf:
          - "$ref": "#/components/schemas/xpack.usage.Counter"
      required:
      - _all
    xpack.usage.WatcherWatchTriggerSchedule:
      allOf:
      - "$ref": "#/components/schemas/xpack.usage.Counter"
      - type: object
        properties:
          cron:
            allOf:
            - "$ref": "#/components/schemas/xpack.usage.Counter"
          _all:
            allOf:
            - "$ref": "#/components/schemas/xpack.usage.Counter"
        required:
        - cron
        - _all
    xpack.usage.Ccr:
      allOf:
      - "$ref": "#/components/schemas/xpack.usage.Base"
      - type: object
        properties:
          auto_follow_patterns_count:
            type: number
          follower_indices_count:
            type: number
        required:
        - auto_follow_patterns_count
        - follower_indices_count
    xpack.usage.DataStreams:
      allOf:
      - "$ref": "#/components/schemas/xpack.usage.Base"
      - type: object
        properties:
          data_streams:
            type: number
          indices_count:
            type: number
        required:
        - data_streams
        - indices_count
    xpack.usage.DataTiers:
      allOf:
      - "$ref": "#/components/schemas/xpack.usage.Base"
      - type: object
        properties:
          data_warm:
            allOf:
            - "$ref": "#/components/schemas/xpack.usage.DataTierPhaseStatistics"
          data_frozen:
            x-state: Generally available; Added in 7.13.0
            allOf:
            - "$ref": "#/components/schemas/xpack.usage.DataTierPhaseStatistics"
          data_cold:
            allOf:
            - "$ref": "#/components/schemas/xpack.usage.DataTierPhaseStatistics"
          data_content:
            allOf:
            - "$ref": "#/components/schemas/xpack.usage.DataTierPhaseStatistics"
          data_hot:
            allOf:
            - "$ref": "#/components/schemas/xpack.usage.DataTierPhaseStatistics"
        required:
        - data_warm
        - data_cold
        - data_content
        - data_hot
    xpack.usage.DataTierPhaseStatistics:
      type: object
      properties:
        node_count:
          type: number
        index_count:
          type: number
        total_shard_count:
          type: number
        primary_shard_count:
          type: number
        doc_count:
          type: number
        total_size_bytes:
          type: number
        primary_size_bytes:
          type: number
        primary_shard_size_avg_bytes:
          type: number
        primary_shard_size_median_bytes:
          type: number
        primary_shard_size_mad_bytes:
          type: number
      required:
      - node_count
      - index_count
      - total_shard_count
      - primary_shard_count
      - doc_count
      - total_size_bytes
      - primary_size_bytes
      - primary_shard_size_avg_bytes
      - primary_shard_size_median_bytes
      - primary_shard_size_mad_bytes
    xpack.usage.Eql:
      allOf:
      - "$ref": "#/components/schemas/xpack.usage.Base"
      - type: object
        properties:
          features:
            allOf:
            - "$ref": "#/components/schemas/xpack.usage.EqlFeatures"
          queries:
            type: object
            additionalProperties:
              "$ref": "#/components/schemas/xpack.usage.Query"
        required:
        - features
        - queries
    xpack.usage.EqlFeatures:
      type: object
      properties:
        join:
          allOf:
          - "$ref": "#/components/schemas/_types.uint"
        joins:
          allOf:
          - "$ref": "#/components/schemas/xpack.usage.EqlFeaturesJoin"
        keys:
          allOf:
          - "$ref": "#/components/schemas/xpack.usage.EqlFeaturesKeys"
        event:
          allOf:
          - "$ref": "#/components/schemas/_types.uint"
        pipes:
          allOf:
          - "$ref": "#/components/schemas/xpack.usage.EqlFeaturesPipes"
        sequence:
          allOf:
          - "$ref": "#/components/schemas/_types.uint"
        sequences:
          allOf:
          - "$ref": "#/components/schemas/xpack.usage.EqlFeaturesSequences"
      required:
      - join
      - joins
      - keys
      - event
      - pipes
      - sequence
      - sequences
    xpack.usage.EqlFeaturesJoin:
      type: object
      properties:
        join_queries_two:
          allOf:
          - "$ref": "#/components/schemas/_types.uint"
        join_queries_three:
          allOf:
          - "$ref": "#/components/schemas/_types.uint"
        join_until:
          allOf:
          - "$ref": "#/components/schemas/_types.uint"
        join_queries_five_or_more:
          allOf:
          - "$ref": "#/components/schemas/_types.uint"
        join_queries_four:
          allOf:
          - "$ref": "#/components/schemas/_types.uint"
      required:
      - join_queries_two
      - join_queries_three
      - join_until
      - join_queries_five_or_more
      - join_queries_four
    xpack.usage.EqlFeaturesKeys:
      type: object
      properties:
        join_keys_two:
          allOf:
          - "$ref": "#/components/schemas/_types.uint"
        join_keys_one:
          allOf:
          - "$ref": "#/components/schemas/_types.uint"
        join_keys_three:
          allOf:
          - "$ref": "#/components/schemas/_types.uint"
        join_keys_five_or_more:
          allOf:
          - "$ref": "#/components/schemas/_types.uint"
        join_keys_four:
          allOf:
          - "$ref": "#/components/schemas/_types.uint"
      required:
      - join_keys_two
      - join_keys_one
      - join_keys_three
      - join_keys_five_or_more
      - join_keys_four
    xpack.usage.EqlFeaturesPipes:
      type: object
      properties:
        pipe_tail:
          allOf:
          - "$ref": "#/components/schemas/_types.uint"
        pipe_head:
          allOf:
          - "$ref": "#/components/schemas/_types.uint"
      required:
      - pipe_tail
      - pipe_head
    xpack.usage.EqlFeaturesSequences:
      type: object
      properties:
        sequence_queries_three:
          allOf:
          - "$ref": "#/components/schemas/_types.uint"
        sequence_queries_four:
          allOf:
          - "$ref": "#/components/schemas/_types.uint"
        sequence_queries_two:
          allOf:
          - "$ref": "#/components/schemas/_types.uint"
        sequence_until:
          allOf:
          - "$ref": "#/components/schemas/_types.uint"
        sequence_queries_five_or_more:
          allOf:
          - "$ref": "#/components/schemas/_types.uint"
        sequence_maxspan:
          allOf:
          - "$ref": "#/components/schemas/_types.uint"
      required:
      - sequence_queries_three
      - sequence_queries_four
      - sequence_queries_two
      - sequence_until
      - sequence_queries_five_or_more
      - sequence_maxspan
    xpack.usage.Query:
      type: object
      properties:
        count:
          type: number
        failed:
          type: number
        paging:
          type: number
        total:
          type: number
    xpack.usage.Flattened:
      allOf:
      - "$ref": "#/components/schemas/xpack.usage.Base"
      - type: object
        properties:
          field_count:
            type: number
        required:
        - field_count
    xpack.usage.GpuVectorIndexing:
      description: GPU vector indexing usage statistics.
      allOf:
      - "$ref": "#/components/schemas/xpack.usage.Base"
      - type: object
        properties:
          index_build_count:
            description: Total GPU index builds across the cluster.
            type: number
          nodes_with_gpu:
            description: Count of data nodes with GPU support.
            type: number
          nodes:
            description: Per-node GPU details including type, memory, enabled status,
              and build count.
            type: array
            items:
              "$ref": "#/components/schemas/xpack.usage.GpuNodeStats"
        required:
        - index_build_count
        - nodes_with_gpu
        - nodes
    xpack.usage.GpuNodeStats:
      description: Per-node GPU statistics for vector indexing.
      type: object
      properties:
        type:
          description: GPU device type (e.g., "NVIDIA L4", "NVIDIA A100").
          type: string
        memory_in_bytes:
          description: GPU memory in bytes.
          type: number
        enabled:
          description: Whether GPU vector indexing is enabled on this node.
          type: boolean
        index_build_count:
          description: Number of GPU index builds performed on this node.
          type: number
      required:
      - type
      - memory_in_bytes
      - enabled
      - index_build_count
    xpack.usage.HealthStatistics:
      allOf:
      - "$ref": "#/components/schemas/xpack.usage.Base"
      - type: object
        properties:
          invocations:
            allOf:
            - "$ref": "#/components/schemas/xpack.usage.Invocations"
        required:
        - invocations
    xpack.usage.Invocations:
      type: object
      properties:
        total:
          type: number
      required:
      - total
    xpack.usage.Ilm:
      type: object
      properties:
        policy_count:
          type: number
        policy_stats:
          type: array
          items:
            "$ref": "#/components/schemas/xpack.usage.IlmPolicyStatistics"
      required:
      - policy_count
      - policy_stats
    xpack.usage.IlmPolicyStatistics:
      type: object
      properties:
        indices_managed:
          type: number
        phases:
          allOf:
          - "$ref": "#/components/schemas/xpack.usage.Phases"
      required:
      - indices_managed
      - phases
    xpack.usage.Phases:
      type: object
      properties:
        cold:
          allOf:
          - "$ref": "#/components/schemas/xpack.usage.Phase"
        delete:
          allOf:
          - "$ref": "#/components/schemas/xpack.usage.Phase"
        frozen:
          allOf:
          - "$ref": "#/components/schemas/xpack.usage.Phase"
        hot:
          allOf:
          - "$ref": "#/components/schemas/xpack.usage.Phase"
        warm:
          allOf:
          - "$ref": "#/components/schemas/xpack.usage.Phase"
    xpack.usage.Phase:
      type: object
      properties:
        actions:
          type: array
          items:
            type: string
        min_age:
          allOf:
          - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
      required:
      - actions
      - min_age
    xpack.usage.MachineLearning:
      allOf:
      - "$ref": "#/components/schemas/xpack.usage.Base"
      - type: object
        properties:
          datafeeds:
            type: object
            additionalProperties:
              "$ref": "#/components/schemas/xpack.usage.Datafeed"
          jobs:
            description: Job usage statistics. The `_all` entry is always present
              and gathers statistics for all jobs.
            type: object
            additionalProperties:
              "$ref": "#/components/schemas/xpack.usage.JobUsage"
          node_count:
            type: number
          data_frame_analytics_jobs:
            allOf:
            - "$ref": "#/components/schemas/xpack.usage.MlDataFrameAnalyticsJobs"
          inference:
            allOf:
            - "$ref": "#/components/schemas/xpack.usage.MlInference"
        required:
        - datafeeds
        - jobs
        - node_count
        - data_frame_analytics_jobs
        - inference
    xpack.usage.Datafeed:
      type: object
      properties:
        count:
          type: number
      required:
      - count
    xpack.usage.JobUsage:
      type: object
      properties:
        count:
          type: number
        created_by:
          type: object
          additionalProperties:
            type: number
        detectors:
          allOf:
          - "$ref": "#/components/schemas/ml._types.JobStatistics"
        forecasts:
          allOf:
          - "$ref": "#/components/schemas/xpack.usage.MlJobForecasts"
        model_size:
          allOf:
          - "$ref": "#/components/schemas/ml._types.JobStatistics"
      required:
      - count
      - created_by
      - detectors
      - forecasts
      - model_size
    xpack.usage.MlJobForecasts:
      type: object
      properties:
        total:
          type: number
        forecasted_jobs:
          type: number
      required:
      - total
      - forecasted_jobs
    xpack.usage.MlDataFrameAnalyticsJobs:
      type: object
      properties:
        memory_usage:
          allOf:
          - "$ref": "#/components/schemas/xpack.usage.MlDataFrameAnalyticsJobsMemory"
        _all:
          allOf:
          - "$ref": "#/components/schemas/xpack.usage.MlDataFrameAnalyticsJobsCount"
        analysis_counts:
          allOf:
          - "$ref": "#/components/schemas/xpack.usage.MlDataFrameAnalyticsJobsAnalysis"
        stopped:
          allOf:
          - "$ref": "#/components/schemas/xpack.usage.MlDataFrameAnalyticsJobsCount"
      required:
      - _all
    xpack.usage.MlDataFrameAnalyticsJobsMemory:
      type: object
      properties:
        peak_usage_bytes:
          allOf:
          - "$ref": "#/components/schemas/ml._types.JobStatistics"
      required:
      - peak_usage_bytes
    xpack.usage.MlDataFrameAnalyticsJobsCount:
      type: object
      properties:
        count:
          type: number
      required:
      - count
    xpack.usage.MlDataFrameAnalyticsJobsAnalysis:
      type: object
      properties:
        classification:
          type: number
        outlier_detection:
          type: number
        regression:
          type: number
    xpack.usage.MlInference:
      type: object
      properties:
        ingest_processors:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/xpack.usage.MlInferenceIngestProcessor"
        trained_models:
          allOf:
          - "$ref": "#/components/schemas/xpack.usage.MlInferenceTrainedModels"
        deployments:
          x-state: Generally available; Added in 8.0.0
          allOf:
          - "$ref": "#/components/schemas/xpack.usage.MlInferenceDeployments"
      required:
      - ingest_processors
      - trained_models
    xpack.usage.MlInferenceIngestProcessor:
      type: object
      properties:
        num_docs_processed:
          allOf:
          - "$ref": "#/components/schemas/xpack.usage.MlInferenceIngestProcessorCount"
        pipelines:
          allOf:
          - "$ref": "#/components/schemas/xpack.usage.MlCounter"
        num_failures:
          allOf:
          - "$ref": "#/components/schemas/xpack.usage.MlInferenceIngestProcessorCount"
        time_ms:
          allOf:
          - "$ref": "#/components/schemas/xpack.usage.MlInferenceIngestProcessorCount"
      required:
      - num_docs_processed
      - pipelines
      - num_failures
      - time_ms
    xpack.usage.MlInferenceIngestProcessorCount:
      type: object
      properties:
        max:
          type: number
        sum:
          type: number
        min:
          type: number
      required:
      - max
      - sum
      - min
    xpack.usage.MlCounter:
      type: object
      properties:
        count:
          type: number
      required:
      - count
    xpack.usage.MlInferenceTrainedModels:
      type: object
      properties:
        estimated_operations:
          allOf:
          - "$ref": "#/components/schemas/ml._types.JobStatistics"
        estimated_heap_memory_usage_bytes:
          allOf:
          - "$ref": "#/components/schemas/ml._types.JobStatistics"
        count:
          allOf:
          - "$ref": "#/components/schemas/xpack.usage.MlInferenceTrainedModelsCount"
        _all:
          allOf:
          - "$ref": "#/components/schemas/xpack.usage.MlCounter"
        model_size_bytes:
          x-state: Generally available; Added in 8.0.0
          allOf:
          - "$ref": "#/components/schemas/ml._types.JobStatistics"
      required:
      - _all
    xpack.usage.MlInferenceTrainedModelsCount:
      type: object
      properties:
        total:
          type: number
        prepackaged:
          type: number
        other:
          type: number
        pass_through:
          type: number
        regression:
          type: number
        classification:
          type: number
        ner:
          type: number
        text_embedding:
          type: number
      required:
      - total
      - prepackaged
      - other
    xpack.usage.MlInferenceDeployments:
      type: object
      properties:
        count:
          type: number
        inference_counts:
          allOf:
          - "$ref": "#/components/schemas/ml._types.JobStatistics"
        model_sizes_bytes:
          allOf:
          - "$ref": "#/components/schemas/ml._types.JobStatistics"
        time_ms:
          allOf:
          - "$ref": "#/components/schemas/xpack.usage.MlInferenceDeploymentsTimeMs"
      required:
      - count
      - inference_counts
      - model_sizes_bytes
      - time_ms
    xpack.usage.MlInferenceDeploymentsTimeMs:
      type: object
      properties:
        avg:
          type: number
      required:
      - avg
    xpack.usage.Monitoring:
      allOf:
      - "$ref": "#/components/schemas/xpack.usage.Base"
      - type: object
        properties:
          collection_enabled:
            type: boolean
          enabled_exporters:
            type: object
            additionalProperties:
              type: number
        required:
        - collection_enabled
        - enabled_exporters
    xpack.usage.RuntimeFieldTypes:
      allOf:
      - "$ref": "#/components/schemas/xpack.usage.Base"
      - type: object
        properties:
          field_types:
            type: array
            items:
              "$ref": "#/components/schemas/xpack.usage.RuntimeFieldsType"
        required:
        - field_types
    xpack.usage.RuntimeFieldsType:
      type: object
      properties:
        chars_max:
          type: number
        chars_total:
          type: number
        count:
          type: number
        doc_max:
          type: number
        doc_total:
          type: number
        index_count:
          type: number
        lang:
          type: array
          items:
            type: string
        lines_max:
          type: number
        lines_total:
          type: number
        name:
          allOf:
          - "$ref": "#/components/schemas/_types.Field"
        scriptless_count:
          type: number
        shadowed_count:
          type: number
        source_max:
          type: number
        source_total:
          type: number
      required:
      - chars_max
      - chars_total
      - count
      - doc_max
      - doc_total
      - index_count
      - lang
      - lines_max
      - lines_total
      - name
      - scriptless_count
      - shadowed_count
      - source_max
      - source_total
    xpack.usage.SearchableSnapshots:
      allOf:
      - "$ref": "#/components/schemas/xpack.usage.Base"
      - type: object
        properties:
          indices_count:
            type: number
          full_copy_indices_count:
            type: number
          shared_cache_indices_count:
            type: number
        required:
        - indices_count
    xpack.usage.Security:
      allOf:
      - "$ref": "#/components/schemas/xpack.usage.Base"
      - type: object
        properties:
          api_key_service:
            allOf:
            - "$ref": "#/components/schemas/xpack.usage.FeatureToggle"
          anonymous:
            allOf:
            - "$ref": "#/components/schemas/xpack.usage.FeatureToggle"
          audit:
            allOf:
            - "$ref": "#/components/schemas/xpack.usage.Audit"
          fips_140:
            allOf:
            - "$ref": "#/components/schemas/xpack.usage.FeatureToggle"
          ipfilter:
            allOf:
            - "$ref": "#/components/schemas/xpack.usage.IpFilter"
          realms:
            type: object
            additionalProperties:
              "$ref": "#/components/schemas/xpack.usage.Realm"
          role_mapping:
            type: object
            additionalProperties:
              "$ref": "#/components/schemas/xpack.usage.RoleMapping"
          roles:
            allOf:
            - "$ref": "#/components/schemas/xpack.usage.SecurityRoles"
          ssl:
            allOf:
            - "$ref": "#/components/schemas/xpack.usage.Ssl"
          system_key:
            allOf:
            - "$ref": "#/components/schemas/xpack.usage.FeatureToggle"
          token_service:
            allOf:
            - "$ref": "#/components/schemas/xpack.usage.FeatureToggle"
          operator_privileges:
            allOf:
            - "$ref": "#/components/schemas/xpack.usage.Base"
        required:
        - api_key_service
        - anonymous
        - audit
        - fips_140
        - ipfilter
        - realms
        - role_mapping
        - roles
        - ssl
        - token_service
        - operator_privileges
    xpack.usage.FeatureToggle:
      type: object
      properties:
        enabled:
          type: boolean
      required:
      - enabled
    xpack.usage.Audit:
      allOf:
      - "$ref": "#/components/schemas/xpack.usage.FeatureToggle"
      - type: object
        properties:
          outputs:
            type: array
            items:
              type: string
    xpack.usage.IpFilter:
      type: object
      properties:
        http:
          type: boolean
        transport:
          type: boolean
      required:
      - http
      - transport
    xpack.usage.Realm:
      allOf:
      - "$ref": "#/components/schemas/xpack.usage.Base"
      - type: object
        properties:
          name:
            type: array
            items:
              type: string
          order:
            type: array
            items:
              type: number
          size:
            type: array
            items:
              type: number
          cache:
            type: array
            items:
              "$ref": "#/components/schemas/xpack.usage.RealmCache"
          has_authorization_realms:
            type: array
            items:
              type: boolean
          has_default_username_pattern:
            type: array
            items:
              type: boolean
          has_truststore:
            type: array
            items:
              type: boolean
          is_authentication_delegated:
            type: array
            items:
              type: boolean
    xpack.usage.RealmCache:
      type: object
      properties:
        size:
          type: number
      required:
      - size
    xpack.usage.RoleMapping:
      type: object
      properties:
        enabled:
          type: number
        size:
          type: number
      required:
      - enabled
      - size
    xpack.usage.SecurityRoles:
      type: object
      properties:
        native:
          allOf:
          - "$ref": "#/components/schemas/xpack.usage.SecurityRolesNative"
        dls:
          allOf:
          - "$ref": "#/components/schemas/xpack.usage.SecurityRolesDls"
        file:
          allOf:
          - "$ref": "#/components/schemas/xpack.usage.SecurityRolesFile"
      required:
      - native
      - dls
      - file
    xpack.usage.SecurityRolesNative:
      type: object
      properties:
        dls:
          type: boolean
        fls:
          type: boolean
        size:
          type: number
      required:
      - dls
      - fls
      - size
    xpack.usage.SecurityRolesFile:
      type: object
      properties:
        dls:
          type: boolean
        fls:
          type: boolean
        size:
          type: number
      required:
      - dls
      - fls
      - size
    xpack.usage.Ssl:
      type: object
      properties:
        http:
          allOf:
          - "$ref": "#/components/schemas/xpack.usage.FeatureToggle"
        transport:
          allOf:
          - "$ref": "#/components/schemas/xpack.usage.FeatureToggle"
      required:
      - http
      - transport
    xpack.usage.Slm:
      allOf:
      - "$ref": "#/components/schemas/xpack.usage.Base"
      - type: object
        properties:
          policy_count:
            type: number
          policy_stats:
            allOf:
            - "$ref": "#/components/schemas/slm._types.Statistics"
    xpack.usage.Sql:
      allOf:
      - "$ref": "#/components/schemas/xpack.usage.Base"
      - type: object
        properties:
          features:
            type: object
            additionalProperties:
              type: number
          queries:
            type: object
            additionalProperties:
              "$ref": "#/components/schemas/xpack.usage.Query"
        required:
        - features
        - queries
    xpack.usage.Vector:
      allOf:
      - "$ref": "#/components/schemas/xpack.usage.Base"
      - type: object
        properties:
          dense_vector_dims_avg_count:
            type: number
          dense_vector_fields_count:
            type: number
          sparse_vector_fields_count:
            type: number
        required:
        - dense_vector_dims_avg_count
        - dense_vector_fields_count
  responses:
    async_search.submit-200:
      description: ''
      content:
        application/json:
          schema:
            "$ref": "#/components/schemas/async_search._types.AsyncSearchDocumentResponseBase"
          examples:
            AsyncSearchSubmitResponseExample1:
              description: A successful response when performing search asynchronously.
              value: |-
                {
                  "id" : "FmRldE8zREVEUzA2ZVpUeGs2ejJFUFEaMkZ5QTVrSTZSaVN3WlNFVmtlWHJsdzoxMDc=",
                  "is_partial" : true,
                  "is_running" : true,
                  "start_time_in_millis" : 1583945890986,
                  "expiration_time_in_millis" : 1584377890986,
                  "response" : {
                    "took" : 1122,
                    "timed_out" : false,
                    "num_reduce_phases" : 0,
                    "_shards" : {
                      "total" : 562,
                      "successful" : 3,
                      "skipped" : 0,
                      "failed" : 0
                    },
                    "hits" : {
                      "total" : {
                        "value" : 157483,
                        "relation" : "gte"
                      },
                      "max_score" : null,
                      "hits" : [ ]
                    }
                  }
                }
    bulk-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              errors:
                description: If `true`, one or more of the operations in the bulk
                  request did not complete successfully.
                type: boolean
              items:
                description: The result of each operation in the bulk request, in
                  the order they were submitted.
                type: array
                items:
                  type: object
                  additionalProperties:
                    "$ref": "#/components/schemas/_global.bulk.ResponseItem"
                  minProperties: 1
                  maxProperties: 1
              took:
                description: The length of time, in milliseconds, it took to process
                  the bulk request.
                type: number
              ingest_took:
                type: number
            required:
            - errors
            - items
            - took
          examples:
            BulkResponseExample1:
              summary: Multiple successful operations
              value: |-
                {
                   "took": 30,
                   "errors": false,
                   "items": [
                      {
                         "index": {
                            "_index": "test",
                            "_id": "1",
                            "_version": 1,
                            "result": "created",
                            "_shards": {
                               "total": 2,
                               "successful": 1,
                               "failed": 0
                            },
                            "status": 201,
                            "_seq_no" : 0,
                            "_primary_term": 1
                         }
                      },
                      {
                         "delete": {
                            "_index": "test",
                            "_id": "2",
                            "_version": 1,
                            "result": "not_found",
                            "_shards": {
                               "total": 2,
                               "successful": 1,
                               "failed": 0
                            },
                            "status": 404,
                            "_seq_no" : 1,
                            "_primary_term" : 2
                         }
                      },
                      {
                         "create": {
                            "_index": "test",
                            "_id": "3",
                            "_version": 1,
                            "result": "created",
                            "_shards": {
                               "total": 2,
                               "successful": 1,
                               "failed": 0
                            },
                            "status": 201,
                            "_seq_no" : 2,
                            "_primary_term" : 3
                         }
                      },
                      {
                         "update": {
                            "_index": "test",
                            "_id": "1",
                            "_version": 2,
                            "result": "updated",
                            "_shards": {
                                "total": 2,
                                "successful": 1,
                                "failed": 0
                            },
                            "status": 200,
                            "_seq_no" : 3,
                            "_primary_term" : 4
                         }
                      }
                   ]
                }
            BulkResponseExample2:
              summary: Failed actions
              description: 'If you run `POST /_bulk` with operations that update non-existent
                documents, the operations cannot complete successfully. The API returns
                a response with an `errors` property value `true`. The response also
                includes an error object for any failed operations. The error object
                contains additional information about the failure, such as the error
                type and reason.

                '
              value: |-
                {
                  "took": 486,
                  "errors": true,
                  "items": [
                    {
                      "update": {
                        "_index": "index1",
                        "_id": "5",
                        "status": 404,
                        "error": {
                          "type": "document_missing_exception",
                          "reason": "[5]: document missing",
                          "index_uuid": "aAsFqTI0Tc2W0LCWgPNrOA",
                          "shard": "0",
                          "index": "index1"
                        }
                      }
                    },
                    {
                      "update": {
                        "_index": "index1",
                        "_id": "6",
                        "status": 404,
                        "error": {
                          "type": "document_missing_exception",
                          "reason": "[6]: document missing",
                          "index_uuid": "aAsFqTI0Tc2W0LCWgPNrOA",
                          "shard": "0",
                          "index": "index1"
                        }
                      }
                    },
                    {
                      "create": {
                        "_index": "index1",
                        "_id": "7",
                        "_version": 1,
                        "result": "created",
                        "_shards": {
                          "total": 2,
                          "successful": 1,
                          "failed": 0
                        },
                        "_seq_no": 0,
                        "_primary_term": 1,
                        "status": 201
                      }
                    }
                  ]
                }
            BulkResponseExample3:
              summary: Filter for failed operations
              description: 'An example response from `POST /_bulk?filter_path=items.*.error`,
                which returns only information about failed operations.

                '
              value: |-
                {
                  "items": [
                    {
                      "update": {
                        "error": {
                          "type": "document_missing_exception",
                          "reason": "[5]: document missing",
                          "index_uuid": "aAsFqTI0Tc2W0LCWgPNrOA",
                          "shard": "0",
                          "index": "index1"
                        }
                      }
                    },
                    {
                      "update": {
                        "error": {
                          "type": "document_missing_exception",
                          "reason": "[6]: document missing",
                          "index_uuid": "aAsFqTI0Tc2W0LCWgPNrOA",
                          "shard": "0",
                          "index": "index1"
                        }
                      }
                    }
                  ]
                }
    cat.aliases-200:
      description: ''
      content:
        application/json:
          schema:
            type: array
            items:
              "$ref": "#/components/schemas/cat.aliases.AliasesRecord"
          examples:
            CatAliasesResponseExample1:
              description: 'A successful response from `GET _cat/aliases?format=json&v=true`.
                This response shows that `alias2` has configured a filter and `alias3`
                and `alias4` have routing configurations.

                '
              value: |-
                [
                  {
                    "alias": "alias1",
                    "index": "test1",
                    "filter": "-",
                    "routing.index": "-",
                    "routing.search": "-",
                    "is_write_index": "true"
                  },
                  {
                    "alias": "alias1",
                    "index": "test1",
                    "filter": "*",
                    "routing.index": "-",
                    "routing.search": "-",
                    "is_write_index": "true"
                  },
                  {
                    "alias": "alias3",
                    "index": "test1",
                    "filter": "-",
                    "routing.index": "1",
                    "routing.search": "1",
                    "is_write_index": "true"
                  },
                  {
                    "alias": "alias4",
                    "index": "test1",
                    "filter": "-",
                    "routing.index": "2",
                    "routing.search": "1,2",
                    "is_write_index": "true"
                  }
                ]
    cat.allocation-200:
      description: ''
      content:
        application/json:
          schema:
            type: array
            items:
              "$ref": "#/components/schemas/cat.allocation.AllocationRecord"
          examples:
            CatAllocationResponseExample1:
              description: 'A successful response from `GET /_cat/allocation?v=true&format=json`.
                It shows a single shard is allocated to the one node available.

                '
              value: |-
                [
                  {
                    "shards": "1",
                    "shards.undesired": "0",
                    "write_load.forecast": "0.0",
                    "disk.indices.forecast": "260b",
                    "disk.indices": "260b",
                    "disk.used": "47.3gb",
                    "disk.avail": "43.4gb",
                    "disk.total": "100.7gb",
                    "disk.percent": "46",
                    "host": "127.0.0.1",
                    "ip": "127.0.0.1",
                    "node": "CSUXak2",
                    "node.role": "himrst"
                  }
                ]
    cat.circuit_breaker-200:
      description: ''
      content:
        application/json:
          schema:
            type: array
            items:
              "$ref": "#/components/schemas/cat.circuit_breaker.CircuitBreakerRecord"
          examples:
            CatCircuitBreakerResponseExample1:
              description: 'A successful response from `GET /_cat/circuit_breaker?v=true&format=json`.
                It shows two circuit breakers are active on one node.

                '
              value: |-
                [
                  {
                    "breaker": "request",
                    "estimated": "0b",
                    "limit": "614.3mb",
                    "node_id": "ozKxpP9oS3SL0Sp-Mfxc6w",
                    "tripped": "0"
                  },
                  {
                    "breaker": "fielddata",
                    "estimated": "0b",
                    "limit": "409.5mb",
                    "node_id": "ozKxpP9oS3SL0Sp-Mfxc6w",
                    "tripped": "0"
                  }
                ]
    cat.component_templates-200:
      description: ''
      content:
        application/json:
          schema:
            type: array
            items:
              "$ref": "#/components/schemas/cat.component_templates.ComponentTemplate"
          examples:
            CatComponentTemplatesResponseExample1:
              description: 'A successful response from `GET _cat/component_templates/my-template-*?v=true&s=name&format=json`.

                '
              value: |-
                [
                  {
                    "name": "my-template-1",
                    "version": "null",
                    "alias_count": "0",
                    "mapping_count": "0",
                    "settings_count": "1",
                    "metadata_count": "0",
                    "included_in": "[my-index-template]"
                  },
                    {
                    "name": "my-template-2",
                    "version": null,
                    "alias_count": "0",
                    "mapping_count": "3",
                    "settings_count": "0",
                    "metadata_count": "0",
                    "included_in": "[my-index-template]"
                  }
                ]
    cat.count-200:
      description: ''
      content:
        application/json:
          schema:
            type: array
            items:
              "$ref": "#/components/schemas/cat.count.CountRecord"
          examples:
            CatCountResponseExample1:
              summary: Single data stream or index count
              description: 'A successful response from `GET /_cat/count/my-index-000001?v=true&format=json`.
                It retrieves the document count for the `my-index-000001` data stream
                or index.

                '
              value: |-
                [
                  {
                    "epoch": "1475868259",
                    "timestamp": "15:24:20",
                    "count": "120"
                  }
                ]
            CatCountResponseExample2:
              summary: All data streams and indices count
              description: 'A successful response from `GET /_cat/count?v=true&format=json`.
                It retrieves the document count for all data streams and indices in
                the cluster.

                '
              value: |-
                [
                  {
                    "epoch": "1475868259",
                    "timestamp": "15:24:20",
                    "count": "121"
                  }
                ]
    cat.fielddata-200:
      description: ''
      content:
        application/json:
          schema:
            type: array
            items:
              "$ref": "#/components/schemas/cat.fielddata.FielddataRecord"
          examples:
            CatFielddataResponseExample1:
              summary: Single field data
              description: 'A successful response from `GET /_cat/fielddata?v=true&fields=body&format=json`.
                You can specify an individual field in the request body or URL path.
                This example retrieves heap memory size information for the `body`
                field.

                '
              value: |-
                [
                  {
                    "id": "Nqk-6inXQq-OxUfOUI8jNQ",
                    "host": "127.0.0.1",
                    "ip": "127.0.0.1",
                    "node": "Nqk-6in",
                    "field": "body",
                    "size": "544b"
                  }
                ]
            CatFielddataResponseExample2:
              summary: Multiple fields data
              description: 'A successful response from `GET /_cat/fielddata/body,soul?v=true&format=json`.
                You can specify a comma-separated list of fields in the request body
                or URL path. This example retrieves heap memory size information for
                the `body` and `soul` fields. To get information for all fields, run
                `GET /_cat/fielddata?v=true`.

                '
              value: |-
                [
                  {
                    "id": "Nqk-6inXQq-OxUfOUI8jNQ",
                    "host": "1127.0.0.1",
                    "ip": "127.0.0.1",
                    "node": "Nqk-6in",
                    "field": "body",
                    "size": "544b"
                  },
                  {
                    "id": "Nqk-6inXQq-OxUfOUI8jNQ",
                    "host": "127.0.0.1",
                    "ip": "127.0.0.1",
                    "node": "Nqk-6in",
                    "field": "soul",
                    "size": "480b"
                  }
                ]
    cat.indices-200:
      description: ''
      content:
        application/json:
          schema:
            type: array
            items:
              "$ref": "#/components/schemas/cat.indices.IndicesRecord"
          examples:
            CatIndicesResponseExample1:
              description: 'A successful response from `GET /_cat/indices/my-index-*?v=true&s=index&format=json`.

                '
              value: |-
                [
                  {
                    "health": "yellow",
                    "status": "open",
                    "index": "my-index-000001",
                    "uuid": "u8FNjxh8Rfy_awN11oDKYQ",
                    "pri": "1",
                    "rep": "1",
                    "docs.count": "1200",
                    "docs.deleted": "0",
                    "store.size": "88.1kb",
                    "pri.store.size": "88.1kb",
                    "dataset.size": "88.1kb"
                  },
                  {
                    "health": "green",
                    "status": "open",
                    "index": "my-index-000002",
                    "uuid": "nYFWZEO7TUiOjLQXBaYJpA ",
                    "pri": "1",
                    "rep": "0",
                    "docs.count": "0",
                    "docs.deleted": "0",
                    "store.size": "260b",
                    "pri.store.size": "260b",
                    "dataset.size": "260b"
                  }
                ]
    cat.ml_data_frame_analytics-200:
      description: ''
      content:
        application/json:
          schema:
            type: array
            items:
              "$ref": "#/components/schemas/cat.ml_data_frame_analytics.DataFrameAnalyticsRecord"
          examples:
            CatDataframeanalyticsResponseExample1:
              description: A successful response from `GET _cat/ml/data_frame/analytics?v=true&format=json`.
              value: |-
                [
                  {
                    "id": "classifier_job_1",
                    "type": "classification",
                    "create_time": "2020-02-12T11:49:09.594Z",
                    "state": "stopped"
                  },
                    {
                    "id": "classifier_job_2",
                    "type": "classification",
                    "create_time": "2020-02-12T11:49:14.479Z",
                    "state": "stopped"
                  },
                  {
                    "id": "classifier_job_3",
                    "type": "classification",
                    "create_time": "2020-02-12T11:49:16.928Z",
                    "state": "stopped"
                  },
                  {
                    "id": "classifier_job_4",
                    "type": "classification",
                    "create_time": "2020-02-12T11:49:19.127Z",
                    "state": "stopped"
                  },
                  {
                    "id": "classifier_job_5",
                    "type": "classification",
                    "create_time": "2020-02-12T11:49:21.349Z",
                    "state": "stopped"
                  }
                ]
    cat.ml_datafeeds-200:
      description: ''
      content:
        application/json:
          schema:
            type: array
            items:
              "$ref": "#/components/schemas/cat.ml_datafeeds.DatafeedsRecord"
          examples:
            CatDatafeedsResponseExample1:
              description: A successful response from `GET _cat/ml/datafeeds?v=true&format=json`.
              value: |-
                [
                  {
                    "id": "datafeed-high_sum_total_sales",
                    "state": "stopped",
                    "buckets.count": "743",
                    "search.count": "7"
                  },
                  {
                    "id": "datafeed-low_request_rate",
                    "state": "stopped",
                    "buckets.count": "1457",
                    "search.count": "3"
                  },
                  {
                    "id": "datafeed-response_code_rates",
                    "state": "stopped",
                    "buckets.count": "1460",
                    "search.count": "18"
                  },
                  {
                    "id": "datafeed-url_scanning",
                    "state": "stopped",
                    "buckets.count": "1460",
                    "search.count": "18"
                  }
                ]
    cat.ml_jobs-200:
      description: ''
      content:
        application/json:
          schema:
            type: array
            items:
              "$ref": "#/components/schemas/cat.ml_jobs.JobsRecord"
          examples:
            CatJobsResponseExample1:
              description: A successful response from `GET _cat/ml/anomaly_detectors?h=id,s,dpr,mb&v=true&format=json`.
              value: |-
                [
                  {
                    "id": "high_sum_total_sales",
                    "s": "closed",
                    "dpr": "14022",
                    "mb": "1.5mb"
                  },
                  {
                    "id": "low_request_rate",
                    "s": "closed",
                    "dpr": "1216",
                    "mb": "40.5kb"
                  },
                  {
                    "id": "response_code_rates",
                    "s": "closed",
                    "dpr": "28146",
                    "mb": "132.7kb"
                  },
                  {
                    "id": "url_scanning",
                    "s": "closed",
                    "dpr": "28146",
                    "mb": "501.6kb"
                  }
                ]
    cat.ml_trained_models-200:
      description: ''
      content:
        application/json:
          schema:
            type: array
            items:
              "$ref": "#/components/schemas/cat.ml_trained_models.TrainedModelsRecord"
          examples:
            CatTrainedModelsResponseExample1:
              description: A successful response from `GET _cat/ml/trained_models?v=true&format=json`.
              value: |-
                [
                  {
                    "id": "ddddd-1580216177138",
                    "heap_size": "0b",
                    "operations": "196",
                    "create_time": "2025-03-25T00:01:38.662Z",
                    "type": "pytorch",
                    "ingest.pipelines": "0",
                    "data_frame.id": "__none__"
                  },
                  {
                    "id": "lang_ident_model_1",
                    "heap_size": "1mb",
                    "operations": "39629",
                    "create_time": "2019-12-05T12:28:34.594Z",
                    "type": "lang_ident",
                    "ingest.pipelines": "0",
                    "data_frame.id": "__none__"
                  }
                ]
    cat.recovery-200:
      description: ''
      content:
        application/json:
          schema:
            type: array
            items:
              "$ref": "#/components/schemas/cat.recovery.RecoveryRecord"
          examples:
            CatRecoveryResponseExample1:
              summary: No ongoing recoveries
              description: 'A successful response from `GET _cat/recovery?v=true&format=json`.
                In this example, the source and target nodes are the same because
                the recovery type is `store`, meaning they were read from local storage
                on node start.

                '
              value: |-
                [
                  {
                    "index": "my-index-000001 ",
                    "shard": "0",
                    "time": "13ms",
                    "type": "store",
                    "stage": "done",
                    "source_host": "n/a",
                    "source_node": "n/a",
                    "target_host": "127.0.0.1",
                    "target_node": "node-0",
                    "repository": "n/a",
                    "snapshot": "n/a",
                    "files": "0",
                    "files_recovered": "0",
                    "files_percent": "100.0%",
                    "files_total": "13",
                    "bytes": "0b",
                    "bytes_recovered": "0b",
                    "bytes_percent": "100.0%",
                    "bytes_total": "9928b",
                    "translog_ops": "0",
                    "translog_ops_recovered": "0",
                    "translog_ops_percent": "100.0%"
                  }
                ]
            CatRecoveryResponseExample2:
              summary: A live shard recovery
              description: 'A successful response from `GET _cat/recovery?v=true&h=i,s,t,ty,st,shost,thost,f,fp,b,bp&format=json`.
                You can retrieve information about an ongoing recovery for example
                when you increase the replica count of an index and bring another
                node online to host the replicas. In this example, the recovery type
                is `peer`, meaning the shard recovered from another node. The `files`
                and `bytes` are real-time measurements.

                '
              value: |-
                [
                  {
                    "i": "my-index-000001",
                    "s": "0",
                    "t": "1252ms",
                    "ty": "peer",
                    "st": "done",
                    "shost": "192.168.1.1",
                    "thost": "192.168.1.1",
                    "f": "0",
                    "fp": "100.0%",
                    "b": "0b",
                    "bp": "100.0%",
                  }
                ]
            CatRecoveryResponseExample3:
              summary: A snapshot recovery
              description: 'A successful response from `GET _cat/recovery?v=true&h=i,s,t,ty,st,rep,snap,f,fp,b,bp&format=json`.
                You can restore backups of an index using the snapshot and restore
                API. You can use the cat recovery API to get information about a snapshot
                recovery.

                '
              value: |-
                [
                  {
                    "i": "my-index-000001",
                    "s": "0",
                    "t": "1978ms",
                    "ty": "snapshot",
                    "st": "done",
                    "rep": "my-repo",
                    "snap": "snap-1",
                    "f": "79",
                    "fp": "8.0%",
                    "b": "12086",
                    "bp": "9.0%"
                  }
                ]
    cat.segments-200:
      description: ''
      content:
        application/json:
          schema:
            type: array
            items:
              "$ref": "#/components/schemas/cat.segments.SegmentsRecord"
          examples:
            CatSegmentsResponseExample1:
              description: 'A successful response from `GET /_cat/segments?v=true&format=json`.

                '
              value: |-
                [
                  {
                    "index": "test",
                    "shard": "0",
                    "prirep": "p",
                    "ip": "127.0.0.1",
                    "segment": "_0",
                    "generation": "0",
                    "docs.count": "1",
                    "docs.deleted": "0",
                    "size": "3kb",
                    "size.memory": "0",
                    "committed": "false",
                    "searchable": "true",
                    "version": "9.12.0",
                    "compound": "true"
                  },
                  {
                    "index": "test1",
                    "shard": "0",
                    "prirep": "p",
                    "ip": "127.0.0.1",
                    "segment": "_0",
                    "generation": "0",
                    "docs.count": "1",
                    "docs.deleted": "0",
                    "size": "3kb",
                    "size.memory": "0",
                    "committed": "false",
                    "searchable": "true",
                    "version": "9.12.0",
                    "compound": "true"
                  }
                ]
    cat.shards-200:
      description: ''
      content:
        application/json:
          schema:
            type: array
            items:
              "$ref": "#/components/schemas/cat.shards.ShardsRecord"
          examples:
            CatShardsResponseExample1:
              summary: A single data stream or index
              description: 'A successful response from `GET _cat/shards?format=json`.

                '
              value: |-
                [
                  {
                    "index": "my-index-000001",
                    "shard": "0",
                    "prirep": "p",
                    "state": "STARTED",
                    "docs": "3014",
                    "store": "31.1mb",
                    "dataset": "249b",
                    "ip": "192.168.56.10",
                    "node": "H5dfFeA"
                  }
                ]
            CatShardsResponseExample2:
              summary: A wildcard pattern
              description: 'A successful response from `GET _cat/shards/my-index-*?format=json`.
                It returns information for any data streams or indices beginning with
                `my-index-`.

                '
              value: |-
                [
                  {
                    "index": "my-index-000001",
                    "shard": "0",
                    "prirep": "p",
                    "state": "STARTED",
                    "docs": "3014",
                    "store": "31.1mb",
                    "dataset": "249b",
                    "ip": "192.168.56.10",
                    "node": "H5dfFeA"
                  }
                ]
            CatShardsResponseExample3:
              summary: A relocating shard
              description: 'A successful response from `GET _cat/shards?format=json`.
                The `RELOCATING` value in the `state` column indicates the index shard
                is relocating.

                '
              value: |-
                [
                  {
                    "index": "my-index-000001",
                    "shard": "0",
                    "prirep": "p",
                    "state": "RELOCATING",
                    "docs": "3014",
                    "store": "31.1mb",
                    "dataset": "249b",
                    "ip": "192.168.56.10",
                    "node": "H5dfFeA -> -> 192.168.56.30 bGG90GE"
                  }
                ]
            CatShardsResponseExample4:
              summary: Shard states
              description: 'A successful response from `GET _cat/shards?format=json`.
                Before a shard is available for use, it goes through an `INITIALIZING`
                state. You can use the cat shards API to see which shards are initializing.

                '
              value: |-
                [
                  {
                    "index": "my-index-000001",
                    "shard": "0",
                    "prirep": "p",
                    "state": "STARTED",
                    "docs": "3014",
                    "store": "31.1mb",
                    "dataset": "249b",
                    "ip": "192.168.56.10",
                    "node": "H5dfFeA"
                  },
                  {
                    "index": "my-index-000001",
                    "shard": "0",
                    "prirep": "r",
                    "state": "INITIALIZING",
                    "docs": "0",
                    "store": "14.3mb",
                    "dataset": "249b",
                    "ip": "192.168.56.30",
                    "node": "bGG90GE"
                  }
                ]
            CatShardsResponseExample5:
              summary: Reasons for unassigned shards
              description: 'A successful response from `GET _cat/shards?h=index,shard,prirep,state,unassigned.reason&format=json`.
                It includes the `unassigned.reason` column, which indicates why a
                shard is unassigned.

                '
              value: |-
                [
                  {
                    "index": "my-index-000001",
                    "shard": "0",
                    "prirep": "p",
                    "state": "STARTED",
                    "unassigned.reason": "3014 31.1mb 192.168.56.10 H5dfFeA"
                  },
                  {
                    "index": "my-index-000001",
                    "shard": "0",
                    "prirep": "r",
                    "state": "STARTED",
                    "unassigned.reason": "3014 31.1mb 192.168.56.30 bGG90GE"
                  },
                  {
                    "index": "my-index-000001",
                    "shard": "0",
                    "prirep": "r",
                    "state": "STARTED",
                    "unassigned.reason": "3014 31.1mb 192.168.56.20 I8hydUG"
                  },
                  {
                    "index": "my-index-000001",
                    "shard": "0",
                    "prirep": "r",
                    "state": "UNASSIGNED",
                    "unassigned.reason": "ALLOCATION_FAILED"
                  }
                ]
    cat.snapshots-200:
      description: ''
      content:
        application/json:
          schema:
            type: array
            items:
              "$ref": "#/components/schemas/cat.snapshots.SnapshotsRecord"
          examples:
            CatSnapshotsResponseExample1:
              description: 'A successful response from `GET /_cat/snapshots/repo1?v=true&s=id&format=json`.

                '
              value: |-
                [
                  {
                    "id": "snap1",
                    "repository": "repo1",
                    "status": "FAILED",
                    "start_epoch": "1445616705",
                    "start_time": "18:11:45",
                    "end_epoch": "1445616978",
                    "end_time": "18:16:18",
                    "duration": "4.6m",
                    "indices": "1",
                    "successful_shards": "4",
                    "failed_shards": "1",
                    "total_shards": "5"
                  },
                  {
                    "id": "snap2",
                    "repository": "repo1",
                    "status": "SUCCESS",
                    "start_epoch": "1445634298",
                    "start_time": "23:04:58",
                    "end_epoch": "1445634672",
                    "end_time": "23:11:12",
                    "duration": "6.2m",
                    "indices": "2",
                    "successful_shards": "10",
                    "failed_shards": "0",
                    "total_shards": "10"
                  }
                ]
    cat.templates-200:
      description: ''
      content:
        application/json:
          schema:
            type: array
            items:
              "$ref": "#/components/schemas/cat.templates.TemplatesRecord"
          examples:
            CatTemplatesResponseExample1:
              description: 'A successful response from `GET _cat/templates/my-template-*?v=true&s=name&format=json`.

                '
              value: |-
                [
                  {
                    "name": "my-template-0",
                    "index_patterns": "[te*]",
                    "order": "500",
                    "version": null,
                    "composed_of": "[]"
                  },
                  {
                    "name": "my-template-1",
                    "index_patterns": "[tea*]",
                    "order": "501",
                    "version": null,
                    "composed_of": "[]"
                  },
                  {
                    "name": "my-template-2",
                    "index_patterns": "[teak*]",
                    "order": "502",
                    "version": "7",
                    "composed_of": "[]"
                  }
                ]
    cat.thread_pool-200:
      description: ''
      content:
        application/json:
          schema:
            type: array
            items:
              "$ref": "#/components/schemas/cat.thread_pool.ThreadPoolRecord"
          examples:
            CatThreadPoolResponseExample1:
              summary: Default columns
              description: 'A successful response from `GET /_cat/thread_pool?format=json`.

                '
              value: |-
                [
                  {
                    "node_name": "node-0",
                    "name": "analyze",
                    "active": "0",
                    "queue": "0",
                    "rejected": "0"
                  },
                  {
                    "node_name": "node-0",
                    "name": "fetch_shard_started",
                    "active": "0",
                    "queue": "0",
                    "rejected": "0"
                  },
                  {
                    "node_name": "node-0",
                    "name": "fetch_shard_store",
                    "active": "0",
                    "queue": "0",
                    "rejected": "0"
                  },
                  {
                    "node_name": "node-0",
                    "name": "flush",
                    "active": "0",
                    "queue": "0",
                    "rejected": "0"
                  },
                  {
                    "node_name": "node-0",
                    "name": "write",
                    "active": "0",
                    "queue": "0",
                    "rejected": "0"
                  }
                ]
            CatThreadPoolResponseExample2:
              summary: Explicit columns
              description: 'A successful response from `GET /_cat/thread_pool/generic?v=true&h=id,name,active,rejected,completed&format=json`.
                It returns the `id`, `name`, `active`, `rejected`, and `completed`
                columns. It also limits returned information to the generic thread
                pool.

                '
              value: |-
                [
                  {
                    "id": "0EWUhXeBQtaVGlexUeVwMg",
                    "name": "generic",
                    "active": "0",
                    "rejected": "0",
                    "completed": "70"
                  }
                ]
    cat.transforms-200:
      description: ''
      content:
        application/json:
          schema:
            type: array
            items:
              "$ref": "#/components/schemas/cat.transforms.TransformsRecord"
          examples:
            CatTransformsResponseExample1:
              description: A successful response from `GET /_cat/transforms?v=true&format=json`.
              value: |-
                [
                  {
                    "id" : "ecommerce_transform",
                    "state" : "started",
                    "checkpoint" : "1",
                    "documents_processed" : "705",
                    "checkpoint_progress" : "100.00",
                    "changes_last_detection_time" : null
                  }
                ]
    ccr.get_auto_follow_pattern-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              patterns:
                type: array
                items:
                  "$ref": "#/components/schemas/ccr.get_auto_follow_pattern.AutoFollowPattern"
            required:
            - patterns
          examples:
            GetAutoFollowPatternResponseExample1:
              description: A successful response from `GET /_ccr/auto_follow/my_auto_follow_pattern`,
                which gets auto-follow patterns.
              value: |-
                {
                  "patterns": [
                    {
                      "name": "my_auto_follow_pattern",
                      "pattern": {
                        "active": true,
                        "remote_cluster" : "remote_cluster",
                        "leader_index_patterns" :
                        [
                          "leader_index*"
                        ],
                        "leader_index_exclusion_patterns":
                        [
                          "leader_index_001"
                        ],
                        "follow_index_pattern" : "{{leader_index}}-follower"
                      }
                    }
                  ]
                }
    clear_scroll-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              succeeded:
                description: |-
                  If `true`, the request succeeded.
                  This does not indicate whether any scrolling search requests were cleared.
                type: boolean
              num_freed:
                description: The number of scrolling search requests cleared.
                type: number
            required:
            - succeeded
            - num_freed
    cluster.allocation_explain-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              allocate_explanation:
                type: string
              allocation_delay:
                allOf:
                - "$ref": "#/components/schemas/_types.Duration"
              allocation_delay_in_millis:
                allOf:
                - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
              can_allocate:
                allOf:
                - "$ref": "#/components/schemas/cluster.allocation_explain.Decision"
              can_move_to_other_node:
                allOf:
                - "$ref": "#/components/schemas/cluster.allocation_explain.Decision"
              can_rebalance_cluster:
                allOf:
                - "$ref": "#/components/schemas/cluster.allocation_explain.Decision"
              can_rebalance_cluster_decisions:
                type: array
                items:
                  "$ref": "#/components/schemas/cluster.allocation_explain.AllocationDecision"
              can_rebalance_to_other_node:
                allOf:
                - "$ref": "#/components/schemas/cluster.allocation_explain.Decision"
              can_remain_decisions:
                type: array
                items:
                  "$ref": "#/components/schemas/cluster.allocation_explain.AllocationDecision"
              can_remain_on_current_node:
                allOf:
                - "$ref": "#/components/schemas/cluster.allocation_explain.Decision"
              cluster_info:
                allOf:
                - "$ref": "#/components/schemas/cluster.allocation_explain.ClusterInfo"
              configured_delay:
                allOf:
                - "$ref": "#/components/schemas/_types.Duration"
              configured_delay_in_millis:
                allOf:
                - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
              current_node:
                allOf:
                - "$ref": "#/components/schemas/cluster.allocation_explain.CurrentNode"
              current_state:
                type: string
              index:
                allOf:
                - "$ref": "#/components/schemas/_types.IndexName"
              move_explanation:
                type: string
              node_allocation_decisions:
                type: array
                items:
                  "$ref": "#/components/schemas/cluster.allocation_explain.NodeAllocationExplanation"
              primary:
                type: boolean
              rebalance_explanation:
                type: string
              remaining_delay:
                allOf:
                - "$ref": "#/components/schemas/_types.Duration"
              remaining_delay_in_millis:
                allOf:
                - "$ref": "#/components/schemas/_types.DurationValueUnitMillis"
              shard:
                type: number
              unassigned_info:
                allOf:
                - "$ref": "#/components/schemas/cluster.allocation_explain.UnassignedInformation"
              note:
                x-state: Generally available; Added in 7.14.0
                type: string
            required:
            - current_state
            - index
            - primary
            - shard
          examples:
            ClusterAllocationExplainResponseExample1:
              summary: Conflicting settings
              description: 'An example of an allocation explanation for an unassigned
                primary shard. In this example, a newly created index has an index
                setting that requires that it only be allocated to a node named `nonexistent_node`,
                which does not exist, so the index is unable to allocate.

                '
              value: |-
                {
                  "index" : "my-index-000001",
                  "shard" : 0,
                  "primary" : true,
                  "current_state" : "unassigned",
                  "unassigned_info" : {
                    "reason" : "INDEX_CREATED",
                    "at" : "2017-01-04T18:08:16.600Z",
                    "last_allocation_status" : "no"
                  },
                  "can_allocate" : "no",
                  "allocate_explanation" : "Elasticsearch isn't allowed to allocate this shard to any of the nodes in the cluster. Choose a node to which you expect this shard to be allocated, find this node in the node-by-node explanation, and address the reasons which prevent Elasticsearch from allocating this shard there.",
                  "node_allocation_decisions" : [
                    {
                      "node_id" : "8qt2rY-pT6KNZB3-hGfLnw",
                      "node_name" : "node-0",
                      "transport_address" : "127.0.0.1:9401",
                      "roles" : ["data", "data_cold", "data_content", "data_frozen", "data_hot", "data_warm", "ingest", "master", "ml", "remote_cluster_client", "transform"],
                      "node_attributes" : {},
                      "node_decision" : "no",
                      "weight_ranking" : 1,
                      "deciders" : [
                        {
                          "decider" : "filter",
                          "decision" : "NO",
                          "explanation" : "node does not match index setting [index.routing.allocation.include] filters [_name:\"nonexistent_node\"]"
                        }
                      ]
                    }
                  ]
                }
            ClusterAllocationExplainResponseExample2:
              summary: Maximum retries
              description: 'An example of an allocation explanation for an unassigned
                primary shard that has reached the maximum number of allocation retry
                attempts. After the maximum number of retries is reached, Elasticsearch
                stops attempting to allocate the shard in order to prevent infinite
                retries which may impact cluster performance.

                '
              value: |-
                {
                  "index" : "my-index-000001",
                  "shard" : 0,
                  "primary" : true,
                  "current_state" : "unassigned",
                  "unassigned_info" : {
                    "at" : "2017-01-04T18:03:28.464Z",
                    "failed shard on node [mEKjwwzLT1yJVb8UxT6anw]: failed recovery, failure RecoveryFailedException",
                    "reason": "ALLOCATION_FAILED",
                    "failed_allocation_attempts": 5,
                    "last_allocation_status": "no",
                  },
                  "can_allocate": "no",
                  "allocate_explanation": "cannot allocate because allocation is not permitted to any of the nodes",
                  "node_allocation_decisions" : [
                    {
                      "node_id" : "3sULLVJrRneSg0EfBB-2Ew",
                      "node_name" : "node_t0",
                      "transport_address" : "127.0.0.1:9400",
                      "roles" : ["data_content", "data_hot"],
                      "node_decision" : "no",
                      "store" : {
                        "matching_size" : "4.2kb",
                        "matching_size_in_bytes" : 4325
                      },
                      "deciders" : [
                        {
                          "decider": "max_retry",
                          "decision" : "NO",
                          "explanation": "shard has exceeded the maximum number of retries [5] on failed allocation attempts - manually call [POST /_cluster/reroute?retry_failed] to retry, [unassigned_info[[reason=ALLOCATION_FAILED], at[2024-07-30T21:04:12.166Z], failed_attempts[5], failed_nodes[[mEKjwwzLT1yJVb8UxT6anw]], delayed=false, details[failed shard on node [mEKjwwzLT1yJVb8UxT6anw]: failed recovery, failure RecoveryFailedException], allocation_status[deciders_no]]]"
                        }
                      ]
                    }
                  ]
                }
    cluster.get_component_template-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              component_templates:
                type: array
                items:
                  "$ref": "#/components/schemas/cluster._types.ComponentTemplate"
            required:
            - component_templates
          examples:
            GetComponentTemplateResponseExample1:
              description: A successful response for retrieving information about
                a component template.
              value: |-
                {
                  "component_templates" : [
                    {
                      "name" : "my-component-template",
                      "component_template" : {
                        "version" : 1,
                        "_meta" : {
                          "description" : "my custom component template"
                        },
                        "template" : {
                          "settings" : {
                            "index" : {
                              "number_of_shards" : "1"
                            }
                          },
                          "mappings" : {
                            "properties" : {
                              "@timestamp" : {
                                "type" : "date"
                              },
                              "message" : {
                                "type" : "text"
                              }
                            }
                          }
                        },
                        "created_date" : "2024-01-01T12:00:00.000Z",
                        "created_date_millis" : 1704110400000,
                        "modified_date" : "2025-01-01T12:00:00.000Z",
                        "modified_date_millis" : 1735732800000
                      }
                    }
                  ]
                }
    cluster.health-200:
      description: ''
      content:
        application/json:
          schema:
            "$ref": "#/components/schemas/cluster.health.HealthResponseBody"
          examples:
            ClusterHealthResponseExample1:
              description: 'A successful response from `GET _cluster/health`. It is
                the health status of a quiet single node cluster with a single index
                with one shard and one replica.

                '
              value: |-
                {
                  "cluster_name" : "testcluster",
                  "status" : "yellow",
                  "timed_out" : false,
                  "number_of_nodes" : 1,
                  "number_of_data_nodes" : 1,
                  "active_primary_shards" : 1,
                  "active_shards" : 1,
                  "relocating_shards" : 0,
                  "initializing_shards" : 0,
                  "unassigned_shards" : 1,
                  "delayed_unassigned_shards": 0,
                  "number_of_pending_tasks" : 0,
                  "number_of_in_flight_fetch": 0,
                  "task_max_waiting_in_queue_millis": 0,
                  "active_shards_percent_as_number": 50.0
                }
    cluster.put_component_template-200:
      description: ''
      content:
        application/json:
          schema:
            "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
    cluster.state-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
    cluster.stats-200:
      description: ''
      content:
        application/json:
          schema:
            "$ref": "#/components/schemas/cluster.stats.StatsResponseBase"
    connector.put-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              result:
                allOf:
                - "$ref": "#/components/schemas/_types.Result"
              id:
                allOf:
                - "$ref": "#/components/schemas/_types.Id"
            required:
            - result
            - id
          examples:
            ConnectorPutResponseExample1:
              value: |-
                {
                  "result": "created",
                  "id": "my-connector"
                }
    count-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              count:
                type: number
              _shards:
                allOf:
                - "$ref": "#/components/schemas/_types.ShardStatistics"
            required:
            - count
            - _shards
          examples:
            CountResponseExample1:
              description: A successful response from `GET /my-index-000001/_count?q=user:kimchy`.
              value: |-
                {
                  "count": 1,
                  "_shards": {
                    "total": 1,
                    "successful": 1,
                    "skipped": 0,
                    "failed": 0
                  }
                }
    create-200:
      description: ''
      content:
        application/json:
          schema:
            "$ref": "#/components/schemas/_types.WriteResponseBase"
          examples:
            CreateResponseExample1:
              description: A successful response from `PUT my-index-000001/_create/1`
                which indexes a document.
              value: |-
                {
                   "_index": "my-index-000001",
                   "_id": "1",
                   "_version": 1,
                   "result": "created",
                   "_shards": {
                     "total": 1,
                     "successful": 1,
                     "failed": 0
                   },
                   "_seq_no": 0,
                   "_primary_term": 1
                }
    enrich.get_policy-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              policies:
                type: array
                items:
                  "$ref": "#/components/schemas/enrich._types.Summary"
            required:
            - policies
    eql.search-200:
      description: ''
      content:
        application/json:
          schema:
            "$ref": "#/components/schemas/eql._types.EqlSearchResponseBase"
          examples:
            EqlSearchResponseExample2:
              summary: A successful response for performing search with an EQL query.
              description: ''
              value: |-
                {
                  "is_partial": false,
                  "is_running": false,
                  "took": 6,
                  "timed_out": false,
                  "hits": {
                    "total": {
                      "value": 1,
                      "relation": "eq"
                    },
                    "sequences": [
                      {
                        "join_keys": [
                          2012
                        ],
                        "events": [
                          {
                            "_index": ".ds-my-data-stream-2099.12.07-000001",
                            "_id": "AtOJ4UjUBAAx3XR5kcCM",
                            "_source": {
                              "@timestamp": "2099-12-06T11:04:07.000Z",
                              "event": {
                                "category": "file",
                                "id": "dGCHwoeS",
                                "sequence": 2
                              },
                              "file": {
                                "accessed": "2099-12-07T11:07:08.000Z",
                                "name": "cmd.exe",
                                "path": "C:\\Windows\\System32\\cmd.exe",
                                "type": "file",
                                "size": 16384
                              },
                              "process": {
                                "pid": 2012,
                                "name": "cmd.exe",
                                "executable": "C:\\Windows\\System32\\cmd.exe"
                              }
                            }
                          },
                          {
                            "_index": ".ds-my-data-stream-2099.12.07-000001",
                            "_id": "OQmfCaduce8zoHT93o4H",
                            "_source": {
                              "@timestamp": "2099-12-07T11:07:09.000Z",
                              "event": {
                                "category": "process",
                                "id": "aR3NWVOs",
                                "sequence": 4
                              },
                              "process": {
                                "pid": 2012,
                                "name": "regsvr32.exe",
                                "command_line": "regsvr32.exe  /s /u /i:https://...RegSvr32.sct scrobj.dll",
                                "executable": "C:\\Windows\\System32\\regsvr32.exe"
                              }
                            }
                          }
                        ]
                      }
                    ]
                  }
                }
    explain-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              _index:
                allOf:
                - "$ref": "#/components/schemas/_types.IndexName"
              _id:
                allOf:
                - "$ref": "#/components/schemas/_types.Id"
              matched:
                type: boolean
              explanation:
                allOf:
                - "$ref": "#/components/schemas/_global.explain.ExplanationDetail"
              get:
                allOf:
                - "$ref": "#/components/schemas/_types.InlineGet"
            required:
            - _index
            - _id
            - matched
          examples:
            ExplainResponseExample1:
              description: A successful response from `GET /my-index-000001/_explain/0`.
              value: |-
                {
                  "_index":"my-index-000001",
                  "_id":"0",
                  "matched":true,
                  "explanation":{
                      "value":1.6943598,
                      "description":"weight(message:elasticsearch in 0) [PerFieldSimilarity], result of:",
                      "details":[
                        {
                            "value":1.6943598,
                            "description":"score(freq=1.0), computed as boost * idf * tf from:",
                            "details":[
                              {
                                  "value":2.2,
                                  "description":"boost",
                                  "details":[]
                              },
                              {
                                  "value":1.3862944,
                                  "description":"idf, computed as log(1 + (N - n + 0.5) / (n + 0.5)) from:",
                                  "details":[
                                    {
                                        "value":1,
                                        "description":"n, number of documents containing term",
                                        "details":[]
                                    },
                                    {
                                        "value":5,
                                        "description":"N, total number of documents with field",
                                        "details":[]
                                    }
                                  ]
                              },
                              {
                                  "value":0.5555556,
                                  "description":"tf, computed as freq / (freq + k1 * (1 - b + b * dl / avgdl)) from:",
                                  "details":[
                                    {
                                        "value":1.0,
                                        "description":"freq, occurrences of term within document",
                                        "details":[]
                                    },
                                    {
                                        "value":1.2,
                                        "description":"k1, term saturation parameter",
                                        "details":[]
                                    },
                                    {
                                        "value":0.75,
                                        "description":"b, length normalization parameter",
                                        "details":[]
                                    },
                                    {
                                        "value":3.0,
                                        "description":"dl, length of field",
                                        "details":[]
                                    },
                                    {
                                        "value":5.4,
                                        "description":"avgdl, average length of field",
                                        "details":[]
                                    }
                                  ]
                              }
                            ]
                        }
                      ]
                  }
                }
    field_caps-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              indices:
                description: The list of indices where this field has the same type
                  family, or null if all indices have the same type family for the
                  field.
                allOf:
                - "$ref": "#/components/schemas/_types.Indices"
              fields:
                type: object
                additionalProperties:
                  type: object
                  additionalProperties:
                    "$ref": "#/components/schemas/_global.field_caps.FieldCapability"
            required:
            - indices
            - fields
          examples:
            FieldCapabilitiesResponseExample1:
              summary: Get two fields
              description: 'A successful response from `GET _field_caps?fields=rating,title`.
                The field `rating` is defined as a long in `index1` and `index2` and
                as a `keyword` in `index3` and `index4`. The field `rating` is not
                aggregatable in `index1`. The field `rating` is not searchable in
                `index4`. The field `title` is defined as text in all indices.

                '
              value: "{\n  \"indices\": [ \"index1\", \"index2\", \"index3\", \"index4\",
                \"index5\" ],\n  \"fields\": {\n    \"rating\": {                                   \n
                \     \"long\": {\n        \"metadata_field\": false,\n        \"searchable\":
                true,\n        \"aggregatable\": false,\n        \"indices\": [ \"index1\",
                \"index2\" ],\n        \"non_aggregatable_indices\": [ \"index1\"
                ]  \n      },\n      \"keyword\": {\n        \"metadata_field\": false,\n
                \       \"searchable\": false,\n        \"aggregatable\": true,\n
                \       \"indices\": [ \"index3\", \"index4\" ],\n        \"non_searchable_indices\":
                [ \"index4\" ]    \n      }\n    },\n    \"title\": {                                    \n
                \     \"text\": {\n        \"metadata_field\": false,\n        \"searchable\":
                true,\n        \"aggregatable\": false\n      }\n    }\n  }\n}"
            FieldCapabilitiesResponseExample2:
              summary: Get unmapped fields
              description: 'A successful response from `GET _field_caps?fields=rating,title&include_unmapped`.
                The response contains an entry for each field that is present in some
                indices but not all. For example, the `rating` and `title` fields
                are unmapped in `index5`.

                '
              value: "{\n  \"indices\": [ \"index1\", \"index2\", \"index3\", \"index4\",
                \"index5\" ],\n  \"fields\": {\n    \"rating\": {                                   \n
                \     \"long\": {\n        \"metadata_field\": false,\n        \"searchable\":
                true,\n        \"aggregatable\": false,\n        \"indices\": [ \"index1\",
                \"index2\" ],\n        \"non_aggregatable_indices\": [ \"index1\"
                ]  \n      },\n      \"keyword\": {\n        \"metadata_field\": false,\n
                \       \"searchable\": false,\n        \"aggregatable\": true,\n
                \       \"indices\": [ \"index3\", \"index4\" ],\n        \"non_searchable_indices\":
                [ \"index4\" ]    \n      }\n    },\n    \"title\": {                                    \n
                \     \"text\": {\n        \"metadata_field\": false,\n        \"searchable\":
                true,\n        \"aggregatable\": false\n      }\n    }\n  }\n}"
    fleet.msearch-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              docs:
                type: array
                items:
                  "$ref": "#/components/schemas/_global.msearch.ResponseItem"
            required:
            - docs
    fleet.search-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              took:
                type: number
              timed_out:
                type: boolean
              _shards:
                allOf:
                - "$ref": "#/components/schemas/_types.ShardStatistics"
              hits:
                allOf:
                - "$ref": "#/components/schemas/_global.search._types.HitsMetadata"
              aggregations:
                type: object
                additionalProperties:
                  "$ref": "#/components/schemas/_types.aggregations.Aggregate"
              _clusters:
                allOf:
                - "$ref": "#/components/schemas/_types.ClusterStatistics"
              fields:
                type: object
                additionalProperties:
                  type: object
              max_score:
                type: number
              num_reduce_phases:
                type: number
              profile:
                allOf:
                - "$ref": "#/components/schemas/_global.search._types.Profile"
              pit_id:
                allOf:
                - "$ref": "#/components/schemas/_types.Id"
              _scroll_id:
                allOf:
                - "$ref": "#/components/schemas/_types.ScrollId"
              suggest:
                type: object
                additionalProperties:
                  type: array
                  items:
                    "$ref": "#/components/schemas/_global.search._types.Suggest"
              terminated_early:
                type: boolean
            required:
            - took
            - timed_out
            - _shards
            - hits
    graph.explore-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              connections:
                type: array
                items:
                  "$ref": "#/components/schemas/graph._types.Connection"
              failures:
                type: array
                items:
                  "$ref": "#/components/schemas/_types.ShardFailure"
              timed_out:
                type: boolean
              took:
                type: number
              vertices:
                type: array
                items:
                  "$ref": "#/components/schemas/graph._types.Vertex"
            required:
            - connections
            - failures
            - timed_out
            - took
            - vertices
    health_report-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              cluster_name:
                type: string
              indicators:
                allOf:
                - "$ref": "#/components/schemas/_global.health_report.Indicators"
              status:
                allOf:
                - "$ref": "#/components/schemas/_global.health_report.IndicatorHealthStatus"
            required:
            - cluster_name
            - indicators
    ilm.get_lifecycle-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            additionalProperties:
              "$ref": "#/components/schemas/ilm.get_lifecycle.Lifecycle"
          examples:
            GetLifecycleResponseExample1:
              description: A successful response when retrieving a lifecycle policy.
              value: |-
                {
                  "my_policy": {
                    "version": 1,
                    "modified_date": 82392349,
                    "policy": {
                      "phases": {
                        "warm": {
                          "min_age": "10d",
                          "actions": {
                            "forcemerge": {
                              "max_num_segments": 1
                            }
                          }
                        },
                        "delete": {
                          "min_age": "30d",
                          "actions": {
                            "delete": {
                              "delete_searchable_snapshot": true
                            }
                          }
                        }
                      }
                    },
                    "in_use_by" : {
                      "indices" : [],
                      "data_streams" : [],
                      "composable_templates" : []
                    }
                  }
                }
    index-200:
      description: ''
      content:
        application/json:
          schema:
            "$ref": "#/components/schemas/_types.WriteResponseBase"
          examples:
            IndexResponseExample1:
              summary: Automate document IDs
              description: A successful response from `POST my-index-000001/_doc/`,
                which contains an automated document ID.
              value: |-
                {
                  "_shards": {
                    "total": 2,
                    "failed": 0,
                    "successful": 2
                  },
                  "_index": "my-index-000001",
                  "_id": "W0tpsmIBdwcYyG50zbta",
                  "_version": 1,
                  "_seq_no": 0,
                  "_primary_term": 1,
                  "result": "created"
                }
            IndexResponseExample2:
              summary: Define document IDs
              description: A successful response from `PUT my-index-000001/_doc/1`.
              value: |-
                {
                  "_shards": {
                    "total": 2,
                    "failed": 0,
                    "successful": 2
                  },
                  "_index": "my-index-000001",
                  "_id": "1",
                  "_version": 1,
                  "_seq_no": 0,
                  "_primary_term": 1,
                  "result": "created"
                }
    indices.analyze-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              detail:
                allOf:
                - "$ref": "#/components/schemas/indices.analyze.AnalyzeDetail"
              tokens:
                type: array
                items:
                  "$ref": "#/components/schemas/indices.analyze.AnalyzeToken"
          examples:
            indicesAnalyzeResponseExample7:
              description: A successful response for an analysis with `explain` set
                to `true`.
              value: |-
                {
                  "detail": {
                    "custom_analyzer": true,
                    "charfilters": [],
                    "tokenizer": {
                      "name": "standard",
                      "tokens": [
                        {
                          "token": "detailed",
                          "start_offset": 0,
                          "end_offset": 8,
                          "type": "<ALPHANUM>",
                          "position": 0
                        },
                        {
                          "token": "output",
                          "start_offset": 9,
                          "end_offset": 15,
                          "type": "<ALPHANUM>",
                          "position": 1
                        }
                      ]
                    },
                    "tokenfilters": [
                      {
                        "name": "snowball",
                        "tokens": [
                          {
                            "token": "detail",
                            "start_offset": 0,
                            "end_offset": 8,
                            "type": "<ALPHANUM>",
                            "position": 0,
                            "keyword": false
                          },
                          {
                            "token": "output",
                            "start_offset": 9,
                            "end_offset": 15,
                            "type": "<ALPHANUM>",
                            "position": 1,
                            "keyword": false
                          }
                        ]
                      }
                    ]
                  }
                }
    indices.clear_cache-200:
      description: ''
      content:
        application/json:
          schema:
            "$ref": "#/components/schemas/_types.ShardsOperationResponseBase"
    indices.clone-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              acknowledged:
                type: boolean
              index:
                allOf:
                - "$ref": "#/components/schemas/_types.IndexName"
              shards_acknowledged:
                type: boolean
            required:
            - acknowledged
            - index
            - shards_acknowledged
    indices.create_from-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              acknowledged:
                type: boolean
              index:
                allOf:
                - "$ref": "#/components/schemas/_types.IndexName"
              shards_acknowledged:
                type: boolean
            required:
            - acknowledged
            - index
            - shards_acknowledged
    indices.data_streams_stats-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              _shards:
                description: Contains information about shards that attempted to execute
                  the request.
                allOf:
                - "$ref": "#/components/schemas/_types.ShardStatistics"
              backing_indices:
                description: Total number of backing indices for the selected data
                  streams.
                type: number
              data_stream_count:
                description: Total number of selected data streams.
                type: number
              data_streams:
                description: Contains statistics for the selected data streams.
                type: array
                items:
                  "$ref": "#/components/schemas/indices.data_streams_stats.DataStreamsStatsItem"
              total_store_sizes:
                description: |-
                  Total size of all shards for the selected data streams.
                  This property is included only if the `human` query parameter is `true`
                allOf:
                - "$ref": "#/components/schemas/_types.ByteSize"
              total_store_size_bytes:
                description: Total size, in bytes, of all shards for the selected
                  data streams.
                type: number
            required:
            - _shards
            - backing_indices
            - data_stream_count
            - data_streams
            - total_store_size_bytes
          examples:
            indicesDataStreamStatsResponseExample1:
              description: A successful response for retrieving statistics for a data
                stream.
              value: |-
                {
                  "_shards": {
                    "total": 10,
                    "successful": 5,
                    "failed": 0
                  },
                  "data_stream_count": 2,
                  "backing_indices": 5,
                  "total_store_size": "7kb",
                  "total_store_size_bytes": 7268,
                  "data_streams": [
                    {
                      "data_stream": "my-data-stream",
                      "backing_indices": 3,
                      "store_size": "3.7kb",
                      "store_size_bytes": 3772,
                      "maximum_timestamp": 1607512028000
                    },
                    {
                      "data_stream": "my-data-stream-two",
                      "backing_indices": 2,
                      "store_size": "3.4kb",
                      "store_size_bytes": 3496,
                      "maximum_timestamp": 1607425567000
                    }
                  ]
                }
    indices.delete_alias-200:
      description: ''
      content:
        application/json:
          schema:
            "$ref": "#/components/schemas/indices.delete_alias.IndicesAliasesResponseBody"
    indices.exists_alias-200:
      description: ''
      content:
        application/json: {}
    indices.flush-200:
      description: ''
      content:
        application/json:
          schema:
            "$ref": "#/components/schemas/_types.ShardsOperationResponseBase"
    indices.forcemerge-200:
      description: ''
      content:
        application/json:
          schema:
            "$ref": "#/components/schemas/indices.forcemerge._types.ForceMergeResponseBody"
    indices.get_alias-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            additionalProperties:
              "$ref": "#/components/schemas/indices.get_alias._types.IndexAliases"
    indices.get_data_stream-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              data_streams:
                type: array
                items:
                  "$ref": "#/components/schemas/indices._types.DataStream"
            required:
            - data_streams
          examples:
            indicesGetDataStreamResponseExample1:
              description: A successful response for retrieving information about
                a data stream.
              value: |-
                {
                  "data_streams": [
                    {
                      "name": "my-data-stream",
                      "timestamp_field": {
                        "name": "@timestamp"
                      },
                      "indices": [
                        {
                          "index_name": ".ds-my-data-stream-2099.03.07-000001",
                          "index_uuid": "xCEhwsp8Tey0-FLNFYVwSg",
                          "prefer_ilm": true,
                          "ilm_policy": "my-lifecycle-policy",
                          "managed_by": "Index Lifecycle Management"
                        },
                        {
                          "index_name": ".ds-my-data-stream-2099.03.08-000002",
                          "index_uuid": "PA_JquKGSiKcAKBA8DJ5gw",
                          "prefer_ilm": true,
                          "ilm_policy": "my-lifecycle-policy",
                          "managed_by": "Index Lifecycle Management"
                        }
                      ],
                      "generation": 2,
                      "_meta": {
                        "my-meta-field": "foo"
                      },
                      "status": "GREEN",
                      "next_generation_managed_by": "Index Lifecycle Management",
                      "prefer_ilm": true,
                      "template": "my-index-template",
                      "ilm_policy": "my-lifecycle-policy",
                      "hidden": false,
                      "system": false,
                      "allow_custom_routing": false,
                      "replicated": false,
                      "rollover_on_write": false
                    },
                    {
                      "name": "my-data-stream-two",
                      "timestamp_field": {
                        "name": "@timestamp"
                      },
                      "indices": [
                        {
                          "index_name": ".ds-my-data-stream-two-2099.03.08-000001",
                          "index_uuid": "3liBu2SYS5axasRt6fUIpA",
                          "prefer_ilm": true,
                          "ilm_policy": "my-lifecycle-policy",
                          "managed_by": "Index Lifecycle Management"
                        }
                      ],
                      "generation": 1,
                      "_meta": {
                        "my-meta-field": "foo"
                      },
                      "status": "YELLOW",
                      "next_generation_managed_by": "Index Lifecycle Management",
                      "prefer_ilm": true,
                      "template": "my-index-template",
                      "ilm_policy": "my-lifecycle-policy",
                      "hidden": false,
                      "system": false,
                      "allow_custom_routing": false,
                      "replicated": false,
                      "rollover_on_write": false
                    }
                  ]
                }
    indices.get_field_mapping-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            additionalProperties:
              "$ref": "#/components/schemas/indices.get_field_mapping.TypeFieldMappings"
          examples:
            indicesGetFieldMappingResponseExample1:
              summary: A single field mapping
              description: 'A sucessful response from `GET publications/_mapping/field/title`,
                which returns the mapping of a field called `title`.

                '
              value: |-
                {
                   "publications": {
                      "mappings": {
                          "title": {
                             "full_name": "title",
                             "mapping": {
                                "title": {
                                   "type": "text"
                                }
                             }
                          }
                       }
                   }
                }
            indicesGetFieldMappingResponseExample2:
              summary: Multiple field mappings
              description: 'A successful response from `GET publications/_mapping/field/author.id,abstract,name`.
                The get field mapping API also supports wildcard notation.

                '
              value: |-
                {
                   "publications": {
                      "mappings": {
                        "author.id": {
                           "full_name": "author.id",
                           "mapping": {
                              "id": {
                                 "type": "text"
                              }
                           }
                        },
                        "abstract": {
                           "full_name": "abstract",
                           "mapping": {
                              "abstract": {
                                 "type": "text"
                              }
                           }
                        }
                     }
                   }
                }
            indicesGetFieldMappingResponseExample3:
              summary: Wildcards
              description: 'A successful response from `GET publications/_mapping/field/a*`.

                '
              value: |-
                {
                   "publications": {
                      "mappings": {
                         "author.name": {
                            "full_name": "author.name",
                            "mapping": {
                               "name": {
                                 "type": "text"
                               }
                            }
                         },
                         "abstract": {
                            "full_name": "abstract",
                            "mapping": {
                               "abstract": {
                                  "type": "text"
                               }
                            }
                         },
                         "author.id": {
                            "full_name": "author.id",
                            "mapping": {
                               "id": {
                                  "type": "text"
                               }
                            }
                         }
                      }
                   }
                }
    indices.get_index_template-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              index_templates:
                type: array
                items:
                  "$ref": "#/components/schemas/indices.get_index_template.IndexTemplateItem"
            required:
            - index_templates
          examples:
            GetIndexTemplateResponseExample1:
              description: A successful response for retrieving information about
                an index template.
              value: |-
                {
                  "index_templates" : [
                    {
                      "name" : "my-index-template",
                      "index_template" : {
                        "index_patterns" : [ "logs-*" ],
                        "template" : {
                          "settings" : {
                            "index" : {
                              "number_of_shards" : "1",
                              "number_of_replicas" : "1"
                            }
                          },
                          "mappings" : {
                            "properties" : {
                              "@timestamp" : {
                                "type" : "date"
                              },
                              "message" : {
                                "type" : "text"
                              }
                            }
                          }
                        },
                        "composed_of" : [ "my-component-template" ],
                        "priority" : 200,
                        "version" : 1,
                        "_meta" : {
                          "description" : "my custom index template"
                        },
                        "created_date" : "2024-01-01T12:00:00.000Z",
                        "created_date_millis" : 1704110400000,
                        "modified_date" : "2025-01-01T12:00:00.000Z",
                        "modified_date_millis" : 1735732800000
                      }
                    }
                  ]
                }
    indices.get_mapping-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            additionalProperties:
              "$ref": "#/components/schemas/indices.get_mapping.IndexMappingRecord"
    indices.get_settings-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            additionalProperties:
              "$ref": "#/components/schemas/indices._types.IndexState"
    indices.get_template-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            additionalProperties:
              "$ref": "#/components/schemas/indices._types.TemplateMapping"
    indices.put_alias-200:
      description: ''
      content:
        application/json:
          schema:
            "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
    indices.put_index_template-200:
      description: ''
      content:
        application/json:
          schema:
            "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
    indices.put_mapping-200:
      description: ''
      content:
        application/json:
          schema:
            "$ref": "#/components/schemas/_types.IndicesResponseBase"
    indices.put_settings-200:
      description: ''
      content:
        application/json:
          schema:
            "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
    indices.put_template-200:
      description: ''
      content:
        application/json:
          schema:
            "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
    indices.recovery-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            additionalProperties:
              "$ref": "#/components/schemas/indices.recovery.RecoveryStatus"
          examples:
            indicesRecoveryResponseExample1:
              summary: Get segment information
              description: 'A successful response from `GET /_recovery?human`, which
                gets information about ongoing and completed shard recoveries for
                all data streams and indices in a cluster. This example includes information
                about a single index recovering a single shard. The source of the
                recovery is a snapshot repository and the target of the recovery is
                the `my_es_node` node. The response also includes the number and percentage
                of files and bytes recovered.

                '
              value: |-
                {
                  "index1" : {
                    "shards" : [ {
                      "id" : 0,
                      "type" : "SNAPSHOT",
                      "stage" : "INDEX",
                      "primary" : true,
                      "start_time" : "2014-02-24T12:15:59.716",
                      "start_time_in_millis": 1393244159716,
                      "stop_time" : "0s",
                      "stop_time_in_millis" : 0,
                      "total_time" : "2.9m",
                      "total_time_in_millis" : 175576,
                      "source" : {
                        "repository" : "my_repository",
                        "snapshot" : "my_snapshot",
                        "index" : "index1",
                        "version" : "{version}",
                        "restoreUUID": "PDh1ZAOaRbiGIVtCvZOMww"
                      },
                      "target" : {
                        "id" : "ryqJ5lO5S4-lSFbGntkEkg",
                        "host" : "my.fqdn",
                        "transport_address" : "my.fqdn",
                        "ip" : "10.0.1.7",
                        "name" : "my_es_node"
                      },
                      "index" : {
                        "size" : {
                          "total" : "75.4mb",
                          "total_in_bytes" : 79063092,
                          "reused" : "0b",
                          "reused_in_bytes" : 0,
                          "recovered" : "65.7mb",
                          "recovered_in_bytes" : 68891939,
                          "recovered_from_snapshot" : "0b",
                          "recovered_from_snapshot_in_bytes" : 0,
                          "percent" : "87.1%"
                        },
                        "files" : {
                          "total" : 73,
                          "reused" : 0,
                          "recovered" : 69,
                          "percent" : "94.5%"
                        },
                        "total_time" : "0s",
                        "total_time_in_millis" : 0,
                        "source_throttle_time" : "0s",
                        "source_throttle_time_in_millis" : 0,
                        "target_throttle_time" : "0s",
                        "target_throttle_time_in_millis" : 0
                      },
                      "translog" : {
                        "recovered" : 0,
                        "total" : 0,
                        "percent" : "100.0%",
                        "total_on_start" : 0,
                        "total_time" : "0s",
                        "total_time_in_millis" : 0
                      },
                      "verify_index" : {
                        "check_index_time" : "0s",
                        "check_index_time_in_millis" : 0,
                        "total_time" : "0s",
                        "total_time_in_millis" : 0
                      }
                    } ]
                  }
                }
            indicesRecoveryResponseExample2:
              summary: Get detailed recovery information
              description: 'A successful response from `GET _recovery?human&detailed=true`.
                The response includes a listing of any physical files recovered and
                their sizes. The response also includes timings in milliseconds of
                the various stages of recovery: index retrieval, translog replay,
                and index start time. This response indicates the recovery is done.

                '
              value: |-
                {
                  "index1" : {
                    "shards" : [ {
                      "id" : 0,
                      "type" : "EXISTING_STORE",
                      "stage" : "DONE",
                      "primary" : true,
                      "start_time" : "2014-02-24T12:38:06.349",
                      "start_time_in_millis" : "1393245486349",
                      "stop_time" : "2014-02-24T12:38:08.464",
                      "stop_time_in_millis" : "1393245488464",
                      "total_time" : "2.1s",
                      "total_time_in_millis" : 2115,
                      "source" : {
                        "id" : "RGMdRc-yQWWKIBM4DGvwqQ",
                        "host" : "my.fqdn",
                        "transport_address" : "my.fqdn",
                        "ip" : "10.0.1.7",
                        "name" : "my_es_node"
                      },
                      "target" : {
                        "id" : "RGMdRc-yQWWKIBM4DGvwqQ",
                        "host" : "my.fqdn",
                        "transport_address" : "my.fqdn",
                        "ip" : "10.0.1.7",
                        "name" : "my_es_node"
                      },
                      "index" : {
                        "size" : {
                          "total" : "24.7mb",
                          "total_in_bytes" : 26001617,
                          "reused" : "24.7mb",
                          "reused_in_bytes" : 26001617,
                          "recovered" : "0b",
                          "recovered_in_bytes" : 0,
                          "recovered_from_snapshot" : "0b",
                          "recovered_from_snapshot_in_bytes" : 0,
                          "percent" : "100.0%"
                        },
                        "files" : {
                          "total" : 26,
                          "reused" : 26,
                          "recovered" : 0,
                          "percent" : "100.0%",
                          "details" : [ {
                            "name" : "segments.gen",
                            "length" : 20,
                            "recovered" : 20
                          }, {
                            "name" : "_0.cfs",
                            "length" : 135306,
                            "recovered" : 135306,
                            "recovered_from_snapshot": 0
                          }, {
                            "name" : "segments_2",
                            "length" : 251,
                            "recovered" : 251,
                            "recovered_from_snapshot": 0
                          }
                          ]
                        },
                        "total_time" : "2ms",
                        "total_time_in_millis" : 2,
                        "source_throttle_time" : "0s",
                        "source_throttle_time_in_millis" : 0,
                        "target_throttle_time" : "0s",
                        "target_throttle_time_in_millis" : 0
                      },
                      "translog" : {
                        "recovered" : 71,
                        "total" : 0,
                        "percent" : "100.0%",
                        "total_on_start" : 0,
                        "total_time" : "2.0s",
                        "total_time_in_millis" : 2025
                      },
                      "verify_index" : {
                        "check_index_time" : 0,
                        "check_index_time_in_millis" : 0,
                        "total_time" : "88ms",
                        "total_time_in_millis" : 88
                      }
                    } ]
                  }
                }
    indices.refresh-200:
      description: ''
      content:
        application/json:
          schema:
            "$ref": "#/components/schemas/_types.ShardsOperationResponseBase"
    indices.reload_search_analyzers-200:
      description: ''
      content:
        application/json:
          schema:
            "$ref": "#/components/schemas/indices.reload_search_analyzers.ReloadResult"
          examples:
            ReloadSearchAnalyzersResponseExample1:
              description: A successful response when reloading a search analyzer
                of an index.
              value: |-
                {
                  "template": {
                    "settings": {
                      "number_of_shards": 1
                    },
                    "mappings": {
                      "_source": {
                        "enabled": false
                      },
                      "properties": {
                        "host_name": {
                          "type": "keyword"
                        },
                        "created_at": {
                          "type": "date",
                          "format": "EEE MMM dd HH:mm:ss Z yyyy"
                        }
                      }
                    }
                  }
                }
    indices.resolve_cluster-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            additionalProperties:
              "$ref": "#/components/schemas/indices.resolve_cluster.ResolveClusterInfo"
          examples:
            ResolveClusterResponseExample1:
              summary: Resolve with wildcards
              description: 'A successful response from `GET /_resolve/cluster/my-index*,clust*:my-index*`.
                Each cluster has its own response section. The cluster you sent the
                request to is labelled as "(local)".

                '
              value: |-
                {
                  "(local)": {
                    "connected": true,
                    "skip_unavailable": false,
                    "matching_indices": true,
                    "version": {
                      "number": "8.13.0",
                      "build_flavor": "default",
                      "minimum_wire_compatibility_version": "7.17.0",
                      "minimum_index_compatibility_version": "7.0.0"
                    }
                  },
                  "cluster_one": {
                    "connected": true,
                    "skip_unavailable": true,
                    "matching_indices": true,
                    "version": {
                      "number": "8.13.0",
                      "build_flavor": "default",
                      "minimum_wire_compatibility_version": "7.17.0",
                      "minimum_index_compatibility_version": "7.0.0"
                    }
                  },
                  "cluster_two": {
                    "connected": true,
                    "skip_unavailable": false,
                    "matching_indices": true,
                    "version": {
                      "number": "8.13.0",
                      "build_flavor": "default",
                      "minimum_wire_compatibility_version": "7.17.0",
                      "minimum_index_compatibility_version": "7.0.0"
                    }
                  }
                }
            ResolveClusterResponseExample2:
              summary: Identify search problems
              description: 'A successful response from `GET /_resolve/cluster/not-present,clust*:my-index*,oldcluster:*?ignore_unavailable=false&timeout=5s`.
                This type of request can be used to identify potential problems with
                your cross-cluster search. Note also that a `timeout` of 5 seconds
                is sent, which sets the maximum time the query will wait for remote
                clusters to respond. The local cluster has no index called `not_present`.
                Searching with `ignore_unavailable=false` would return a "no such
                index" error. The `cluster_one` remote cluster has no indices that
                match the pattern `my-index*`. There may be no indices that match
                the pattern or the index could be closed. The `cluster_two` remote
                cluster is not connected (the attempt to connect failed). Since this
                cluster is marked as `skip_unavailable=false`, you should probably
                exclude this cluster from the search by adding `-cluster_two:*` to
                the search index expression. For `cluster_three`, the error message
                indicates that this remote cluster did not respond within the 5-second
                timeout window specified, so it is also marked as not connected. The
                `oldcluster` remote cluster shows that it has matching indices, but
                no version information is included. This indicates that the cluster
                version predates the introduction of the `_resolve/cluster` API, so
                you may want to exclude it from your cross-cluster search.

                '
              value: |-
                {
                  "(local)": {
                    "connected": true,
                    "skip_unavailable": false,
                    "error": "no such index [not_present]"
                  },
                  "cluster_one": {
                    "connected": true,
                    "skip_unavailable": true,
                    "matching_indices": false,
                    "version": {
                      "number": "8.13.0",
                      "build_flavor": "default",
                      "minimum_wire_compatibility_version": "7.17.0",
                      "minimum_index_compatibility_version": "7.0.0"
                    }
                  },
                  "cluster_two": {
                    "connected": false,
                    "skip_unavailable": false
                  },
                  "cluster_three": {
                    "connected": false,
                    "skip_unavailable": false,
                    "error": "Request timed out before receiving a response from the remote cluster"
                  },
                  "oldcluster": {
                    "connected": true,
                    "skip_unavailable": false,
                    "matching_indices": true
                  }
                }
    indices.resolve_index-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              indices:
                type: array
                items:
                  "$ref": "#/components/schemas/indices.resolve_index.ResolveIndexItem"
              aliases:
                type: array
                items:
                  "$ref": "#/components/schemas/indices.resolve_index.ResolveIndexAliasItem"
              data_streams:
                type: array
                items:
                  "$ref": "#/components/schemas/indices.resolve_index.ResolveIndexDataStreamsItem"
            required:
            - indices
            - aliases
            - data_streams
          examples:
            ResolveIndexResponseExample1:
              description: A successful response from `GET /_resolve/index/f*,remoteCluster1:bar*?expand_wildcards=all`.
              value: |-
                {
                  "indices": [
                    {
                      "name": "foo_closed",
                      "attributes": [
                        "closed"
                      ],
                      "mode": "standard"
                    },
                    {
                      "name": "freeze-index",
                      "aliases": [
                        "f-alias"
                      ],
                      "attributes": [
                        "open"
                      ]
                    },
                    {
                      "name": "remoteCluster1:bar-01",
                      "attributes": [
                        "open"
                      ]
                    }
                  ],
                  "aliases": [
                    {
                      "name": "f-alias",
                      "indices": [
                        "freeze-index",
                        "my-index-000001"
                      ]
                    }
                  ],
                  "data_streams": [
                    {
                      "name": "foo",
                      "backing_indices": [
                        ".ds-foo-2099.03.07-000001"
                      ],
                      "timestamp_field": "@timestamp"
                    }
                  ]
                }
    indices.rollover-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              acknowledged:
                type: boolean
              conditions:
                type: object
                additionalProperties:
                  type: boolean
              dry_run:
                type: boolean
              new_index:
                type: string
              old_index:
                type: string
              rolled_over:
                type: boolean
              shards_acknowledged:
                type: boolean
            required:
            - acknowledged
            - conditions
            - dry_run
            - new_index
            - old_index
            - rolled_over
            - shards_acknowledged
          examples:
            indicesRolloverResponseExample1:
              description: 'An abbreviated response from `GET /_segments`.

                '
              value: |-
                {
                  "_shards": {},
                  "indices": {
                    "test": {
                      "shards": {
                        "0": [
                          {
                            "routing": {
                              "state": "STARTED",
                              "primary": true,
                              "node": "zDC_RorJQCao9xf9pg3Fvw"
                            },
                            "num_committed_segments": 0,
                            "num_search_segments": 1,
                            "segments": {
                              "_0": {
                                "generation": 0,
                                "num_docs": 1,
                                "deleted_docs": 0,
                                "size_in_bytes": 3800,
                                "committed": false,
                                "search": true,
                                "version": "7.0.0",
                                "compound": true,
                                "attributes": {}
                              }
                            }
                          }
                        ]
                      }
                    }
                  }
                }
    indices.segments-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              indices:
                type: object
                additionalProperties:
                  "$ref": "#/components/schemas/indices.segments.IndexSegment"
              _shards:
                allOf:
                - "$ref": "#/components/schemas/_types.ShardStatistics"
            required:
            - indices
            - _shards
          examples:
            indicesSegmentsResponseExample1:
              description: A response describing information about index segments.
              value: |-
                {
                  "_shards": {
                    "total": 2,
                    "successful": 2,
                    "failed": 0
                  },
                  "indices": {
                    "kibana_sample_data_ecommerce": {
                      "shards": {
                        "0": [
                          {
                            "routing": {
                              "state": "STARTED",
                              "primary": false,
                              "node": "zZg9NuPhQPKO3LMRkMo2iw"
                            },
                            "num_committed_segments": 4,
                            "num_search_segments": 4,
                            "segments": {
                              "_0": {
                                "generation": 0,
                                "num_docs": 500,
                                "deleted_docs": 0,
                                "size_in_bytes": 524718,
                                "committed": true,
                                "search": true,
                                "version": "10.3.1",
                                "compound": true,
                                "attributes": {
                                  "Lucene90StoredFieldsFormat.mode": "BEST_SPEED"
                                }
                              },
                              "_1": {
                                "generation": 1,
                                "num_docs": 500,
                                "deleted_docs": 0,
                                "size_in_bytes": 526100,
                                "committed": true,
                                "search": true,
                                "version": "10.3.1",
                                "compound": true,
                                "attributes": {
                                  "Lucene90StoredFieldsFormat.mode": "BEST_SPEED"
                                }
                              },
                              "_2": {
                                "generation": 2,
                                "num_docs": 2000,
                                "deleted_docs": 0,
                                "size_in_bytes": 1846181,
                                "committed": true,
                                "search": true,
                                "version": "10.3.1",
                                "compound": true,
                                "attributes": {
                                  "Lucene90StoredFieldsFormat.mode": "BEST_SPEED"
                                }
                              },
                              "_3": {
                                "generation": 3,
                                "num_docs": 1675,
                                "deleted_docs": 0,
                                "size_in_bytes": 1572960,
                                "committed": true,
                                "search": true,
                                "version": "10.3.1",
                                "compound": true,
                                "attributes": {
                                  "Lucene90StoredFieldsFormat.mode": "BEST_SPEED"
                                }
                              }
                            }
                          },
                          {
                            "routing": {
                              "state": "STARTED",
                              "primary": true,
                              "node": "sp27SQiNTQWKpBKoRcnfQQ"
                            },
                            "num_committed_segments": 5,
                            "num_search_segments": 5,
                            "segments": {
                              "_0": {
                                "generation": 0,
                                "num_docs": 187,
                                "deleted_docs": 0,
                                "size_in_bytes": 227245,
                                "committed": true,
                                "search": true,
                                "version": "10.3.1",
                                "compound": true,
                                "attributes": {
                                  "Lucene90StoredFieldsFormat.mode": "BEST_SPEED"
                                }
                              },
                              "_1": {
                                "generation": 1,
                                "num_docs": 253,
                                "deleted_docs": 0,
                                "size_in_bytes": 297549,
                                "committed": true,
                                "search": true,
                                "version": "10.3.1",
                                "compound": true,
                                "attributes": {
                                  "Lucene90StoredFieldsFormat.mode": "BEST_SPEED"
                                }
                              },
                              "_2": {
                                "generation": 2,
                                "num_docs": 560,
                                "deleted_docs": 0,
                                "size_in_bytes": 580918,
                                "committed": true,
                                "search": true,
                                "version": "10.3.1",
                                "compound": true,
                                "attributes": {
                                  "Lucene90StoredFieldsFormat.mode": "BEST_SPEED"
                                }
                              },
                              "_3": {
                                "generation": 3,
                                "num_docs": 1603,
                                "deleted_docs": 0,
                                "size_in_bytes": 1506385,
                                "committed": true,
                                "search": true,
                                "version": "10.3.1",
                                "compound": true,
                                "attributes": {
                                  "Lucene90StoredFieldsFormat.mode": "BEST_SPEED"
                                }
                              },
                              "_4": {
                                "generation": 4,
                                "num_docs": 2072,
                                "deleted_docs": 0,
                                "size_in_bytes": 1913051,
                                "committed": true,
                                "search": true,
                                "version": "10.3.1",
                                "compound": true,
                                "attributes": {
                                  "Lucene90StoredFieldsFormat.mode": "BEST_SPEED"
                                }
                              }
                            }
                          }
                        ]
                      }
                    }
                  }
                }
    indices.shard_stores-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              indices:
                type: object
                additionalProperties:
                  "$ref": "#/components/schemas/indices.shard_stores.IndicesShardStores"
            required:
            - indices
          examples:
            indicesShardStoresResponseExample1:
              description: 'An abbreviated response from `GET /_shard_stores?status=green`.

                '
              value: |-
                {
                  "indices": {
                    "my-index-000001": {
                      "shards": {
                        "0": {
                          "stores": [
                            {
                              "sPa3OgxLSYGvQ4oPs-Tajw": {
                                "name": "node_t0",
                                "ephemeral_id": "9NlXRFGCT1m8tkvYCMK-8A",
                                "transport_address": "local[1]",
                                "external_id": "node_t0",
                                "attributes": {},
                                "roles": [],
                                "version": "8.10.0",
                                "min_index_version": 7000099,
                                "max_index_version": 8100099
                              },
                              "allocation_id": "2iNySv_OQVePRX-yaRH_lQ",
                              "allocation": "primary",
                              "store_exception": {}
                            }
                          ]
                        }
                      }
                    }
                  }
                }
    indices.shrink-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              acknowledged:
                type: boolean
              shards_acknowledged:
                type: boolean
              index:
                allOf:
                - "$ref": "#/components/schemas/_types.IndexName"
            required:
            - acknowledged
            - shards_acknowledged
            - index
    indices.simulate_template-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              overlapping:
                type: array
                items:
                  "$ref": "#/components/schemas/indices.simulate_template.Overlapping"
              template:
                allOf:
                - "$ref": "#/components/schemas/indices.simulate_template.Template"
            required:
            - template
          examples:
            indicesSimulateTemplateResponseExample2:
              description: 'A successful response from `POST /_index_template/_simulate`
                with a template configuration in the request body. The response shows
                any overlapping templates with a lower priority.

                '
              value: |-
                {
                  "template" : {
                    "settings" : {
                      "index" : {
                        "number_of_replicas" : "1",
                        "routing" : {
                          "allocation" : {
                            "include" : {
                              "_tier_preference" : "data_content"
                            }
                          }
                        }
                      }
                    },
                    "mappings" : {
                      "properties" : {
                        "@timestamp" : {
                          "type" : "date"
                        }
                      }
                    },
                    "aliases" : { }
                  },
                  "overlapping" : [
                    {
                      "name" : "final-template",
                      "index_patterns" : [
                        "my-index-*"
                      ]
                    }
                  ]
                }
    indices.split-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              acknowledged:
                type: boolean
              shards_acknowledged:
                type: boolean
              index:
                allOf:
                - "$ref": "#/components/schemas/_types.IndexName"
            required:
            - acknowledged
            - shards_acknowledged
            - index
    indices.stats-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              indices:
                type: object
                additionalProperties:
                  "$ref": "#/components/schemas/indices.stats.IndicesStats"
              _shards:
                allOf:
                - "$ref": "#/components/schemas/_types.ShardStatistics"
              _all:
                allOf:
                - "$ref": "#/components/schemas/indices.stats.IndicesStats"
            required:
            - _shards
            - _all
    indices.validate_query-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              explanations:
                type: array
                items:
                  "$ref": "#/components/schemas/indices.validate_query.IndicesValidationExplanation"
              _shards:
                allOf:
                - "$ref": "#/components/schemas/_types.ShardStatistics"
              valid:
                type: boolean
              error:
                type: string
            required:
            - valid
    inference.delete-200:
      description: ''
      content:
        application/json:
          schema:
            "$ref": "#/components/schemas/inference._types.DeleteInferenceEndpointResult"
    inference.get-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              endpoints:
                type: array
                items:
                  "$ref": "#/components/schemas/inference._types.InferenceEndpointInfo"
            required:
            - endpoints
    inference.inference-200:
      description: ''
      content:
        application/json:
          schema:
            "$ref": "#/components/schemas/inference._types.InferenceResult"
    inference.put-200:
      description: ''
      content:
        application/json:
          schema:
            "$ref": "#/components/schemas/inference._types.InferenceEndpointInfo"
    inference.update-200:
      description: ''
      content:
        application/json:
          schema:
            "$ref": "#/components/schemas/inference._types.InferenceEndpointInfo"
    ingest.get_geoip_database-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              databases:
                type: array
                items:
                  "$ref": "#/components/schemas/ingest.get_geoip_database.DatabaseConfigurationMetadata"
            required:
            - databases
    ingest.get_ip_location_database-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              databases:
                type: array
                items:
                  "$ref": "#/components/schemas/ingest.get_ip_location_database.DatabaseConfigurationMetadata"
            required:
            - databases
    ingest.get_pipeline-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            additionalProperties:
              "$ref": "#/components/schemas/ingest._types.Pipeline"
          examples:
            GetPipelineResponseExample1:
              description: A successful response for retrieving information about
                an ingest pipeline.
              value: |-
                {
                  "my-pipeline-id" : {
                    "description" : "describe pipeline",
                    "version" : 123,
                    "processors" : [
                      {
                        "set" : {
                          "field" : "foo",
                          "value" : "bar"
                        }
                      }
                    ],
                    "created_date" : "2024-01-01T12:00:00.000Z",
                    "created_date_millis" : 1704110400000,
                    "modified_date" : "2025-01-01T12:00:00.000Z",
                    "modified_date_millis" : 1735732800000
                  }
                }
    ingest.simulate-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              docs:
                type: array
                items:
                  "$ref": "#/components/schemas/ingest._types.SimulateDocumentResult"
            required:
            - docs
          examples:
            SimulatePipelineResponseExample1:
              description: A successful response for running an ingest pipeline against
                a set of provided documents.
              value: |-
                {
                   "docs": [
                      {
                         "doc": {
                            "_id": "id",
                            "_index": "index",
                            "_version": "-3",
                            "_source": {
                               "field2": "_value",
                               "foo": "bar"
                            },
                            "_ingest": {
                               "timestamp": "2017-05-04T22:30:03.187Z"
                            }
                         }
                      },
                      {
                         "doc": {
                            "_id": "id",
                            "_index": "index",
                            "_version": "-3",
                            "_source": {
                               "field2": "_value",
                               "foo": "rab"
                            },
                            "_ingest": {
                               "timestamp": "2017-05-04T22:30:03.188Z"
                            }
                         }
                      }
                   ]
                }
    license.post-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              acknowledge:
                allOf:
                - "$ref": "#/components/schemas/license.post.Acknowledgement"
              acknowledged:
                type: boolean
              license_status:
                allOf:
                - "$ref": "#/components/schemas/license._types.LicenseStatus"
            required:
            - acknowledged
            - license_status
          examples:
            PostLicenseResponseExample1:
              description: If you update to a basic license and you previously had
                a license with more features, you receive this type of response. You
                must re-submit the API request and set the `acknowledge` parameter
                to `true`.
              value: |-
                {
                  "acknowledged": false,
                  "license_status": "valid",
                  "acknowledge": {
                    "message": "\"\"\"This license update requires acknowledgement. To acknowledge the license, please read the following messages and update the license again, this time with the \"acknowledge=true\" parameter:\"\"\"",
                    "watcher": [
                      "Watcher will be disabled"
                    ],
                    "logstash": [
                      "Logstash will no longer poll for centrally-managed pipelines"
                    ],
                    "security": [
                      "The following X-Pack security functionality will be disabled ..."
                    ]
                  }
                }
    logstash.get_pipeline-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            additionalProperties:
              "$ref": "#/components/schemas/logstash._types.Pipeline"
          examples:
            LogstashGetPipelineResponseExample1:
              description: 'A successful response from `GET _logstash/pipeline/my_pipeline`.

                '
              value: |-
                {
                  "my_pipeline": {
                    "description": "Sample pipeline for illustration purposes",
                    "last_modified": "2021-01-02T02:50:51.250Z",
                    "pipeline_metadata": {
                      "type": "logstash_pipeline",
                      "version": "1"
                    },
                    "username": "elastic",
                    "pipeline": "input {}\\n filter { grok {} }\\n output {}",
                    "pipeline_settings": {
                      "pipeline.workers": 1,
                      "pipeline.batch.size": 125,
                      "pipeline.batch.delay": 50,
                      "queue.type": "memory",
                      "queue.max_bytes": "1gb",
                      "queue.checkpoint.writes": 1024
                    }
                  }
                }
    mget-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              docs:
                description: |-
                  The response includes a docs array that contains the documents in the order specified in the request.
                  The structure of the returned documents is similar to that returned by the get API.
                  If there is a failure getting a particular document, the error is included in place of the document.
                type: array
                items:
                  "$ref": "#/components/schemas/_global.mget.ResponseItem"
            required:
            - docs
    migration.deprecations-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              cluster_settings:
                description: Cluster-level deprecation warnings.
                type: array
                items:
                  "$ref": "#/components/schemas/migration.deprecations.Deprecation"
              index_settings:
                description: |-
                  Index warnings are sectioned off per index and can be filtered using an index-pattern in the query.
                  This section includes warnings for the backing indices of data streams specified in the request path.
                type: object
                additionalProperties:
                  type: array
                  items:
                    "$ref": "#/components/schemas/migration.deprecations.Deprecation"
              data_streams:
                type: object
                additionalProperties:
                  type: array
                  items:
                    "$ref": "#/components/schemas/migration.deprecations.Deprecation"
              node_settings:
                description: |-
                  Node-level deprecation warnings.
                  Since only a subset of your nodes might incorporate these settings, it is important to read the details section for more information about which nodes are affected.
                type: array
                items:
                  "$ref": "#/components/schemas/migration.deprecations.Deprecation"
              ml_settings:
                description: Machine learning-related deprecation warnings.
                type: array
                items:
                  "$ref": "#/components/schemas/migration.deprecations.Deprecation"
              templates:
                description: |-
                  Template warnings are sectioned off per template and include deprecations for both component templates and
                  index templates.
                type: object
                additionalProperties:
                  type: array
                  items:
                    "$ref": "#/components/schemas/migration.deprecations.Deprecation"
              ilm_policies:
                description: ILM policy warnings are sectioned off per policy.
                type: object
                additionalProperties:
                  type: array
                  items:
                    "$ref": "#/components/schemas/migration.deprecations.Deprecation"
            required:
            - cluster_settings
            - index_settings
            - data_streams
            - node_settings
            - ml_settings
            - templates
            - ilm_policies
          examples:
            DeprecationInfoResponseExample1:
              description: 'An abbreviated response from `GET /_migration/deprecations`.

                '
              value: |-
                {
                  "cluster_settings": [
                    {
                      "level": "critical",
                      "message": "Cluster name cannot contain ':'",
                      "url": "https://www.elastic.co/guide/en/elasticsearch/reference/7.0/breaking-changes-7.0.html#_literal_literal_is_no_longer_allowed_in_cluster_name",
                      "details": "This cluster is named [mycompany:logging], which contains the illegal character ':'."
                    }
                  ],
                  "node_settings": [],
                  "index_settings": {
                    "logs:apache": [
                      {
                        "level": "warning",
                        "message": "Index name cannot contain ':'",
                        "url": "https://www.elastic.co/guide/en/elasticsearch/reference/7.0/breaking-changes-7.0.html#_literal_literal_is_no_longer_allowed_in_index_name",
                        "details": "This index is named [logs:apache], which contains the illegal character ':'."
                      }
                    ]
                  },
                  "ml_settings": []
                }
    ml.delete_expired_data-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              deleted:
                type: boolean
            required:
            - deleted
          examples:
            MlDeleteExpiredDataResponseExample1:
              description: A successful response when deleting expired and unused
                anomaly detection data.
              value: |-
                {
                  "deleted": true
                }
    ml.delete_forecast-200:
      description: ''
      content:
        application/json:
          schema:
            "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
          examples:
            MlDeleteForecastResponseExample1:
              description: A successful response when deleting a forecast from an
                anomaly detection job.
              value: |-
                {
                  "acknowledged": true
                }
    ml.explain_data_frame_analytics-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              field_selection:
                description: An array of objects that explain selection for each field,
                  sorted by the field names.
                type: array
                items:
                  "$ref": "#/components/schemas/ml._types.DataframeAnalyticsFieldSelection"
              memory_estimation:
                description: An array of objects that explain selection for each field,
                  sorted by the field names.
                allOf:
                - "$ref": "#/components/schemas/ml._types.DataframeAnalyticsMemoryEstimation"
            required:
            - field_selection
            - memory_estimation
          examples:
            MlExplainDataFrameAnalyticsResponseExample1:
              description: A succesful response for explaining a data frame analytics
                job configuration.
              value: |-
                {
                  "field_selection": [
                    {
                      "field": "number_of_bedrooms",
                      "mappings_types": [
                        "integer"
                      ],
                      "is_included": true,
                      "is_required": false,
                      "feature_type": "numerical"
                    },
                    {
                      "field": "postcode",
                      "mappings_types": [
                        "text"
                      ],
                      "is_included": false,
                      "is_required": false,
                      "reason": "[postcode.keyword] is preferred because it is aggregatable"
                    },
                    {
                      "field": "postcode.keyword",
                      "mappings_types": [
                        "keyword"
                      ],
                      "is_included": true,
                      "is_required": false,
                      "feature_type": "categorical"
                    },
                    {
                      "field": "price",
                      "mappings_types": [
                        "float"
                      ],
                      "is_included": true,
                      "is_required": true,
                      "feature_type": "numerical"
                    }
                  ],
                  "memory_estimation": {
                    "expected_memory_without_disk": "128MB",
                    "expected_memory_with_disk": "32MB"
                  }
                }
    ml.get_buckets-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              buckets:
                type: array
                items:
                  "$ref": "#/components/schemas/ml._types.BucketSummary"
              count:
                type: number
            required:
            - buckets
            - count
    ml.get_calendars-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              calendars:
                type: array
                items:
                  "$ref": "#/components/schemas/ml.get_calendars.Calendar"
              count:
                type: number
            required:
            - calendars
            - count
    ml.get_categories-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              categories:
                type: array
                items:
                  "$ref": "#/components/schemas/ml._types.Category"
              count:
                type: number
            required:
            - categories
            - count
    ml.get_data_frame_analytics-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              count:
                type: number
              data_frame_analytics:
                description: An array of data frame analytics job resources, which
                  are sorted by the id value in ascending order.
                type: array
                items:
                  "$ref": "#/components/schemas/ml._types.DataframeAnalyticsSummary"
            required:
            - count
            - data_frame_analytics
    ml.get_data_frame_analytics_stats-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              count:
                type: number
              data_frame_analytics:
                description: An array of objects that contain usage information for
                  data frame analytics jobs, which are sorted by the id value in ascending
                  order.
                type: array
                items:
                  "$ref": "#/components/schemas/ml._types.DataframeAnalytics"
            required:
            - count
            - data_frame_analytics
    ml.get_datafeed_stats-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              count:
                type: number
              datafeeds:
                type: array
                items:
                  "$ref": "#/components/schemas/ml._types.DatafeedStats"
            required:
            - count
            - datafeeds
    ml.get_datafeeds-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              count:
                type: number
              datafeeds:
                type: array
                items:
                  "$ref": "#/components/schemas/ml._types.Datafeed"
            required:
            - count
            - datafeeds
    ml.get_filters-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              count:
                type: number
              filters:
                type: array
                items:
                  "$ref": "#/components/schemas/ml._types.Filter"
            required:
            - count
            - filters
    ml.get_influencers-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              count:
                type: number
              influencers:
                description: Array of influencer objects
                type: array
                items:
                  "$ref": "#/components/schemas/ml._types.Influencer"
            required:
            - count
            - influencers
    ml.get_job_stats-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              count:
                type: number
              jobs:
                type: array
                items:
                  "$ref": "#/components/schemas/ml._types.JobStats"
            required:
            - count
            - jobs
    ml.get_jobs-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              count:
                type: number
              jobs:
                type: array
                items:
                  "$ref": "#/components/schemas/ml._types.Job"
            required:
            - count
            - jobs
    ml.get_memory_stats-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              _nodes:
                allOf:
                - "$ref": "#/components/schemas/_types.NodeStatistics"
              cluster_name:
                allOf:
                - "$ref": "#/components/schemas/_types.Name"
              nodes:
                type: object
                additionalProperties:
                  "$ref": "#/components/schemas/ml.get_memory_stats.Memory"
            required:
            - _nodes
            - cluster_name
            - nodes
    ml.get_model_snapshots-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              count:
                type: number
              model_snapshots:
                type: array
                items:
                  "$ref": "#/components/schemas/ml._types.ModelSnapshot"
            required:
            - count
            - model_snapshots
    ml.get_overall_buckets-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              count:
                type: number
              overall_buckets:
                description: Array of overall bucket objects
                type: array
                items:
                  "$ref": "#/components/schemas/ml._types.OverallBucket"
            required:
            - count
            - overall_buckets
    ml.get_records-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              count:
                type: number
              records:
                type: array
                items:
                  "$ref": "#/components/schemas/ml._types.Anomaly"
            required:
            - count
            - records
    ml.get_trained_models-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              count:
                type: number
              trained_model_configs:
                description: An array of trained model resources, which are sorted
                  by the model_id value in ascending order.
                type: array
                items:
                  "$ref": "#/components/schemas/ml._types.TrainedModelConfig"
            required:
            - count
            - trained_model_configs
    ml.get_trained_models_stats-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              count:
                description: The total number of trained model statistics that matched
                  the requested ID patterns. Could be higher than the number of items
                  in the trained_model_stats array as the size of the array is restricted
                  by the supplied size parameter.
                type: number
              trained_model_stats:
                description: An array of trained model statistics, which are sorted
                  by the model_id value in ascending order.
                type: array
                items:
                  "$ref": "#/components/schemas/ml._types.TrainedModelStats"
            required:
            - count
            - trained_model_stats
    ml.preview_data_frame_analytics-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              feature_values:
                description: An array of objects that contain feature name and value
                  pairs. The features have been processed and indicate what will be
                  sent to the model for training.
                type: array
                items:
                  type: object
                  additionalProperties:
                    type: string
            required:
            - feature_values
    ml.preview_datafeed-200:
      description: ''
      content:
        application/json:
          schema:
            type: array
            items:
              type: object
    msearch-200:
      description: ''
      content:
        application/json:
          schema:
            "$ref": "#/components/schemas/_global.msearch.MultiSearchResult"
    msearch_template-200:
      description: ''
      content:
        application/json:
          schema:
            "$ref": "#/components/schemas/_global.msearch.MultiSearchResult"
    mtermvectors-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              docs:
                type: array
                items:
                  "$ref": "#/components/schemas/_global.mtermvectors.TermVectorsResult"
            required:
            - docs
    nodes.hot_threads-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
    nodes.info-200:
      description: ''
      content:
        application/json:
          schema:
            "$ref": "#/components/schemas/nodes.info.ResponseBase"
          examples:
            nodesInfoResponseExample1:
              description: An abbreviated response when requesting cluster nodes information.
              value: |-
                {
                    "_nodes": {},
                    "cluster_name": "elasticsearch",
                    "nodes": {
                      "USpTGYaBSIKbgSUJR2Z9lg": {
                        "name": "node-0",
                        "transport_address": "192.168.17:9300",
                        "host": "node-0.elastic.co",
                        "ip": "192.168.17",
                        "version": "{version}",
                        "transport_version": 100000298,
                        "index_version": 100000074,
                        "component_versions": {
                          "ml_config_version": 100000162,
                          "transform_config_version": 100000096
                        },
                        "build_flavor": "default",
                        "build_type": "{build_type}",
                        "build_hash": "587409e",
                        "roles": [
                          "master",
                          "data",
                          "ingest"
                        ],
                        "attributes": {},
                        "plugins": [
                          {
                            "name": "analysis-icu",
                            "version": "{version}",
                            "description": "The ICU Analysis plugin integrates Lucene ICU
                  module into elasticsearch, adding ICU relates analysis components.",
                            "classname":
                  "org.elasticsearch.plugin.analysis.icu.AnalysisICUPlugin",
                            "has_native_controller": false
                          }
                        ],
                        "modules": [
                          {
                            "name": "lang-painless",
                            "version": "{version}",
                            "description": "An easy, safe and fast scripting language for
                  Elasticsearch",
                            "classname": "org.elasticsearch.painless.PainlessPlugin",
                            "has_native_controller": false
                          }
                        ]
                      }
                    }
                }
    nodes.reload_secure_settings-200:
      description: ''
      content:
        application/json:
          schema:
            "$ref": "#/components/schemas/nodes.reload_secure_settings.ResponseBase"
          examples:
            ReloadSecureSettingsResponseExample1:
              description: A successful response when reloading keystore on nodes
                in your cluster.
              value: |-
                {
                  "_nodes": {
                    "total": 1,
                    "successful": 1,
                    "failed": 0
                  },
                  "cluster_name": "my_cluster",
                  "nodes": {
                    "pQHNt5rXTTWNvUgOrdynKg": {
                      "name": "node-0",
                      "secure_setting_names": [
                        "keystore.seed",
                        "xpack.security.transport.ssl.keystore.secure_password",
                        "xpack.security.transport.ssl.truststore.secure_password"
                      ],
                      "keystore_path": "/etc/elasticsearch/elasticsearch.keystore",
                      "keystore_digest": "031757c262a50abe1b7e017230cdbab99c1be9fbd7116ff504b27a8787158f46",
                      "keystore_last_modified_time": "2025-12-09T22:06:00.408Z"
                    }
                  }
                }
    nodes.stats-200:
      description: ''
      content:
        application/json:
          schema:
            "$ref": "#/components/schemas/nodes.stats.ResponseBase"
    nodes.usage-200:
      description: ''
      content:
        application/json:
          schema:
            "$ref": "#/components/schemas/nodes.usage.ResponseBase"
    put_script-200:
      description: ''
      content:
        application/json:
          schema:
            "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
    rank_eval-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              metric_score:
                description: The overall evaluation quality calculated by the defined
                  metric
                type: number
              details:
                description: The details section contains one entry for every query
                  in the original requests section, keyed by the search request id
                type: object
                additionalProperties:
                  "$ref": "#/components/schemas/_global.rank_eval.RankEvalMetricDetail"
              failures:
                type: object
                additionalProperties:
                  type: object
            required:
            - metric_score
            - details
            - failures
    render_search_template-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              template_output:
                type: object
                additionalProperties:
                  type: object
            required:
            - template_output
    rollup.get_jobs-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              jobs:
                type: array
                items:
                  "$ref": "#/components/schemas/rollup.get_jobs.RollupJob"
            required:
            - jobs
          examples:
            GetRollupJobResponseExample1:
              description: A successful response from `GET _rollup/job/sensor`.
              value: |-
                {
                  "jobs": [
                    {
                      "config": {
                        "id": "sensor",
                        "index_pattern": "sensor-*",
                        "rollup_index": "sensor_rollup",
                        "cron": "*/30 * * * * ?",
                        "groups": {
                          "date_histogram": {
                            "fixed_interval": "1h",
                            "delay": "7d",
                            "field": "timestamp",
                            "time_zone": "UTC"
                          },
                          "terms": {
                            "fields": [
                              "node"
                            ]
                          }
                        },
                        "metrics": [
                          {
                            "field": "temperature",
                            "metrics": [
                              "min",
                              "max",
                              "sum"
                            ]
                          },
                          {
                            "field": "voltage",
                            "metrics": [
                              "avg"
                            ]
                          }
                        ],
                        "timeout": "20s",
                        "page_size": 1000
                      },
                      "status": {
                        "job_state": "stopped"
                      },
                      "stats": {
                        "pages_processed": 0,
                        "documents_processed": 0,
                        "rollups_indexed": 0,
                        "trigger_count": 0,
                        "index_failures": 0,
                        "index_time_in_ms": 0,
                        "index_total": 0,
                        "search_failures": 0,
                        "search_time_in_ms": 0,
                        "search_total": 0,
                        "processing_time_in_ms": 0,
                        "processing_total": 0
                      }
                    }
                  ]
                }
    rollup.get_rollup_caps-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            additionalProperties:
              "$ref": "#/components/schemas/rollup.get_rollup_caps.RollupCapabilities"
          examples:
            GetRollupCapabilitiesResponseExample1:
              description: 'A successful response from `GET _rollup/data/sensor-*`
                for a rollup job that targets the index pattern `sensor-*`. The response
                contains the rollup job ID, the index that holds the rolled data,
                and the index pattern that the job was targeting. It also shows a
                list of fields that contain data eligible for rollup searches. For
                example, you can use a `min`, `max`, or `sum` aggregation on the `temperature`
                field, but only a `date_histogram` on `timestamp`.

                '
              value: |-
                {
                  "sensor-*" : {
                    "rollup_jobs" : [
                      {
                        "job_id" : "sensor",
                        "rollup_index" : "sensor_rollup",
                        "index_pattern" : "sensor-*",
                        "fields" : {
                          "node" : [
                            {
                              "agg" : "terms"
                            }
                          ],
                          "temperature" : [
                            {
                              "agg" : "min"
                            },
                            {
                              "agg" : "max"
                            },
                            {
                              "agg" : "sum"
                            }
                          ],
                          "timestamp" : [
                            {
                              "agg" : "date_histogram",
                              "time_zone" : "UTC",
                              "fixed_interval" : "1h",
                              "delay": "7d"
                            }
                          ],
                          "voltage" : [
                            {
                              "agg" : "avg"
                            }
                          ]
                        }
                      }
                    ]
                  }
                }
    rollup.rollup_search-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              took:
                type: number
              timed_out:
                type: boolean
              terminated_early:
                type: boolean
              _shards:
                allOf:
                - "$ref": "#/components/schemas/_types.ShardStatistics"
              hits:
                allOf:
                - "$ref": "#/components/schemas/_global.search._types.HitsMetadata"
              aggregations:
                type: object
                additionalProperties:
                  "$ref": "#/components/schemas/_types.aggregations.Aggregate"
            required:
            - took
            - timed_out
            - _shards
            - hits
          examples:
            RollupSearchResponseExample1:
              description: 'An abbreviated response from `GET /sensor_rollup/_rollup_search`
                with a `max` aggregation on a `temperature` field. The response provides
                some metadata about the request (`took`, `_shards`), the search hits
                (which is always empty for rollup searches), and the aggregation response.

                '
              value: |-
                {
                  "took" : 102,
                  "timed_out" : false,
                  "terminated_early" : false,
                  "_shards" : {} ,
                  "hits" : {
                    "total" : {
                        "value": 0,
                        "relation": "eq"
                    },
                    "max_score" : 0.0,
                    "hits" : [ ]
                  },
                  "aggregations" : {
                    "max_temperature" : {
                      "value" : 202.0
                    }
                  }
                }
    scripts_painless_execute-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              result:
                type: object
            required:
            - result
          examples:
            ExecutePainlessScriptResponseExample1:
              summary: Test context
              description: A successful response from `POST /_scripts/painless/_execute`
                with a `painless_test` context.
              value: |-
                {
                  "result": "0.1"
                }
            ExecutePainlessScriptResponseExample2:
              summary: Filter context
              description: A successful response from `POST /_scripts/painless/_execute`
                with a `filter` context.
              value: |-
                {
                  "result": true
                }
            ExecutePainlessScriptResponseExample3:
              summary: Score context
              description: A successful response from `POST /_scripts/painless/_execute`
                with a `score` context.
              value: |-
                {
                  "result": 0.8
                }
    scroll-200:
      description: ''
      content:
        application/json:
          schema:
            "$ref": "#/components/schemas/_global.search.ResponseBody"
    search-200:
      description: ''
      content:
        application/json:
          schema:
            "$ref": "#/components/schemas/_global.search.ResponseBody"
          examples:
            SearchResponseExample1:
              description: 'An abbreviated response from `GET /my-index-000001/_search?from=40&size=20`
                with a simple term query.

                '
              value: |-
                {
                  "took": 5,
                  "timed_out": false,
                  "_shards": {
                    "total": 1,
                    "successful": 1,
                    "skipped": 0,
                    "failed": 0
                  },
                  "hits": {
                    "total": {
                      "value": 20,
                      "relation": "eq"
                    },
                    "max_score": 1.3862942,
                    "hits": [
                      {
                        "_index": "my-index-000001",
                        "_id": "0",
                        "_score": 1.3862942,
                        "_source": {
                          "@timestamp": "2099-11-15T14:12:12",
                          "http": {
                            "request": {
                              "method": "get"
                            },
                            "response": {
                              "status_code": 200,
                              "bytes": 1070000
                            },
                            "version": "1.1"
                          },
                          "source": {
                            "ip": "127.0.0.1"
                          },
                          "message": "GET /search HTTP/1.1 200 1070000",
                          "user": {
                            "id": "kimchy"
                          }
                        }
                      }
                    ]
                  }
                }
    search_application.get_behavioral_analytics-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            additionalProperties:
              "$ref": "#/components/schemas/search_application._types.AnalyticsCollection"
          examples:
            BehavioralAnalyticsGetResponseExample1:
              description: A successful response from `GET _application/analytics/my*`
              value: |-
                {
                  "my_analytics_collection": {
                      "event_data_stream": {
                          "name": "behavioral_analytics-events-my_analytics_collection"
                      }
                  },
                  "my_analytics_collection2": {
                      "event_data_stream": {
                          "name": "behavioral_analytics-events-my_analytics_collection2"
                      }
                  }
                }
    search_application.search-200:
      description: ''
      content:
        application/json:
          schema:
            "$ref": "#/components/schemas/_global.search.ResponseBody"
    search_mvt-200:
      description: ''
      content:
        application/json:
          schema:
            "$ref": "#/components/schemas/_types.MapboxVectorTiles"
          examples:
            SearchMvtResponseExample1:
              description: 'A successful response from `GET museums/_mvt/location/13/4207/2692`.
                It returns results as a binary vector tile. When decoded into JSON,
                the tile contains the following data.

                '
              value: |-
                {
                  "hits": {
                    "extent": 4096,
                    "version": 2,
                    "features": [
                      {
                        "geometry": {
                          "type": "Point",
                          "coordinates": [
                            3208,
                            3864
                          ]
                        },
                        "properties": {
                          "_id": "1",
                          "_index": "museums",
                          "name": "NEMO Science Museum",
                          "price": 1750
                        },
                        "type": 1
                      },
                      {
                        "geometry": {
                          "type": "Point",
                          "coordinates": [
                            3429,
                            3496
                          ]
                        },
                        "properties": {
                          "_id": "3",
                          "_index": "museums",
                          "name": "Nederlands Scheepvaartmuseum",
                          "price": 1650
                        },
                        "type": 1
                      },
                      {
                        "geometry": {
                          "type": "Point",
                          "coordinates": [
                            3429,
                            3496
                          ]
                        },
                        "properties": {
                          "_id": "4",
                          "_index": "museums",
                          "name": "Amsterdam Centre for Architecture",
                          "price": 0
                        },
                        "type": 1
                      }
                    ]
                  },
                  "aggs": {
                    "extent": 4096,
                    "version": 2,
                    "features": [
                      {
                        "geometry": {
                          "type": "Polygon",
                          "coordinates": [
                            [
                              [
                                3072,
                                3072
                              ],
                              [
                                4096,
                                3072
                              ],
                              [
                                4096,
                                4096
                              ],
                              [
                                3072,
                                4096
                              ],
                              [
                                3072,
                                3072
                              ]
                            ]
                          ]
                        },
                        "properties": {
                          "_count": 3,
                          "max_price.value": 1750.0,
                          "min_price.value": 0.0,
                          "avg_price.value": 1133.3333333333333
                        },
                        "type": 3
                      }
                    ]
                  },
                  "meta": {
                    "extent": 4096,
                    "version": 2,
                    "features": [
                      {
                        "geometry": {
                          "type": "Polygon",
                          "coordinates": [
                            [
                              [
                                0,
                                0
                              ],
                              [
                                4096,
                                0
                              ],
                              [
                                4096,
                                4096
                              ],
                              [
                                0,
                                4096
                              ],
                              [
                                0,
                                0
                              ]
                            ]
                          ]
                        },
                        "properties": {
                          "_shards.failed": 0,
                          "_shards.skipped": 0,
                          "_shards.successful": 1,
                          "_shards.total": 1,
                          "aggregations._count.avg": 3.0,
                          "aggregations._count.count": 1,
                          "aggregations._count.max": 3.0,
                          "aggregations._count.min": 3.0,
                          "aggregations._count.sum": 3.0,
                          "aggregations.avg_price.avg": 1133.3333333333333,
                          "aggregations.avg_price.count": 1,
                          "aggregations.avg_price.max": 1133.3333333333333,
                          "aggregations.avg_price.min": 1133.3333333333333,
                          "aggregations.avg_price.sum": 1133.3333333333333,
                          "aggregations.max_price.avg": 1750.0,
                          "aggregations.max_price.count": 1,
                          "aggregations.max_price.max": 1750.0,
                          "aggregations.max_price.min": 1750.0,
                          "aggregations.max_price.sum": 1750.0,
                          "aggregations.min_price.avg": 0.0,
                          "aggregations.min_price.count": 1,
                          "aggregations.min_price.max": 0.0,
                          "aggregations.min_price.min": 0.0,
                          "aggregations.min_price.sum": 0.0,
                          "hits.max_score": 0.0,
                          "hits.total.relation": "eq",
                          "hits.total.value": 3,
                          "timed_out": false,
                          "took": 2
                        },
                        "type": 3
                      }
                    ]
                  }
                }
    search_shards-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              nodes:
                type: object
                additionalProperties:
                  "$ref": "#/components/schemas/_global.search_shards.SearchShardsNodeAttributes"
              shards:
                type: array
                items:
                  type: array
                  items:
                    "$ref": "#/components/schemas/_types.NodeShard"
              indices:
                type: object
                additionalProperties:
                  "$ref": "#/components/schemas/_global.search_shards.ShardStoreIndex"
            required:
            - nodes
            - shards
            - indices
          examples:
            SearchShardsResponseExample1:
              description: An abbreviated response from `GET /my-index-000001/_search_shards`.
              value: |-
                {
                  "nodes": {},
                  "indices": {
                      "my-index-000001": { }
                  },
                  "shards": [
                      [
                      {
                          "index": "my-index-000001",
                          "node": "JklnKbD7Tyqi9TP3_Q_tBg",
                          "relocating_node": null,
                          "primary": true,
                          "shard": 0,
                          "state": "STARTED",
                          "allocation_id": {"id":"0TvkCyF7TAmM1wHP4a42-A"},
                          "relocation_failure_info" : {
                          "failed_attempts" : 0
                          }
                      }
                      ],
                      [
                      {
                          "index": "my-index-000001",
                          "node": "JklnKbD7Tyqi9TP3_Q_tBg",
                          "relocating_node": null,
                          "primary": true,
                          "shard": 1,
                          "state": "STARTED",
                          "allocation_id": {"id":"fMju3hd1QHWmWrIgFnI4Ww"},
                          "relocation_failure_info" : {
                          "failed_attempts" : 0
                          }
                      }
                      ],
                      [
                      {
                          "index": "my-index-000001",
                          "node": "JklnKbD7Tyqi9TP3_Q_tBg",
                          "relocating_node": null,
                          "primary": true,
                          "shard": 2,
                          "state": "STARTED",
                          "allocation_id": {"id":"Nwl0wbMBTHCWjEEbGYGapg"},
                          "relocation_failure_info" : {
                          "failed_attempts" : 0
                          }
                      }
                      ],
                      [
                      {
                          "index": "my-index-000001",
                          "node": "JklnKbD7Tyqi9TP3_Q_tBg",
                          "relocating_node": null,
                          "primary": true,
                          "shard": 3,
                          "state": "STARTED",
                          "allocation_id": {"id":"bU_KLGJISbW0RejwnwDPKw"},
                          "relocation_failure_info" : {
                          "failed_attempts" : 0
                          }
                      }
                      ],
                      [
                      {
                          "index": "my-index-000001",
                          "node": "JklnKbD7Tyqi9TP3_Q_tBg",
                          "relocating_node": null,
                          "primary": true,
                          "shard": 4,
                          "state": "STARTED",
                          "allocation_id": {"id":"DMs7_giNSwmdqVukF7UydA"},
                          "relocation_failure_info" : {
                          "failed_attempts" : 0
                          }
                      }
                      ]
                    ]
                  }
    search_template-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              took:
                type: number
              timed_out:
                type: boolean
              _shards:
                allOf:
                - "$ref": "#/components/schemas/_types.ShardStatistics"
              hits:
                allOf:
                - "$ref": "#/components/schemas/_global.search._types.HitsMetadata"
              aggregations:
                type: object
                additionalProperties:
                  "$ref": "#/components/schemas/_types.aggregations.Aggregate"
              _clusters:
                allOf:
                - "$ref": "#/components/schemas/_types.ClusterStatistics"
              fields:
                type: object
                additionalProperties:
                  type: object
              max_score:
                type: number
              num_reduce_phases:
                type: number
              profile:
                allOf:
                - "$ref": "#/components/schemas/_global.search._types.Profile"
              pit_id:
                allOf:
                - "$ref": "#/components/schemas/_types.Id"
              _scroll_id:
                allOf:
                - "$ref": "#/components/schemas/_types.ScrollId"
              suggest:
                type: object
                additionalProperties:
                  type: array
                  items:
                    "$ref": "#/components/schemas/_global.search._types.Suggest"
              terminated_early:
                type: boolean
            required:
            - took
            - timed_out
            - _shards
            - hits
    searchable_snapshots.cache_stats-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              nodes:
                type: object
                additionalProperties:
                  "$ref": "#/components/schemas/searchable_snapshots.cache_stats.Node"
            required:
            - nodes
          examples:
            CacheStatsResponseExample1:
              description: A successful response from `GET /_searchable_snapshots/cache/stats`.
              value: |-
                {
                  "nodes" : {
                    "eerrtBMtQEisohZzxBLUSw" : {
                      "shared_cache" : {
                        "reads" : 6051, // The number of cache region read operations. If reads > writes, the difference represents requests successfully served from the cache without accessing the snapshot repository.
                        "bytes_read_in_bytes" : 5448829,
                        "writes" : 37, // The number of cache region write operations. If reads == writes, every request required fetching data from the snapshot repository into the cache.
                        "bytes_written_in_bytes" : 1208320,
                        "evictions" : 5, // The number of cache region evictions. A low eviction count indicates the cache is effectively serving requests. Use this metric to evaluate cache sizing.
                        "num_regions" : 65536,
                        "size_in_bytes" : 1099511627776,
                        "region_size_in_bytes" : 16777216 // The size of each cache region. A region is a contiguous byte range stored on local disk.
                      }
                    }
                  }
                }
    searchable_snapshots.clear_cache-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
    searchable_snapshots.stats-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              stats:
                type: object
              total:
                type: object
            required:
            - stats
            - total
    security.change_password-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
    security.create_api_key-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              api_key:
                description: Generated API key.
                type: string
              expiration:
                description: Expiration in milliseconds for the API key.
                type: number
              id:
                description: Unique ID for this API key.
                allOf:
                - "$ref": "#/components/schemas/_types.Id"
              name:
                description: Specifies the name for this API key.
                allOf:
                - "$ref": "#/components/schemas/_types.Name"
              encoded:
                description: |-
                  API key credentials which is the base64-encoding of
                  the UTF-8 representation of `id` and `api_key` joined
                  by a colon (`:`).
                x-state: Generally available; Added in 7.16.0
                type: string
            required:
            - api_key
            - id
            - name
            - encoded
          examples:
            SecurityCreateApiKeyResponseExample1:
              description: A successful response from `POST /_security/api_key`.
              value: "{\n  \"id\": \"VuaCfGcBCdbkQm-e5aOx\",        \n  \"name\":
                \"my-api-key\",\n  \"expiration\": 1544068612110,         \n  \"api_key\":
                \"ui2lp2axTNmsyakw9tvNnw\", \n  \"encoded\": \"VnVhQ2ZHY0JDZGJrUW0tZTVhT3g6dWkybHAyYXhUTm1zeWFrdzl0dk5udw==\"
                \ \n}"
    security.create_service_token-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              created:
                type: boolean
              token:
                allOf:
                - "$ref": "#/components/schemas/security.create_service_token.Token"
            required:
            - created
            - token
          examples:
            CreateServiceTokenRequestExample1:
              description: 'A successful response from `POST /_security/service/elastic/fleet-server/credential/token/token1`.
                The response includes the service account token, its name, and its
                secret value as a bearer token.

                '
              value: "{\n  \"created\": true,\n  \"token\": {\n    \"name\": \"token1\",\n
                \   \"value\": \"AAEAAWVsYXN0aWM...vZmxlZXQtc2VydmVyL3Rva2VuMTo3TFdaSDZ\"
                \n  }\n}"
    security.disable_user-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
    security.disable_user_profile-200:
      description: ''
      content:
        application/json:
          schema:
            "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
    security.enable_user-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
    security.enable_user_profile-200:
      description: ''
      content:
        application/json:
          schema:
            "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
    security.get_privileges-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            additionalProperties:
              type: object
              additionalProperties:
                "$ref": "#/components/schemas/security.put_privileges.Actions"
          examples:
            SecurityGetPrivilegesResponseExample1:
              description: 'A successful response from `GET /_security/privilege/myapp/read`.
                The response contains information about the `read` privilege for the
                `app01` application.

                '
              value: |-
                {
                  "myapp": {
                    "read": {
                      "application": "myapp",
                      "name": "read",
                      "actions": [
                        "data:read/*",
                        "action:login"
                      ],
                      "metadata": {
                        "description": "Read access to myapp"
                      }
                    }
                  }
                }
    security.get_role-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            additionalProperties:
              "$ref": "#/components/schemas/security.get_role.Role"
          examples:
            SecurityGetRoleResponseExample1:
              description: 'A successful response from `GET /_security/role/my_admin_role`.
                The response contains information about the `my_admin_role` role in
                the native realm.

                '
              value: |-
                {
                  "my_admin_role": {
                    "description": "Grants full access to all management features within the cluster.",
                    "cluster" : [ "all" ],
                    "indices" : [
                      {
                        "names" : [ "index1", "index2" ],
                        "privileges" : [ "all" ],
                        "allow_restricted_indices" : false,
                        "field_security" : {
                          "grant" : [ "title", "body" ]}
                      }
                    ],
                    "applications" : [ ],
                    "run_as" : [ "other_user" ],
                    "metadata" : {
                      "version" : 1
                    },
                    "transient_metadata": {
                      "enabled": true
                    }
                  }
                }
    security.get_role_mapping-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            additionalProperties:
              "$ref": "#/components/schemas/security._types.RoleMapping"
          examples:
            SecurityGetRoleMappingResponseExample1:
              description: A successful response from `GET /_security/role_mapping/mapping1`.
              value: |-
                {
                  "mapping1": {
                    "enabled": true,
                    "roles": [
                      "user"
                    ],
                    "rules": {
                      "field": {
                        "username": "*"
                      }
                    },
                    "metadata": {}
                  }
                }
    security.get_service_accounts-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            additionalProperties:
              "$ref": "#/components/schemas/security.get_service_accounts.RoleDescriptorWrapper"
          examples:
            GetServiceAccountsResponseExample1:
              description: 'A successful response from `GET /_security/service/elastic/fleet-server`.
                The response contains information about the `elastic/fleet-server`
                service account.

                '
              value: |-
                {
                  "elastic/fleet-server": {
                    "role_descriptor": {
                      "cluster": [
                        "monitor",
                        "manage_own_api_key",
                        "read_fleet_secrets"
                      ],
                      "indices": [
                        {
                          "names": [
                            "logs-*",
                            "metrics-*",
                            "traces-*",
                            ".logs-endpoint.diagnostic.collection-*",
                            ".logs-endpoint.action.responses-*",
                            ".logs-endpoint.heartbeat-*"
                          ],
                          "privileges": [
                            "write",
                            "create_index",
                            "auto_configure"
                          ],
                          "allow_restricted_indices": false
                        },
                        {
                          "names": [
                            "profiling-*"
                          ],
                          "privileges": [
                            "read",
                            "write"
                          ],
                          "allow_restricted_indices": false
                        },
                        {
                          "names": [
                            "traces-apm.sampled-*"
                          ],
                          "privileges": [
                            "read",
                            "monitor",
                            "maintenance"
                          ],
                          "allow_restricted_indices": false
                        },
                        {
                          "names": [
                            ".fleet-secrets*"
                          ],
                          "privileges": [
                            "read"
                          ],
                          "allow_restricted_indices": true
                        },
                        {
                          "names": [
                            ".fleet-actions*"
                          ],
                          "privileges": [
                            "read",
                            "write",
                            "monitor",
                            "create_index",
                            "auto_configure",
                            "maintenance"
                          ],
                          "allow_restricted_indices": true
                        },
                        {
                          "names": [
                            ".fleet-agents*"
                          ],
                          "privileges": [
                            "read",
                            "write",
                            "monitor",
                            "create_index",
                            "auto_configure",
                            "maintenance"
                          ],
                          "allow_restricted_indices": true
                        },
                        {
                          "names": [
                            ".fleet-artifacts*"
                          ],
                          "privileges": [
                            "read",
                            "write",
                            "monitor",
                            "create_index",
                            "auto_configure",
                            "maintenance"
                          ],
                          "allow_restricted_indices": true
                        },
                        {
                          "names": [
                            ".fleet-enrollment-api-keys*"
                          ],
                          "privileges": [
                            "read",
                            "write",
                            "monitor",
                            "create_index",
                            "auto_configure",
                            "maintenance"
                          ],
                          "allow_restricted_indices": true
                        },
                        {
                          "names": [
                            ".fleet-policies*"
                          ],
                          "privileges": [
                            "read",
                            "write",
                            "monitor",
                            "create_index",
                            "auto_configure",
                            "maintenance"
                          ],
                          "allow_restricted_indices": true
                        },
                        {
                          "names": [
                            ".fleet-policies-leader*"
                          ],
                          "privileges": [
                            "read",
                            "write",
                            "monitor",
                            "create_index",
                            "auto_configure",
                            "maintenance"
                          ],
                          "allow_restricted_indices": true
                        },
                        {
                          "names": [
                            ".fleet-servers*"
                          ],
                          "privileges": [
                            "read",
                            "write",
                            "monitor",
                            "create_index",
                            "auto_configure",
                            "maintenance"
                          ],
                          "allow_restricted_indices": true
                        },
                        {
                          "names": [
                            ".fleet-fileds*"
                          ],
                          "privileges": [
                            "read",
                            "write",
                            "monitor",
                            "create_index",
                            "auto_configure",
                            "maintenance"
                          ],
                          "allow_restricted_indices": true
                        },
                        {
                          "names": [
                            "synthetics-*"
                          ],
                          "privileges": [
                            "read",
                            "write",
                            "create_index",
                            "auto_configure"
                          ],
                          "allow_restricted_indices": false
                        }
                      ],
                      "applications": [
                        {
                          "application": "kibana-*",
                          "privileges": [
                            "reserved_fleet-setup"
                          ],
                          "resources": [
                            "*"
                          ]
                        }
                      ],
                      "run_as": [],
                      "metadata": {},
                      "transient_metadata": {
                        "enabled": true
                      }
                    }
                  }
                }
    security.get_user-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            additionalProperties:
              "$ref": "#/components/schemas/security._types.User"
          examples:
            SecurityGetUserResponseExample1:
              description: 'A successful response from `GET /_security/user/jacknich?with_profile_uid=true`.
                It includes the user `profile_uid` as part of the response.

                '
              value: |-
                {
                  "jacknich": {
                    "username": "jacknich",
                    "roles": [
                      "admin", "other_role1"
                    ],
                    "full_name": "Jack Nicholson",
                    "email": "jacknich@example.com",
                    "metadata": { "intelligence" : 7 },
                    "enabled": true,
                    "profile_uid": "u_79HkWkwmnBH5gqFKwoxggWPjEBOur1zLPXQPEl1VBW0_0"
                  }
                }
    security.has_privileges-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              application:
                allOf:
                - "$ref": "#/components/schemas/security.has_privileges.ApplicationsPrivileges"
              cluster:
                type: object
                additionalProperties:
                  type: boolean
              has_all_requested:
                type: boolean
              index:
                type: object
                additionalProperties:
                  "$ref": "#/components/schemas/security.has_privileges.Privileges"
              username:
                allOf:
                - "$ref": "#/components/schemas/_types.Username"
            required:
            - application
            - cluster
            - has_all_requested
            - index
            - username
          examples:
            SecurityHasPrivilegesResponseExample1:
              description: A successful response from `GET /_security/user/_has_privileges`,
                which lists the privileges for the `rdeniro` user.
              value: |-
                {
                  "username": "rdeniro",
                  "has_all_requested" : false,
                  "cluster" : {
                    "monitor" : true,
                    "manage" : false
                  },
                  "index" : {
                    "suppliers" : {
                      "read" : true
                    },
                    "products" : {
                      "read" : true
                    },
                    "inventory" : {
                      "read" : true,
                      "write" : false
                    }
                  },
                  "application" : {
                    "inventory_manager" : {
                      "product/1852563" : {
                        "read": false,
                        "data:write/inventory": false
                      }
                    }
                  }
                }
    security.has_privileges_user_profile-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              has_privilege_uids:
                description: |-
                  The subset of the requested profile IDs of the users that
                  have all the requested privileges.
                type: array
                items:
                  "$ref": "#/components/schemas/security._types.UserProfileId"
              errors:
                description: |-
                  The subset of the requested profile IDs for which an error
                  was encountered. It does not include the missing profile IDs
                  or the profile IDs of the users that do not have all the
                  requested privileges. This field is absent if empty.
                allOf:
                - "$ref": "#/components/schemas/security.has_privileges_user_profile.HasPrivilegesUserProfileErrors"
            required:
            - has_privilege_uids
          examples:
            HasPrivilegesUserProfileResponseExample1:
              description: 'A response from `POST /_security/profile/_has_privileges`
                that indicates only one of the three users has all the privileges
                and one of them is not found.

                '
              value: |-
                {
                  "has_privilege_uids": ["u_rzRnxDgEHIH0GOUoFkZr5Y27YUwSk19Joiq=g4OCxxB_1"],
                  "errors": {
                    "count": 1,
                    "details": {
                      "u_does-not-exist_0": {
                        "type": "resource_not_found_exception",
                        "reason": "profile document not found"
                      }
                    }
                  }
                }
    security.put_privileges-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            additionalProperties:
              type: object
              additionalProperties:
                "$ref": "#/components/schemas/security._types.CreatedStatus"
          examples:
            SecurityPutPrivilegesResponseExample1:
              description: A successful response from `PUT /_security/privilege`.
              value: "{\n  \"myapp\": {\n    \"read\": {\n      \"created\": true
                \n    }\n  }\n}"
            SecurityPutPrivilegesResponseExample2:
              description: 'A successful response from `PUT /_security/privilege`.
                The `created` property indicates whether the privileges have been
                created or updated.

                '
              value: |-
                {
                  "app02": {
                    "all": {
                      "created": true
                    }
                  },
                  "app01": {
                    "read": {
                      "created": true
                    },
                    "write": {
                      "created": true
                    }
                  }
                }
    security.put_role-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              role:
                description: When an existing role is updated, `created` is set to
                  `false`.
                allOf:
                - "$ref": "#/components/schemas/security._types.CreatedStatus"
            required:
            - role
          examples:
            SecurityPutRoleResponseExample1:
              description: A successful response from `POST /_security/role/my_admin_role`.
              value: "{\n  \"role\": {\n    \"created\": true \n  }\n}"
    security.put_role_mapping-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              created:
                type: boolean
              role_mapping:
                allOf:
                - "$ref": "#/components/schemas/security._types.CreatedStatus"
            required:
            - role_mapping
          examples:
            SecurityPutRoleMappingResponseExample1:
              description: A successful response from `POST /_security/role_mapping/mapping1`.
              value: "{\n  \"role_mapping\" : {\n    \"created\" : true \n  }\n}"
    security.put_user-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              created:
                description: |-
                  A successful call returns a JSON structure that shows whether the user has been created or updated.
                  When an existing user is updated, `created` is set to `false`.
                type: boolean
            required:
            - created
          examples:
            SecurityPutUserResponseExample1:
              description: 'A successful response from `POST /_security/user/jacknich`.
                When an existing user is updated, `created` is set to `false`.

                '
              value: "{\n  \"created\": true \n}"
    security.query_api_keys-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              total:
                description: The total number of API keys found.
                type: number
              count:
                description: The number of API keys returned in the response.
                type: number
              api_keys:
                description: A list of API key information.
                type: array
                items:
                  "$ref": "#/components/schemas/security._types.ApiKey"
              aggregations:
                description: The aggregations result, if requested.
                type: object
                additionalProperties:
                  "$ref": "#/components/schemas/security.query_api_keys.ApiKeyAggregate"
            required:
            - total
            - count
            - api_keys
          examples:
            QueryApiKeysResponseExample1:
              summary: Query API keys by ID
              description: 'A successful response from `GET /_security/_query/api_key?with_limited_by=true`.
                The `limited_by` details are the owner user''s permissions associated
                with the API key. It is a point-in-time snapshot captured at creation
                and subsequent updates. An API key''s effective permissions are an
                intersection of its assigned privileges and the owner user''s permissions.

                '
              value: "{\n  \"api_keys\": [\n    {\n      \"id\": \"VuaCfGcBCdbkQm-e5aOx\",\n
                \     \"name\": \"application-key-1\",\n      \"creation\": 1548550550158,\n
                \     \"expiration\": 1548551550158,\n      \"invalidated\": false,\n
                \     \"username\": \"myuser\",\n      \"realm\": \"native1\",\n      \"realm_type\":
                \"native\",\n      \"metadata\": {\n        \"application\": \"my-application\"\n
                \     },\n      \"role_descriptors\": { },\n      \"limited_by\":
                [ \n        {\n          \"role-power-user\": {\n            \"cluster\":
                [\n              \"monitor\"\n            ],\n            \"indices\":
                [\n              {\n                \"names\": [\n                  \"*\"\n
                \               ],\n                \"privileges\": [\n                  \"read\"\n
                \               ],\n                \"allow_restricted_indices\":
                false\n              }\n            ],\n            \"applications\":
                [ ],\n            \"run_as\": [ ],\n            \"metadata\": { },\n
                \           \"transient_metadata\": {\n              \"enabled\":
                true\n            }\n          }\n        }\n      ]\n    }\n  ]\n}"
            QueryApiKeysResponseExample2:
              summary: Query API keys with pagination
              description: 'An abbreviated response from `GET /_security/_query/api_key`
                that contains a list of matched API keys along with their sort values.
                The first sort value is creation time, which is displayed in `date_time`
                format. The second sort value is the API key name.

                '
              value: "{\n  \"total\": 100,\n  \"count\": 10,\n  \"api_keys\": [\n
                \   {\n      \"id\": \"CLXgVnsBOGkf8IyjcXU7\",\n      \"name\": \"app1-key-79\",\n
                \     \"creation\": 1629250154811,\n      \"invalidated\": false,\n
                \     \"username\": \"org-admin-user\",\n      \"realm\": \"native1\",\n
                \     \"metadata\": {\n        \"environment\": \"production\"\n      },\n
                \     \"role_descriptors\": { },\n      \"_sort\": [\n        \"2021-08-18T01:29:14.811Z\",
                \ \n        \"app1-key-79\"  \n      ]\n    },\n    {\n      \"id\":
                \"BrXgVnsBOGkf8IyjbXVB\",\n      \"name\": \"app1-key-78\",\n      \"creation\":
                1629250153794,\n      \"invalidated\": false,\n      \"username\":
                \"org-admin-user\",\n      \"realm\": \"native1\",\n      \"metadata\":
                {\n        \"environment\": \"production\"\n      },\n      \"role_descriptors\":
                { },\n      \"_sort\": [\n        \"2021-08-18T01:29:13.794Z\",\n
                \       \"app1-key-78\"\n      ]\n    }\n  ]\n}"
            QueryApiKeysResponseExample3:
              summary: Query all API keys
              description: 'A successful response from `GET /_security/_query/api_key`.
                It includes the role descriptors that are assigned to each API key
                when it was created or last updated. Note that an API key''s effective
                permissions are an intersection of its assigned privileges and the
                point-in-time snapshot of the owner user''s permissions. An empty
                role descriptors object means the API key inherits the owner user''s
                permissions.

                '
              value: "{\n  \"total\": 3,\n  \"count\": 3,\n  \"api_keys\": [ \n    {\n
                \     \"id\": \"nkvrGXsB8w290t56q3Rg\",\n      \"name\": \"my-api-key-1\",\n
                \     \"creation\": 1628227480421,\n      \"expiration\": 1629091480421,\n
                \     \"invalidated\": false,\n      \"username\": \"elastic\",\n
                \     \"realm\": \"reserved\",\n      \"realm_type\": \"reserved\",\n
                \     \"metadata\": {\n        \"letter\": \"a\"\n      },\n      \"role_descriptors\":
                { \n        \"role-a\": {\n          \"cluster\": [\n            \"monitor\"\n
                \         ],\n          \"indices\": [\n            {\n              \"names\":
                [\n                \"index-a\"\n              ],\n              \"privileges\":
                [\n                \"read\"\n              ],\n              \"allow_restricted_indices\":
                false\n            }\n          ],\n          \"applications\": [
                ],\n          \"run_as\": [ ],\n          \"metadata\": { },\n          \"transient_metadata\":
                {\n            \"enabled\": true\n          }\n        }\n      }\n
                \   },\n    {\n      \"id\": \"oEvrGXsB8w290t5683TI\",\n      \"name\":
                \"my-api-key-2\",\n      \"creation\": 1628227498953,\n      \"expiration\":
                1628313898953,\n      \"invalidated\": false,\n      \"username\":
                \"elastic\",\n      \"realm\": \"reserved\",\n      \"metadata\":
                {\n        \"letter\": \"b\"\n      },\n      \"role_descriptors\":
                { } \n    }\n  ]\n}"
    security.query_role-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              total:
                description: The total number of roles found.
                type: number
              count:
                description: The number of roles returned in the response.
                type: number
              roles:
                description: |-
                  A list of roles that match the query.
                  The returned role format is an extension of the role definition format.
                  It adds the `transient_metadata.enabled` and the `_sort` fields.
                  `transient_metadata.enabled` is set to `false` in case the role is automatically disabled, for example when the role grants privileges that are not allowed by the installed license.
                  `_sort` is present when the search query sorts on some field.
                  It contains the array of values that have been used for sorting.
                type: array
                items:
                  "$ref": "#/components/schemas/security.query_role.QueryRole"
            required:
            - total
            - count
            - roles
          examples:
            QueryRolesResponseExample1:
              summary: Query roles by name
              description: 'A successful response from `POST /_security/_query/role`.
                It returns a JSON structure that contains the information retrieved
                for one or more roles.

                '
              value: "{\n    \"total\": 2,\n    \"count\": 2,\n    \"roles\": [ \n
                \       {\n          \"name\" : \"my_admin_role\",\n          \"cluster\"
                : [\n            \"all\"\n          ],\n          \"indices\" : [\n
                \           {\n              \"names\" : [\n                \"index1\",\n
                \               \"index2\"\n              ],\n              \"privileges\"
                : [\n                \"all\"\n              ],\n              \"field_security\"
                : {\n                \"grant\" : [\n                  \"title\",\n
                \                 \"body\"\n                ]\n              },\n
                \             \"allow_restricted_indices\" : false\n            }\n
                \         ],\n          \"applications\" : [ ],\n          \"run_as\"
                : [\n            \"other_user\"\n          ],\n          \"metadata\"
                : {\n            \"version\" : 1\n          },\n          \"transient_metadata\"
                : {\n            \"enabled\" : true\n          },\n          \"description\"
                : \"Grants full access to all management features within the cluster.\",\n
                \         \"_sort\" : [\n            \"my_admin_role\"\n          ]\n
                \       },\n        {\n          \"name\" : \"my_user_role\",\n          \"cluster\"
                : [ ],\n          \"indices\" : [\n            {\n              \"names\"
                : [\n                \"index1\",\n                \"index2\"\n              ],\n
                \             \"privileges\" : [\n                \"all\"\n              ],\n
                \             \"field_security\" : {\n                \"grant\" :
                [\n                  \"title\",\n                  \"body\"\n                ]\n
                \             },\n              \"allow_restricted_indices\" : false\n
                \           }\n          ],\n          \"applications\" : [ ],\n          \"run_as\"
                : [ ],\n          \"metadata\" : {\n            \"version\" : 1\n
                \         },\n          \"transient_metadata\" : {\n            \"enabled\"
                : true\n          },\n          \"description\" : \"Grants user access
                to some indicies.\",\n          \"_sort\" : [\n            \"my_user_role\"\n
                \         ]\n        }\n    ]\n}"
            QueryRolesResponseExample2:
              summary: Query roles by description
              description: 'A successful response from `POST /_security/_query/role`.

                '
              value: |-
                {
                    "total": 2,
                    "count": 1,
                    "roles": [
                        {
                          "name" : "my_user_role",
                          "cluster" : [ ],
                          "indices" : [
                            {
                              "names" : [
                                "index1",
                                "index2"
                              ],
                              "privileges" : [
                                "all"
                              ],
                              "field_security" : {
                                "grant" : [
                                  "title",
                                  "body"
                                ]
                              },
                              "allow_restricted_indices" : false
                            }
                          ],
                          "applications" : [ ],
                          "run_as" : [ ],
                          "metadata" : {
                            "version" : 1
                          },
                          "transient_metadata" : {
                            "enabled" : true
                          },
                          "description" : "Grants user access to some indicies."
                        }
                    ]
                }
    security.query_user-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              total:
                description: The total number of users found.
                type: number
              count:
                description: The number of users returned in the response.
                type: number
              users:
                description: A list of users that match the query.
                type: array
                items:
                  "$ref": "#/components/schemas/security.query_user.QueryUser"
            required:
            - total
            - count
            - users
          examples:
            SecurityQueryUserResponseExample1:
              summary: Query users by role prefix
              description: 'A successful response from `POST /_security/_query/user?with_profile_uid=true`
                that contains users that have roles that are prefixed with `other`.
                It also includes the user `profile_uid` in the response.

                '
              value: |-
                {
                    "total": 1,
                    "count": 1,
                    "users": [
                        {
                            "username": "jacknich",
                            "roles": [
                                "admin",
                                "other_role1"
                            ],
                            "full_name": "Jack Nicholson",
                            "email": "jacknich@example.com",
                            "metadata": {
                                "intelligence": 7
                            },
                            "enabled": true,
                            "profile_uid": "u_79HkWkwmnBH5gqFKwoxggWPjEBOur1zLPXQPEl1VBW0_0"
                        }
                    ]
                }
            SecurityQueryUserResponseExample2:
              summary: Query users with multiple conditions
              description: 'A successful response from `POST /_security/_query/user`
                that uses a `bool` query to issue complex logical conditions and uses
                `from`, `size`, and `sort` to help paginate the result. The sort value
                is `username`.

                '
              value: "{\n    \"total\": 5,\n    \"count\": 2,\n    \"users\": [\n
                \       {\n            \"username\": \"ray\",\n            \"roles\":
                [\n                \"other_role3\"\n            ],\n            \"full_name\":
                \"Ray Nicholson\",\n            \"email\": \"rayn@example.com\",\n
                \           \"metadata\": {\n                \"intelligence\": 7\n
                \           },\n            \"enabled\": true,\n            \"_sort\":
                [\n                \"ray\" \n            ]\n        },\n        {\n
                \           \"username\": \"lorraine\",\n            \"roles\": [\n
                \               \"other_role3\"\n            ],\n            \"full_name\":
                \"Lorraine Nicholson\",\n            \"email\": \"lorraine@example.com\",\n
                \           \"metadata\": {\n                \"intelligence\": 7\n
                \           },\n            \"enabled\": true,\n            \"_sort\":
                [\n                \"lorraine\"\n            ]\n        }\n    ]\n}"
            SecurityQueryUserResponseExample3:
              summary: Query all users
              description: 'A successful response from `GET /_security/_query/user`,
                which lists all users. It returns a JSON structure that contains the
                information retrieved from one or more users.

                '
              value: "{\n    \"total\": 2,\n    \"count\": 2,\n    \"users\": [ \n
                \       {\n            \"username\": \"jacknich\",\n            \"roles\":
                [\n                \"admin\",\n                \"other_role1\"\n            ],\n
                \           \"full_name\": \"Jack Nicholson\",\n            \"email\":
                \"jacknich@example.com\",\n            \"metadata\": {\n                \"intelligence\":
                7\n            },\n            \"enabled\": true\n        },\n        {\n
                \           \"username\": \"sandrakn\",\n            \"roles\": [\n
                \               \"admin\",\n                \"other_role1\"\n            ],\n
                \           \"full_name\": \"Sandra Knight\",\n            \"email\":
                \"sandrakn@example.com\",\n            \"metadata\": {\n                \"intelligence\":
                7\n            },\n            \"enabled\": true\n        }\n    ]\n}"
    security.suggest_user_profiles-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              total:
                description: Metadata about the number of matching profiles.
                allOf:
                - "$ref": "#/components/schemas/security.suggest_user_profiles.TotalUserProfiles"
              took:
                description: The number of milliseconds it took Elasticsearch to run
                  the request.
                type: number
              profiles:
                description: A list of profile documents, ordered by relevance, that
                  match the search criteria.
                type: array
                items:
                  "$ref": "#/components/schemas/security._types.UserProfile"
            required:
            - total
            - took
            - profiles
          examples:
            SuggestUserProfilesResponseExample1:
              description: 'A successful response from `GET /_security/saml/metadata/saml1`.
                It contains the SAML metadata that was generated for the SAML realm
                as an XML string.

                '
              value: |-
                {
                    "metadata" : "<?xml version=\"1.0\" encoding=\"UTF-8\"?><md:EntityDescriptor xmlns:md=\"urn:oasis:names:tc:SAML:2.0:metadata\" entityID=\"https://kibana.org\"><md:SPSSODescriptor AuthnRequestsSigned=\"false\" WantAssertionsSigned=\"true\" protocolSupportEnumeration=\"urn:oasis:names:tc:SAML:2.0:protocol\"><md:SingleLogoutService Binding=\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect\" Location=\"https://kibana.org/logout\"/><md:AssertionConsumerService Binding=\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST\" Location=\"https://kibana.org/api/security/saml/callback\" index=\"1\" isDefault=\"true\"/></md:SPSSODescriptor></md:EntityDescriptor>"
                }
    security.update_user_profile_data-200:
      description: ''
      content:
        application/json:
          schema:
            "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
          examples:
            UpdateUserProfileDataResponseExample1:
              description: 'A successful response from `POST /_security/profile/u_P_0BMHgaOK3p7k-PFWUCbw9dQ-UFjt01oWJ_Dp2PmPc_0/_data`,
                which indicates that the request is acknowledged.

                '
              value: |-
                {
                  "acknowledged": true
                }
    simulate.ingest-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              docs:
                type: array
                items:
                  "$ref": "#/components/schemas/simulate.ingest.SimulateIngestDocumentResult"
            required:
            - docs
          examples:
            SimulateIngestResponseExample1:
              summary: Use an existing pipeline definition
              description: A successful response when the simulation uses pipeline
                definitions that are already in the system.
              value: |-
                {
                  "docs": [
                    {
                      "doc": null,
                      "_id": 123,
                      "_index": "my-index",
                      "_version": -3,
                      "_source": {
                        "field1": "value1",
                        "field2": "value2",
                        "foo": "bar"
                      },
                      "executed_pipelines": [
                        "my-pipeline",
                        "my-final-pipeline"
                      ]
                    },
                    {
                      "doc": null,
                      "_id": 456,
                      "_index": "my-index",
                      "_version": "-3,",
                      "_source": {
                        "field1": "value1",
                        "field2": "value2",
                        "foo": "rab"
                      },
                      "executed_pipelines": [
                        "my-pipeline",
                        "my-final-pipeline"
                      ]
                    }
                  ]
                }
            SimulateIngestResponseExample2:
              summary: Use pipeline substitutions
              description: A successful response when the simulation uses pipeline
                substitutions.
              value: |-
                {
                  "docs": [
                    {
                      "doc": null,
                      "_id": 123,
                      "_index": "my-index",
                      "_version": -3,
                      "_source": {
                        "field2": "value2",
                        "foo": "BAR"
                      },
                      "executed_pipelines": [
                        "my-pipeline",
                        "my-final-pipeline"
                      ]
                    },
                    {
                      "doc": null,
                      "_id": 456,
                      "_index": "my-index",
                      "_version": -3,
                      "_source": {
                        "field2": "value2",
                        "foo": "RAB"
                      },
                      "executed_pipelines": [
                        "my-pipeline",
                        "my-final-pipeline"
                      ]
                    }
                  ]
                }
            SimulateIngestResponseExample3:
              summary: Use pipeline substitutions
              description: A successful response when the simulation uses pipeline
                substitutions.
              value: |-
                {
                  "docs": [
                    {
                      "doc": {
                        "_id": "123",
                        "_index": "my-index",
                        "_version": -3,
                        "_source": {
                          "foo": "foo"
                        },
                        "executed_pipelines": [],
                        "effective_mapping": {
                          "_doc": {
                            "properties": {
                              "foo": {
                                "type": "keyword"
                              }
                            }
                          }
                        }
                      }
                    },
                    {
                      "doc": {
                        "_id": "456",
                        "_index": "my-index",
                        "_version": -3,
                        "_source": {
                          "bar": "rab"
                        },
                      "executed_pipelines": [],
                        "effective_mapping": {
                          "_doc": {
                            "properties": {
                              "bar": {
                                "type": "keyword"
                              }
                            }
                          }
                        }
                      }
                    }
                  ]
                }
    slm.get_lifecycle-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            additionalProperties:
              "$ref": "#/components/schemas/slm._types.SnapshotLifecycle"
          examples:
            GetSnapshotLifecycleResponseExample1:
              description: A successful response from `GET _slm/policy/daily-snapshots?human`.
              value: |-
                {
                  "daily-snapshots": {
                    "version": 1,
                    "modified_date": "2099-05-06T01:30:00.000Z",
                    "modified_date_millis": 4081757400000,
                    "policy" : {
                      "schedule": "0 30 1 * * ?",
                      "name": "<daily-snap-{now/d}>",
                      "repository": "my_repository",
                      "config": {
                        "indices": ["data-*", "important"],
                        "ignore_unavailable": false,
                        "include_global_state": false
                      },
                      "retention": {
                        "expire_after": "30d",
                        "min_count": 5,
                        "max_count": 50
                      }
                    },
                    "stats": {
                      "policy": "daily-snapshots",
                      "snapshots_taken": 0,
                      "snapshots_failed": 0,
                      "snapshots_deleted": 0,
                      "snapshot_deletion_failures": 0
                    },
                    "next_execution": "2099-05-07T01:30:00.000Z",
                    "next_execution_millis": 4081843800000
                  }
                }
    snapshot.create-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              accepted:
                description: Equals `true` if the snapshot was accepted. Present when
                  the request had `wait_for_completion` set to `false`
                x-state: Generally available; Added in 7.15.0
                type: boolean
              snapshot:
                description: Snapshot information. Present when the request had `wait_for_completion`
                  set to `true`
                allOf:
                - "$ref": "#/components/schemas/snapshot._types.SnapshotInfo"
          examples:
            SnapshotCreateResponseExample1:
              description: A successful response from `PUT /_snapshot/my_repository/snapshot_2?wait_for_completion=true`.
              value: |-
                {
                  "snapshot": {
                    "snapshot": "snapshot_2",
                    "uuid": "vdRctLCxSketdKb54xw67g",
                    "repository": "my_repository",
                    "version_id": <version_id>,
                    "version": <version>,
                    "indices": [],
                    "data_streams": [],
                    "feature_states": [],
                    "include_global_state": false,
                    "metadata": {
                      "taken_by": "user123",
                      "taken_because": "backup before upgrading"
                    },
                    "state": "SUCCESS",
                    "start_time": "2020-06-25T14:00:28.850Z",
                    "start_time_in_millis": 1593093628850,
                    "end_time": "2020-06-25T14:00:28.850Z",
                    "end_time_in_millis": 1593094752018,
                    "duration_in_millis": 0,
                    "failures": [],
                    "shards": {
                      "total": 0,
                      "failed": 0,
                      "successful": 0
                    }
                  }
                }
    snapshot.create_repository-200:
      description: ''
      content:
        application/json:
          schema:
            "$ref": "#/components/schemas/_types.AcknowledgedResponseBase"
    snapshot.get_repository-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            additionalProperties:
              "$ref": "#/components/schemas/snapshot._types.Repository"
          examples:
            SnapshotGetRepositoryResponseExample1:
              description: A successful response from `GET /_snapshot/my_repository`.
              value: |-
                {
                  "my_repository" : {
                    "type" : "fs",
                    "uuid" : "0JLknrXbSUiVPuLakHjBrQ",
                    "settings" : {
                      "location" : "my_backup_location"
                    }
                  }
                }
    snapshot.status-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              snapshots:
                type: array
                items:
                  "$ref": "#/components/schemas/snapshot._types.Status"
            required:
            - snapshots
          examples:
            SnapshotStatusResponseExample1:
              summary: All shard stats present
              description: 'A successful response from `GET _snapshot/my_repository/snapshot_2/_status`.
                The response contains detailed status information for `snapshot_2`
                in the `my_repository` repository.

                '
              value: |-
                {
                  "snapshots" : [
                    {
                      "snapshot" : "snapshot_2",
                      "repository" : "my_repository",
                      "uuid" : "lNeQD1SvTQCqqJUMQSwmGg",
                      "state" : "SUCCESS",
                      "include_global_state" : false,
                      "shards_stats" : {
                        "initializing" : 0,
                        "started" : 0,
                        "finalizing" : 0,
                        "done" : 1,
                        "failed" : 0,
                        "total" : 1
                      },
                      "stats" : {
                        "incremental" : {
                          "file_count" : 3,
                          "size_in_bytes" : 5969
                        },
                        "total" : {
                          "file_count" : 4,
                          "size_in_bytes" : 6024
                        },
                        "start_time_in_millis" : 1594829326691,
                        "time_in_millis" : 205
                      },
                      "indices" : {
                        "index_1" : {
                          "shards_stats" : {
                            "initializing" : 0,
                            "started" : 0,
                            "finalizing" : 0,
                            "done" : 1,
                            "failed" : 0,
                            "total" : 1
                          },
                          "stats" : {
                            "incremental" : {
                              "file_count" : 3,
                              "size_in_bytes" : 5969
                            },
                            "total" : {
                              "file_count" : 4,
                              "size_in_bytes" : 6024
                            },
                            "start_time_in_millis" : 1594829326896,
                            "time_in_millis" : 0
                          },
                          "shards" : {
                            "0" : {
                              "stage" : "DONE",
                              "stats" : {
                                "incremental" : {
                                  "file_count" : 3,
                                  "size_in_bytes" : 5969
                                },
                                "total" : {
                                  "file_count" : 4,
                                  "size_in_bytes" : 6024
                                },
                                "start_time_in_millis" : 1594829326896,
                                "time_in_millis" : 0
                              }
                            }
                          }
                        }
                      }
                    }
                  ]
                }
            SnapshotStatusResponseExample2:
              summary: Missing shard stats
              description: 'A successful response from `GET _snapshot/my_repository/snapshot_2/_status`.
                Note that in this example the stats for `index-2` shard `0` are missing,
                with explanatory details provided in the `description` field.

                '
              value: |-
                {
                  "snapshots" : [
                    {
                      "snapshot" : "snapshot_2",
                      "repository" : "my_repository",
                      "uuid" : "lNeQD1SvTQCqqJUMQSwmGg",
                      "state" : "STARTED",
                      "include_global_state" : true,
                      "shards_stats" : {
                        "initializing" : 0,
                        "started" : 1,
                        "finalizing" : 0,
                        "done" : 1,
                        "failed" : 0,
                        "total" : 2
                      },
                      "stats" : {
                        "incremental" : {
                          "file_count" : 4,
                          "size_in_bytes" : 5412
                        },
                        "processed" : {
                          "file_count" : 2,
                          "size_in_bytes" : 658
                        },
                        "total" : {
                          "file_count" : 4,
                          "size_in_bytes" : 5412
                        },
                        "start_time_in_millis" : 1750452674327,
                        "time_in_millis" : 189
                      },
                      "indices" : {
                        "index-1" : {
                          "shards_stats" : {
                            "initializing" : 0,
                            "started" : 1,
                            "finalizing" : 0,
                            "done" : 0,
                            "failed" : 0,
                            "total" : 1
                          },
                          "stats" : {
                            "incremental" : {
                              "file_count" : 4,
                              "size_in_bytes" : 5412
                            },
                            "processed" : {
                              "file_count" : 2,
                              "size_in_bytes" : 658
                            },
                            "total" : {
                              "file_count" : 4,
                              "size_in_bytes" : 5412
                            },
                            "start_time_in_millis" : 1750452674379,
                            "time_in_millis" : 0
                          },
                          "shards" : {
                            "0" : {
                              "stage" : "STARTED",
                              "stats" : {
                                "incremental" : {
                                  "file_count" : 4,
                                  "size_in_bytes" : 5412
                                },
                                "processed" : {
                                  "file_count" : 2,
                                  "size_in_bytes" : 658
                                },
                                "total" : {
                                  "file_count" : 4,
                                  "size_in_bytes" : 5412
                                },
                                "start_time_in_millis" : 1750452674379,
                                "time_in_millis" : 0
                              },
                              "node" : "VJzy6aKJSVKwcfjIFBPXxw"
                            }
                          }
                        },
                        "index-2" : {
                          "shards_stats" : {
                            "initializing" : 0,
                            "started" : 0,
                            "finalizing" : 0,
                            "done" : 1,
                            "failed" : 0,
                            "total" : 1
                          },
                          "stats" : {
                            "incremental" : {
                              "file_count" : 0,
                              "size_in_bytes" : 0
                            },
                            "total" : {
                              "file_count" : 0,
                              "size_in_bytes" : 0
                            },
                            "start_time_in_millis" : 0,
                            "time_in_millis" : 0
                          },
                          "shards" : {
                            "0" : {
                              "stage" : "DONE",
                              "stats" : {
                                "incremental" : {
                                  "file_count" : -1,
                                  "size_in_bytes" : -1
                                },
                                "total" : {
                                  "file_count" : -1,
                                  "size_in_bytes" : -1
                                },
                                "start_time_in_millis" : 0,
                                "time_in_millis" : 0
                              },
                              "description" : "Snapshot shard stats missing from a currently running snapshot due to a node leaving the cluster after completing the shard snapshot; retry once the snapshot has completed to load all shard stats from the repository."
                            }
                          }
                        }
                      }
                    }
                  ]
                }
    sql.query-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              columns:
                description: Column headings for the search results. Each object is
                  a column.
                type: array
                items:
                  "$ref": "#/components/schemas/sql._types.Column"
              cursor:
                description: |-
                  The cursor for the next set of paginated results.
                  For CSV, TSV, and TXT responses, this value is returned in the `Cursor` HTTP header.
                type: string
              id:
                description: |-
                  The identifier for the search.
                  This value is returned only for async and saved synchronous searches.
                  For CSV, TSV, and TXT responses, this value is returned in the `Async-ID` HTTP header.
                allOf:
                - "$ref": "#/components/schemas/_types.Id"
              is_running:
                description: |-
                  If `true`, the search is still running.
                  If `false`, the search has finished.
                  This value is returned only for async and saved synchronous searches.
                  For CSV, TSV, and TXT responses, this value is returned in the `Async-partial` HTTP header.
                type: boolean
              is_partial:
                description: |-
                  If `true`, the response does not contain complete search results.
                  If `is_partial` is `true` and `is_running` is `true`, the search is still running.
                  If `is_partial` is `true` but `is_running` is `false`, the results are partial due to a failure or timeout.
                  This value is returned only for async and saved synchronous searches.
                  For CSV, TSV, and TXT responses, this value is returned in the `Async-partial` HTTP header.
                type: boolean
              rows:
                description: The values for the search results.
                type: array
                items:
                  "$ref": "#/components/schemas/sql._types.Row"
            required:
            - rows
    sql.translate-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              aggregations:
                type: object
                additionalProperties:
                  "$ref": "#/components/schemas/_types.aggregations.AggregationContainer"
              size:
                type: number
              _source:
                allOf:
                - "$ref": "#/components/schemas/_global.search._types.SourceConfig"
              fields:
                type: array
                items:
                  "$ref": "#/components/schemas/_types.query_dsl.FieldAndFormat"
              query:
                allOf:
                - "$ref": "#/components/schemas/_types.query_dsl.QueryContainer"
              sort:
                allOf:
                - "$ref": "#/components/schemas/_types.Sort"
              track_total_hits:
                allOf:
                - "$ref": "#/components/schemas/_global.search._types.TrackHits"
    tasks.cancel-200:
      description: ''
      content:
        application/json:
          schema:
            "$ref": "#/components/schemas/tasks._types.TaskListResponseBase"
    terms_enum-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              _shards:
                allOf:
                - "$ref": "#/components/schemas/_types.ShardStatistics"
              terms:
                type: array
                items:
                  type: string
              complete:
                description: |-
                  If `false`, the returned terms set may be incomplete and should be treated as approximate.
                  This can occur due to a few reasons, such as a request timeout or a node error.
                type: boolean
            required:
            - _shards
            - terms
            - complete
          examples:
            TermsEnumResponseExample1:
              description: A successful response from `POST stackoverflow/_terms_enum`.
              value: |-
                {
                  "_shards": {
                    "total": 1,
                    "successful": 1,
                    "failed": 0
                  },
                  "terms": [
                    "kibana"
                  ],
                  "complete" : true
                }
    termvectors-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              found:
                type: boolean
              _id:
                allOf:
                - "$ref": "#/components/schemas/_types.Id"
              _index:
                allOf:
                - "$ref": "#/components/schemas/_types.IndexName"
              term_vectors:
                type: object
                additionalProperties:
                  "$ref": "#/components/schemas/_global.termvectors.TermVector"
              took:
                type: number
              _version:
                allOf:
                - "$ref": "#/components/schemas/_types.VersionNumber"
            required:
            - found
            - _index
            - took
            - _version
          examples:
            TermVectorsResponseExample1:
              summary: Return stored term vectors
              description: A successful response from `GET /my-index-000001/_termvectors/1`.
              value: |-
                {
                  "_index": "my-index-000001",
                  "_id": "1",
                  "_version": 1,
                  "found": true,
                  "took": 6,
                  "term_vectors": {
                    "text": {
                      "field_statistics": {
                        "sum_doc_freq": 4,
                        "doc_count": 2,
                        "sum_ttf": 6
                      },
                      "terms": {
                        "test": {
                          "doc_freq": 2,
                          "ttf": 4,
                          "term_freq": 3,
                          "tokens": [
                            {
                              "position": 0,
                              "start_offset": 0,
                              "end_offset": 4,
                              "payload": "d29yZA=="
                            },
                            {
                              "position": 1,
                              "start_offset": 5,
                              "end_offset": 9,
                              "payload": "d29yZA=="
                            },
                            {
                              "position": 2,
                              "start_offset": 10,
                              "end_offset": 14,
                              "payload": "d29yZA=="
                            }
                          ]
                        }
                      }
                    }
                  }
                }
            TermVectorsResponseExample2:
              summary: Per-field analyzer
              description: A successful response from `GET /my-index-000001/_termvectors`
                with `per_field_analyzer` in the request body.
              value: |-
                {
                  "_index": "my-index-000001",
                  "_version": 0,
                  "found": true,
                  "took": 6,
                  "term_vectors": {
                    "fullname": {
                      "field_statistics": {
                          "sum_doc_freq": 2,
                          "doc_count": 4,
                          "sum_ttf": 4
                      },
                      "terms": {
                          "John Doe": {
                            "term_freq": 1,
                            "tokens": [
                                {
                                  "position": 0,
                                  "start_offset": 0,
                                  "end_offset": 8
                                }
                            ]
                          }
                      }
                    }
                  }
                }
            TermVectorsResponseExample3:
              summary: Terms filtering
              description: A successful response from `GET /my-index-000001/_termvectors`
                with a `filter` in the request body.
              value: |-
                {
                  "_index": "imdb",
                  "_version": 0,
                  "found": true,
                  "term_vectors": {
                      "plot": {
                        "field_statistics": {
                            "sum_doc_freq": 3384269,
                            "doc_count": 176214,
                            "sum_ttf": 3753460
                        },
                        "terms": {
                            "armored": {
                              "doc_freq": 27,
                              "ttf": 27,
                              "term_freq": 1,
                              "score": 9.74725
                            },
                            "industrialist": {
                              "doc_freq": 88,
                              "ttf": 88,
                              "term_freq": 1,
                              "score": 8.590818
                            },
                            "stark": {
                              "doc_freq": 44,
                              "ttf": 47,
                              "term_freq": 1,
                              "score": 9.272792
                            }
                        }
                      }
                  }
                }
    text_structure.find_message_structure-200:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              charset:
                type: string
              ecs_compatibility:
                allOf:
                - "$ref": "#/components/schemas/text_structure._types.EcsCompatibilityType"
              field_stats:
                type: object
                additionalProperties:
                  "$ref": "#/components/schemas/text_structure._types.FieldStat"
              format:
                allOf:
                - "$ref": "#/components/schemas/text_structure._types.FormatType"
              grok_pattern:
                allOf:
                - "$ref": "#/components/schemas/_types.GrokPattern"
              java_timestamp_formats:
                type: array
                items:
                  type: string
              joda_timestamp_formats:
                type: array
                items:
                  type: string
              ingest_pipeline:
                allOf:
                - "$ref": "#/components/schemas/ingest._types.PipelineConfig"
              mappings:
                allOf:
                - "$ref": "#/components/schemas/_types.mapping.TypeMapping"
              multiline_start_pattern:
                type: string
              need_client_timezone:
                type: boolean
              num_lines_analyzed:
                type: number
              num_messages_analyzed:
                type: number
              sample_start:
                type: string
              timestamp_field:
                allOf:
                - "$ref": "#/components/schemas/_types.Field"
            required:
            - charset
            - field_stats
            - format
            - ingest_pipeline
            - mappings
            - need_client_timezone
            - num_lines_analyzed
            - num_messages_analyzed
            - sample_start
          examples:
            FindMessageStructureResponseExample1:
              description: A successful response from `POST _text_structure/find_message_structure`.
              value: |-
                {
                  "num_lines_analyzed" : 22,
                  "num_messages_analyzed" : 22,
                  "sample_start" : "[2024-03-05T10:52:36,256][INFO ][o.a.l.u.VectorUtilPanamaProvider] [laptop] Java vector incubator API enabled; uses preferredBitSize=128\n[2024-03-05T10:52:41,038][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [repository-url]\n",
                  "charset" : "UTF-8",
                  "format" : "semi_structured_text",
                  "multiline_start_pattern" : "^\\[\\b\\d{4}-\\d{2}-\\d{2}[T ]\\d{2}:\\d{2}",
                  "grok_pattern" : "\\[%{TIMESTAMP_ISO8601:timestamp}\\]\\[%{LOGLEVEL:loglevel} \\]\\[.*",
                  "ecs_compatibility" : "disabled",
                  "timestamp_field" : "timestamp",
                  "joda_timestamp_formats" : [
                    "ISO8601"
                  ],
                  "java_timestamp_formats" : [
                    "ISO8601"
                  ],
                  "need_client_timezone" : true,
                  "mappings" : {
                    "properties" : {
                      "@timestamp" : {
                        "type" : "date"
                      },
                      "loglevel" : {
                        "type" : "keyword"
                      },
                      "message" : {
                        "type" : "text"
                      }
                    }
                  },
                  "ingest_pipeline" : {
                    "description" : "Ingest pipeline created by text structure finder",
                    "processors" : [
                      {
                        "grok" : {
                          "field" : "message",
                          "patterns" : [
                            "\\[%{TIMESTAMP_ISO8601:timestamp}\\]\\[%{LOGLEVEL:loglevel} \\]\\[.*"
                          ],
                          "ecs_compatibility" : "disabled"
                        }
                      },
                      {
                        "date" : {
                          "field" : "timestamp",
                          "timezone" : "{{ event.timezone }}",
                          "formats" : [
                            "ISO8601"
                          ]
                        }
                      },
                      {
                        "remove" : {
                          "field" : "timestamp"
                        }
                      }
                    ]
                  },
                  "field_stats" : {
                    "loglevel" : {
                      "count" : 22,
                      "cardinality" : 1,
                      "top_hits" : [
                        {
                          "value" : "INFO",
                          "count" : 22
                        }
                      ]
                    },
                    "message" : {
                      "count" : 22,
                      "cardinality" : 22,
                      "top_hits" : [
                        {
                          "value" : "[2024-03-05T10:52:36,256][INFO ][o.a.l.u.VectorUtilPanamaProvider] [laptop] Java vector incubator API enabled; uses preferredBitSize=128",
                          "count" : 1
                        },
                        {
                          "value" : "[2024-03-05T10:52:41,038][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [repository-url]",
                          "count" : 1
                        },
                        {
                          "value" : "[2024-03-05T10:52:41,042][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [rest-root]",
                          "count" : 1
                        },
                        {
                          "value" : "[2024-03-05T10:52:41,043][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [ingest-user-agent]",
                          "count" : 1
                        },
                        {
                          "value" : "[2024-03-05T10:52:41,043][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-core]",
                          "count" : 1
                        },
                        {
                          "value" : "[2024-03-05T10:52:41,043][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-redact]",
                          "count" : 1
                        },
                        {
                          "value" : "[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [lang-painless]]",
                          "coun