code: def _call_api(self, uri_pattern, method, body=None, headers=None, parameters=None, **kwargs):
          
  
          kwargs[API_ROOT_URL_ARG_NAME] = self.api_root_url
          url = uri_pattern.format(**kwargs)
          logger.info("Executing API request [%s %s]", method, url)
  
          log_print_request(logger, method, url, parameters, headers, body)
  
          try:
              response = requests.request(method=method, url=url, data=body, headers=headers, params=parameters,
                                          verify=False)
          except Exception, e:
              logger.error("Request {} to {} crashed: {}".format(method, url, str(e)))
              raise e
  
          log_print_response(logger, response)
  
          return response
docs: Launch HTTP request to the API with given arguments
          :param uri_pattern: string pattern of the full API url with keyword arguments (format string syntax)
          :param method: HTTP method to execute (string) [get | post | put | delete | update]
          :param body: Raw Body content (string) (Plain/XML/JSON to be sent)
          :param headers: HTTP header request (dict)
          :param parameters: Query parameters for the URL. i.e. {'key1': 'value1', 'key2': 'value2'}
          :param **kwargs: URL parameters (without API_ROOT_URL_ARG_NAME) to fill the patters
          :returns: REST API response ('Requests' response)