<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def update_swarm(self, version, swarm_spec=None, rotate_worker_token=False, rotate_manager_token=False):
 """ Update the Swarm's configuration Args: version (int):
 The version number of the swarm object being updated. This is required to avoid conflicting writes. swarm_spec (dict):
 Configuration settings to update. Use :py:meth:`~docker.api.swarm.SwarmApiMixin.create_swarm_spec` to generate a valid configuration. Default: ``None``. rotate_worker_token (bool):
 Rotate the worker join token. Default: ``False``. rotate_manager_token (bool):
 Rotate the manager join token. Default: ``False``. Returns: ``True`` if the request went through. Raises: :py:class:`docker.errors.APIError` If the server returns an error. """


        url = self._url('/swarm/update')
        response = self._post_json(url, data=swarm_spec, params={
            'rotateWorkerToken': rotate_worker_token,
            'rotateManagerToken': rotate_manager_token,
            'version': version
        })
        self._raise_for_status(response)
        return True