code: def _make_request(
          self,
          method,
          url,
          data=None,
          content_type=None,
          headers=None,
          target_object=None,
      ):
          
          headers = headers or {}
          headers.update(self._EXTRA_HEADERS)
          headers["Accept-Encoding"] = "gzip"
  
          if content_type:
              headers["Content-Type"] = content_type
  
          headers["User-Agent"] = self.USER_AGENT
  
          return self._do_request(method, url, headers, data, target_object)
docs: A low level method to send a request to the API.
  
          Typically, you shouldn't need to use this method.
  
          :type method: str
          :param method: The HTTP method to use in the request.
  
          :type url: str
          :param url: The URL to send the request to.
  
          :type data: str
          :param data: The data to send as the body of the request.
  
          :type content_type: str
          :param content_type: The proper MIME type of the data provided.
  
          :type headers: dict
          :param headers: (Optional) A dictionary of HTTP headers to send with
                          the request. If passed, will be modified directly
                          here with added headers.
  
          :type target_object: object
          :param target_object:
              (Optional) Argument to be used by library callers.  This can allow
              custom behavior, for example, to defer an HTTP request and complete
              initialization of the object at a later time.
  
          :rtype: :class:`requests.Response`
          :returns: The HTTP response.