Elastic Stack (ELK Stack) Transform API

The transform API from Elastic Stack (ELK Stack) — 13 operation(s) for transform.

Operations 17

GET /_transform/{transform_id} Get transforms #
PUT /_transform/{transform_id} Create a transform #
DELETE /_transform/{transform_id} Delete a transform #
GET /_transform/_node_stats Get node stats #
GET /_transform Get transforms #
GET /_transform/{transform_id}/_stats Get transform stats #
GET /_transform/{transform_id}/_preview Preview a transform #
POST /_transform/{transform_id}/_preview Preview a transform #
GET /_transform/_preview Preview a transform #
POST /_transform/_preview Preview a transform #
POST /_transform/{transform_id}/_reset Reset a transform #
POST /_transform/{transform_id}/_schedule_now Schedule a transform to start now #
POST /_transform/set_upgrade_mode Set upgrade_mode for transform indices #
POST /_transform/{transform_id}/_start Start a transform #
POST /_transform/{transform_id}/_stop Stop transforms #
POST /_transform/{transform_id}/_update Update a transform #
POST /_transform/_upgrade Upgrade all transforms #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/elk-stack-transform-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

elk-stack-transform-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Elasticsearch Request & Response Specification Transform API
  license:
    name: Apache 2.0
    url: https://github.com/elastic/elasticsearch-specification/blob/main/LICENSE
  version: ''
tags:
- name: transform
paths:
  /_transform/{transform_id}:
    get:
      tags:
      - transform
      summary: Get transforms
      description: 'Get configuration information for transforms.


        ## Required authorization


        * Cluster privileges: `monitor_transform`

        '
      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-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:
          default: false
          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:
          default: 30s
          allOf:
          - $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: "{\n  \"source\": {\n    \"index\": \"kibana_sample_data_ecommerce\",\n    \"query\": {\n      \"term\": {\n        \"geoip.continent_name\": {\n          \"value\": \"Asia\"\n        }\n      }\n    }\n  },\n  \"pivot\": {\n    \"group_by\": {\n      \"customer_id\": {\n        \"terms\": {\n          \"field\": \"customer_id\",\n          \"missing_bucket\": true\n        }\n      }\n    },\n    \"aggregations\": {\n      \"max_price\": {\n        \"max\": {\n          \"field\": \"taxful_total_price\"\n        }\n      }\n    }\n  },\n  \"description\": \"Maximum priced ecommerce data by customer_id in Asia\",\n  \"dest\": {\n    \"index\": \"kibana_sample_data_ecommerce_transform1\",\n    \"pipeline\": \"add_timestamp_pipeline\"\n  },\n  \"frequency\": \"5m\",\n  \"sync\": {\n    \"time\": {\n      \"field\": \"order_date\",\n      \"delay\": \"60s\"\n    }\n  },\n  \"retention_policy\": {\n    \"time\": {\n      \"field\": \"order_date\",\n      \"max_age\": \"30d\"\n    }\n  }\n}"
              PutTransformRequestExample2:
                summary: A latest transform
                description: Run `PUT _transform/ecommerce_transform2` to create a transform that uses the latest method.
                value: "{\n  \"source\": {\n    \"index\": \"kibana_sample_data_ecommerce\"\n  },\n  \"latest\": {\n    \"unique_key\": [\n      \"customer_id\"\n    ],\n    \"sort\": \"order_date\"\n  },\n  \"description\": \"Latest order for each customer\",\n  \"dest\": {\n    \"index\": \"kibana_sample_data_ecommerce_transform2\"\n  },\n  \"frequency\": \"5m\",\n  \"sync\": {\n    \"time\": {\n      \"field\": \"order_date\",\n      \"delay\": \"60s\"\n    }\n  }\n}"
              PutTransformRequestExample3:
                summary: A transform with destination aliases
                description: 'Run `PUT _transform/ecommerce_transform3` to create a transform that adds the destination index to aliases. With `move_on_creation` set to `true`, the destination index becomes the only index in that alias.

                  '
                value: "{\n  \"source\": {\n    \"index\": \"kibana_sample_data_ecommerce\"\n  },\n  \"latest\": {\n    \"unique_key\": [\n      \"customer_id\"\n    ],\n    \"sort\": \"order_date\"\n  },\n  \"description\": \"Latest order for each customer\",\n  \"dest\": {\n    \"index\": \"kibana_sample_data_ecommerce_transform3\",\n    \"aliases\": [\n      {\n        \"alias\": \"kibana_sample_data_ecommerce_transform\"\n      },\n      {\n        \"alias\": \"kibana_sample_data_ecommerce_transform_latest\",\n        \"move_on_creation\": true\n      }\n    ]\n  },\n  \"frequency\": \"5m\",\n  \"sync\": {\n    \"time\": {\n      \"field\": \"order_date\",\n      \"delay\": \"60s\"\n    }\n  }\n}"
        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: "{\n  \"acknowledged\": true\n}"
      x-state: Generally available; Added in 7.2.0
      x-metaTags:
      - content: Elasticsearch
        name: product_name
    delete:
      tags:
      - transform
      summary: Delete a transform
      description: '


        ## 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:
          default: false
          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:
          default: false
          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:
          default: 30s
          allOf:
          - $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: "{\n  \"acknowledged\": true\n}"
      x-state: Generally available; Added in 7.5.0
      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:
    get:
      tags:
      - transform
      summary: Get transforms
      description: 'Get configuration information for transforms.


        ## Required authorization


        * Cluster privileges: `monitor_transform`

        '
      operationId: transform-get-transform-1
      parameters:
      - $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-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:
          default: true
          type: boolean
        style: form
      - in: query
        name: basic
        description: 'If true, the response includes `id`, `state`, `node`, `stats`, `health`,

          and basic `checkpointing` information (the last and next checkpoint

          numbers, and the next checkpoint''s `position` and `progress`). Skips

          statistics that require heavy computations to calculate:

          `operations_behind`, `changes_last_detected_at`, `last_search_time`, and

          the checkpoint timestamps.'
        deprecated: false
        schema:
          default: false
          type: boolean
        x-state: Generally available; Added in 8.13.0
        style: form
      - in: query
        name: from
        description: Skips the specified number of transforms.
        deprecated: false
        schema:
          default: 0.0
          type: number
        style: form
      - in: query
        name: size
        description: Specifies the maximum number of transforms to obtain.
        deprecated: false
        schema:
          default: 100.0
          type: number
        style: form
      - in: query
        name: timeout
        description: Controls the time to wait for the stats
        deprecated: false
        schema:
          default: 30s
          allOf:
          - $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: "{\n  \"count\": 1,\n  \"transforms\": [\n    {\n      \"id\": \"ecommerce-customer-transform\",\n      \"state\": \"started\",\n      \"node\": {\n        \"id\": \"cpTIGMsVQ8Gqwqlxxxxxxx\",\n        \"name\": \"my.home\",\n        \"ephemeral_id\": \"5-L21nFsQxxxxxxxxxx-xx\",\n        \"transport_address\": \"127.0.0.1:9300\",\n        \"attributes\": {}\n      },\n      \"stats\": {\n        \"pages_processed\": 78,\n        \"documents_processed\": 6027,\n        \"documents_indexed\": 68,\n        \"documents_deleted\": 22,\n        \"delete_time_in_ms\": 214,\n        \"trigger_count\": 168,\n        \"index_time_in_ms\": 412,\n        \"index_total\": 20,\n        \"index_failures\": 0,\n        \"search_time_in_ms\": 353,\n        \"search_total\": 78,\n        \"search_failures\": 0,\n        \"processing_time_in_ms\": 8,\n        \"processing_total\": 78,\n        \"exponential_avg_checkpoint_duration_ms\": 97.30637923893185,\n        \"exponential_avg_documents_indexed\": 2.2064915040974062,\n        \"exponential_avg_documents_processed\": 179.89419945785045\n      },\n      \"checkpointing\": {\n        \"last\": {\n          \"checkpoint\": 20,\n          \"timestamp_millis\": 1585344558220,\n          \"time_upper_bound_millis\": 1585344498220\n        },\n        \"changes_last_detected_at\": 1585344558219\n      },\n      \"health\": {\n        \"status\": \"green\"\n      }\n    }\n  ]\n}"
      x-state: Generally available; Added in 7.5.0
      x-metaTags:
      - content: Elasticsearch
        name: product_name
  /_transform/{transform_id}/_preview:
    get:
      tags:
      - transform
      summary: Preview a transform
      description: 'Generates a preview of the results that you will get when you create a transform with the same configuration.


        It returns a maximum of 100 results. The calculations are based on all the current data in the source index. It also

        generates a list of mappings and settings for the destination index. These values are determined based on the field

        types of the source index and the transform aggregations.


        ## Required authorization


        * Index privileges: `read`,`view_index_metadata`

        * Cluster privileges: `manage_transform`

        '
      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-metaTags:
      - content: Elasticsearch
        name: product_name
    post:
      tags:
      - transform
      summary: Preview a transform
      description: 'Generates a preview of the results that you will get when you create a transform with the same configuration.


        It returns a maximum of 100 results. The calculations are based on all the current data in the source index. It also

        generates a list of mappings and settings for the destination index. These values are determined based on the field

        types of the source index and the transform aggregations.


        ## Required authorization


        * Index privileges: `read`,`view_index_metadata`

        * Cluster privileges: `manage_transform`

        '
      operationId: transform-preview-transform-1
      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-metaTags:
      - content: Elasticsearch
        name: product_name
  /_transform/_preview:
    get:
      tags:
      - transform
      summary: Preview a transform
      description: 'Generates a preview of the results that you will get when you create a transform with the same configuration.


        It returns a maximum of 100 results. The calculations are based on all the current data in the source index. It also

        generates a list of mappings and settings for the destination index. These values are determined based on the field

        types of the source index and the transform aggregations.


        ## Required authorization


        * Index privileges: `read`,`view_index_metadata`

        * Cluster privileges: `manage_transform`

        '
      operationId: transform-preview-transform-2
      parameters:
      - $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-metaTags:
      - content: Elasticsearch
        name: product_name
    post:
      tags:
      - transform
      summary: Preview a transform
      description: 'Generates a preview of the results that you will get when you create a transform with the same configuration.


        It returns a maximum of 100 results. The calculations are based on all the current data in the source index. It also

        generates a list of mappings and settings for the destination index. These values are determined based on the field

        types of the source index and the transform aggregations.


        ## Required authorization


        * Index privileges: `read`,`view_index_metadata`

        * Cluster privileges: `manage_transform`

        '
      operationId: transform-preview-transform-3
      parameters:
      - $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-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:
          default: false
          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:
          default: 30s
          allOf:
          - $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: "{\n  \"acknowledged\": true\n}"
      x-state: Generally available; Added in 8.1.0
      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:
          default: 30s
          allOf:
          - $ref: '#/components/schemas/_types.Duration'
        style: form
      - in: query
        name: defer
        description: 'When true, defers the scheduling by the transform''s configured sync delay

          instead of triggering immediately. The transform will process new data after

          the delay elapses rather than right away.'
        deprecated: false
        schema:
          default: false
          type: boolean
        x-state: Generally available; Added in 9.4.0
        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: "{\n  \"acknowledged\": true\n}"
      x-state: Generally available; Added in 8.7.0
      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:
          default: false
          type: boolean
        style: form
      - in: query
        name: timeout
        description: The time to wait for the request to be completed.
        deprecated: false
        schema:
          default: 30s
          allOf:
          - $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-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: s

# --- truncated at 32 KB (615 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/elk-stack/refs/heads/main/openapi/elk-stack-transform-api-openapi.yml