code: def request(self, name, content={}, namespace=None):
          
          if not namespace:
              namespace = self.NAMESPACE
  
          req_name = name+'Request'
          resp_name = name+'Response'
          req = pythonzimbra.request_xml.RequestXml()
          resp = pythonzimbra.response_xml.ResponseXml()
  
          if self._session.is_logged_in():
              req.set_auth_token(self._session.authToken)
  
          req.add_request(req_name, content, namespace)
          try:
              self.com.send_request(req, resp)
          except HTTPError as e:
              if resp:
                  raise ZimbraSoapServerError(e.req, e.resp)
              else:
                  raise
  
          try:
              resp_content = resp.get_response()
              return resp_content[resp_name]
          except KeyError:
              if 'Fault' in resp_content:
                  raise ZimbraSoapServerError(req, resp)
              raise ZimbraSoapUnexpectedResponse(
                  req, resp, 'Cannot find {} in response "{}"'.format(
                      resp_name, resp.get_response()))
  
          return resp_content
docs: Do a SOAP request and returns the result.
  
          Simple wrapper arround pythonzimbra functions
          :param name: ex: 'Auth' for performing an 'AuthRequest'
          :param content: a dict formatted pythonzimbra-style for request
          :param namespace: (optional), the namespace, if different from the
                            client's
  
          :returns: a dict with response