code: def _http_response(self, url, method, data=None, content_type=None,
                         schema=None, **kwargs):
          
  
          if schema is None:
              schema = self.schema_2
  
          header = {
              'content-type': content_type or 'application/json',
              'Accept': schema,
          }
  
          # Token specific part. We add the token in the header if necessary
          auth = self.auth
          token_required = auth.token_required
          token = auth.token
          desired_scope = auth.desired_scope
          scope = auth.scope
  
          if token_required:
              if not token or desired_scope != scope:
                  logger.debug("Getting new token for scope: %s", desired_scope)
                  auth.get_new_token()
  
              header['Authorization'] = 'Bearer %s' % self.auth.token
  
          if data and not content_type:
              data = json.dumps(data)
  
          path = url.format(**kwargs)
          logger.debug("%s %s", method.__name__.upper(), path)
          response = method(self.host + path,
                            data=data, headers=header, **self.method_kwargs)
          logger.debug("%s %s", response.status_code, response.reason)
          response.raise_for_status()
  
          return response
docs: url -> full target url
             method -> method from requests
             data -> request body
             kwargs -> url formatting args