[role="xpack"]
[testenv="basic"]
[[rollup-stop-job]]
=== Stop {rollup-jobs} API
[subs="attributes"]
++++
Stop {rollup-jobs}
++++
Stops an existing, started {rollup-job}.
experimental[]
[[rollup-stop-job-request]]
==== {api-request-title}
`POST _rollup/job//_stop`
[[rollup-stop-job-prereqs]]
==== {api-prereq-title}
* You must have `manage` or `manage_rollup` cluster privileges to use this API.
For more information, see
{stack-ov}/security-privileges.html[Security privileges].
[[rollup-stop-job-desc]]
===== {api-description-title}
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.
[[rollup-stop-job-path-parms]]
==== {api-path-parms-title}
``::
(string) Required. Identifier for the {rollup-job}.
[[rollup-stop-job-query-parms]]
==== {api-query-parms-title}
`timeout`::
(TimeValue) Optional. 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. Defaults
to `30s`.
+
--
NOTE: Even if a timeout exception is thrown, 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.
--
`wait_for_completion`::
(boolean) Optional. 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. Defaults to
`false`.
[[rollup-stop-job-response-codes]]
==== {api-response-codes-title}
`404` (Missing resources)::
This code indicates that there are no resources that match the request. It
occurs if you try to stop a job that doesn't exist.
[[rollup-stop-job-examples]]
==== {api-examples-title}
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`:
[source,js]
--------------------------------------------------
POST _rollup/job/sensor/_stop?wait_for_completion=true&timeout=10s
--------------------------------------------------
// CONSOLE
// TEST[setup:sensor_started_rollup_job]
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 is thrown.