docs: def post(self, client_method, data, post_params=None, is_json=True):
          """Make a POST request"""
          url = self._wa.apollo_url + self.CLIENT_BASE + client_method
  
          if post_params is None:
              post_params = {}
  
          headers = {
              'Content-Type': 'application/json'
          }
  
          data.update({
              'username': self._wa.username,
              'password': self._wa.password,
          })
  
          curl_command = ['curl', url]
          for (k, v) in headers.items():
              curl_command += ['-H', quote('%s: %s' % (k, v))]
          curl_command += ['-d', quote(json.dumps(data))]
          log.info(' '.join(curl_command))
  
          resp = requests.post(url, data=json.dumps(data),
                               headers=headers, verify=self.__verify,
                               params=post_params, allow_redirects=False,
                               **self._request_args)
  
          if resp.status_code == 200 or resp.status_code == 302:
              if is_json:
                  data = resp.json()
                  return self._scrub_data(data)
              else:
                  return resp.text
  
          # @see self.body for HTTP response body
          raise Exception("Unexpected response from apollo %s: %s" %
                          (resp.status_code, resp.text))