[role="xpack"]
[testenv="basic"]
[[stop-transform]]
=== Stop {transforms} API

[subs="attributes"]
++++
<titleabbrev>Stop {transforms}</titleabbrev>
++++

Stops one or more {transforms}.

beta[]


[[stop-transform-request]]
==== {api-request-title}

`POST _data_frame/transforms/<transform_id>/_stop` +

`POST _data_frame/transforms/<transform_id1>,<transform_id2>/_stop` +

`POST _data_frame/transforms/_all/_stop`


[[stop-transform-prereq]]
==== {api-prereq-title}

* If the {es} {security-features} are enabled, you must have
`manage_data_frame_transforms` cluster privileges to use this API. The built-in
`data_frame_transforms_admin` role has these privileges. For more information,
see {stack-ov}/security-privileges.html[Security privileges] and
{stack-ov}/built-in-roles.html[Built-in roles].


[[stop-transform-desc]]
==== {api-description-title}

You can stop multiple {transforms} in a single API request by using a
comma-separated list of {transforms} or a wildcard expression.
All {transforms} can be stopped by using `_all` or `*` as the
`<transform_id>`.


[[stop-transform-path-parms]]
==== {api-path-parms-title}

`<transform_id>`::
  (Required, string) Identifier for the {transform}. This identifier
  can contain lowercase alphanumeric characters (a-z and 0-9), hyphens, and
  underscores. It must start and end with alphanumeric characters.


[[stop-transform-query-parms]]
==== {api-query-parms-title}

`allow_no_match`::
(Optional, boolean) 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. 

The default value is `true`, which returns a successful acknowledgement message
when there are no matches. When there are only partial matches, the API stops
the appropriate {transforms}. For example, if the request contains
`test-id1*,test-id2*` as the identifiers and there are no {transforms}
that match `test-id2*`, the API nonetheless stops the {transforms}
that match `test-id1*`.

If this parameter is `false`, the request returns a `404` status code when there
are no matches or only partial matches.
--

`force`::
  (Optional, boolean) Set to `true` to stop a failed {transform} or to 
  forcefully stop a {transform} that did not respond to the initial stop 
  request.

`timeout`::
  (Optional, time value) If `wait_for_completion=true`, the API blocks for (at
  maximum) the specified duration while waiting for the {transform} to stop. If
  more than `timeout` time has passed, the API throws a timeout exception. Even
  if a timeout exception is thrown, the stop request is still processing and
  eventually moves the {transform} to `STOPPED`. The timeout simply means the API
  call itself timed out while waiting for the status change. Defaults to `30s`

`wait_for_completion`::
  (Optional, boolean) 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 will be stopped asynchronously in the background. Defaults to `false`.


[[stop-transform-response-codes]]
==== {api-response-codes-title}

`404` (Missing resources)::
  If `allow_no_match` is `false`, this code indicates that there are no
  resources that match the request or only partial matches for the request. 


[[stop-transform-example]]
==== {api-examples-title}

[source,console]
--------------------------------------------------
POST _data_frame/transforms/ecommerce_transform/_stop
--------------------------------------------------
// TEST[skip:set up kibana samples]

When the {transform} stops, you receive the following results:

[source,console-result]
----
{
  "acknowledged" : true
}
----
