`<http://www.elastic.co/guide/en/elasticsearch/reference/current/watcher-api-put-watch.html>`_

        :arg id: Watch ID
        :arg body: The watch
        :arg active: Specify whether the watch is in/active by default
        :arg if_primary_term: only update the watch if the last operation that
            has changed the watch has the specified primary term
        :arg if_seq_no: only update the watch if the last operation that has
            changed the watch has the specified sequence number
        :arg version: Explicit version number for concurrency control

def put_watch(self, id, body=None, params=None):
        """
        `<http://www.elastic.co/guide/en/elasticsearch/reference/current/watcher-api-put-watch.html>`_

        :arg id: Watch ID
        :arg body: The watch
        :arg active: Specify whether the watch is in/active by default
        :arg if_primary_term: only update the watch if the last operation that
            has changed the watch has the specified primary term
        :arg if_seq_no: only update the watch if the last operation that has
            changed the watch has the specified sequence number
        :arg version: Explicit version number for concurrency control
        """
        if id in SKIP_IN_PATH:
            raise ValueError("Empty value passed for a required argument 'id'.")
        return self.transport.perform_request(
            "PUT", _make_path("_watcher", "watch", id), params=params, body=body
        )