code: def edit(self, name=None, description=None, version=None, **kwargs):
          
          update_dict = {'id': self.id}
          if name:
              if not isinstance(name, str):
                  raise IllegalArgumentError("name should be provided as a string")
              update_dict.update({'name': name})
          if description:
              if not isinstance(description, str):
                  raise IllegalArgumentError("description should be provided as a string")
              update_dict.update({'description': description})
          if version:
              if not isinstance(version, str):
                  raise IllegalArgumentError("description should be provided as a string")
              update_dict.update({'script_version': version})
  
          if kwargs:  # pragma: no cover
              update_dict.update(**kwargs)
          response = self._client._request('PUT',
                                           self._client._build_url('service', service_id=self.id), json=update_dict)
  
          if response.status_code != requests.codes.ok:  # pragma: no cover
              raise APIError("Could not update Service ({})".format(response))
  
          if name:
              self.name = name
          if version:
              self.version = version
docs: Edit Service details.
  
          .. versionadded:: 1.13
  
          :param name: (optional) name of the service to change.
          :type name: basestring or None
          :param description: (optional) description of the service.
          :type description: basestring or None
          :param version: (optional) version number of the service.
          :type version: basestring or None
          :param kwargs: (optional) additional keyword arguments to change.
          :type kwargs: dict or None
          :raises IllegalArgumentError: when you provide an illegal argument.
          :raises APIError: if the service could not be updated.