original_docstring: 
          Utility function to perform an API call with retries
          :param endpoint_info: Tuple of method and endpoint
          :type endpoint_info: tuple[string, string]
          :param json: Parameters for this API call.
          :type json: dict
          :return: If the api call returns a OK status code,
              this function returns the response in JSON. Otherwise,
              we throw an AirflowException.
          :rtype: dict
          
docstring: Utility function to perform an API call with retries
docstring_tokens: Utility function to perform an API call with retries
code: def _do_api_call(self, endpoint_info, json=None, force=''):
          """
          Utility function to perform an API call with retries
          :param endpoint_info: Tuple of method and endpoint
          :type endpoint_info: tuple[string, string]
          :param json: Parameters for this API call.
          :type json: dict
          :return: If the api call returns a OK status code,
              this function returns the response in JSON. Otherwise,
              we throw an AirflowException.
          :rtype: dict
          """
          method, connector_id = endpoint_info
  
          if 'token' in self.fivetran_conn.extra_dejson:
              self.log.info('Using token auth. ')
              auth = _TokenAuth(self.fivetran_conn.extra_dejson['token'])
              if 'host' in self.fivetran_conn.extra_dejson:
                  host = self._parse_host(self.fivetran_conn.extra_dejson['host'])
              else:
                  host = self.fivetran_conn.host
          else:
              self.log.info('Using basic auth. ')
              auth = (self.fivetran_conn.login, self.fivetran_conn.password)
              host = self.fivetran_conn.host
  
          url = host + connector_id + force
  
          if method == 'GET':
              request_func = requests.get
          elif method == 'POST':
              request_func = requests.post
          elif method == 'PATCH':
              request_func = requests.patch
          else:
              raise AirflowException('Unexpected HTTP Method: ' + method)
  
          attempt_num = 1
          while True:
              try:
                  response = request_func(
                      url,
                      data=json if method == 'PATCH' else None,
                      params=json if method == 'GET' else None,
                      auth=auth,
                      headers={"Content-Type": "application/json;version=2"} if method == 'PATCH' else None,
                  )
                  response.raise_for_status()
                  return response.json()
              except requests_exceptions.RequestException as e:
                  if not _retryable_error(e):
                      # In this case, the user probably made a mistake.
                      # Don't retry.
                      raise AirflowException(
                          f'Response: {e.response.content}, Status Code: {e.response.status_code}'
                      )
  
                  self._log_request_error(attempt_num, e)
  
              if attempt_num == self.retry_limit:
                  raise AirflowException(
                      ('API requests to Fivetran failed {} times. ' + 'Giving up.').format(self.retry_limit)
                  )
  
              attempt_num += 1
              sleep(self.retry_delay)
code_tokens: def _do_api_call ( self , endpoint_info , json = None , force = '' ) : method , connector_id = endpoint_info if 'token' in self . fivetran_conn . extra_dejson : self . log . info ( 'Using token auth. ' ) auth = _TokenAuth ( self . fivetran_conn . extra_dejson [ 'token' ] ) if 'host' in self . fivetran_conn . extra_dejson : host = self . _parse_host ( self . fivetran_conn . extra_dejson [ 'host' ] ) else : host = self . fivetran_conn . host else : self . log . info ( 'Using basic auth. ' ) auth = ( self . fivetran_conn . login , self . fivetran_conn . password ) host = self . fivetran_conn . host url = host + connector_id + force if method == 'GET' : request_func = requests . get elif method == 'POST' : request_func = requests . post elif method == 'PATCH' : request_func = requests . patch else : raise AirflowException ( 'Unexpected HTTP Method: ' + method ) attempt_num = 1 while True : try : response = request_func ( url , data = json if method == 'PATCH' else None , params = json if method == 'GET' else None , auth = auth , headers = { "Content-Type" : "application/json;version=2" } if method == 'PATCH' else None , ) response . raise_for_status ( ) return response . json ( ) except requests_exceptions . RequestException as e : if not _retryable_error ( e ) : raise AirflowException ( f'Response: {e.response.content}, Status Code: {e.response.status_code}' ) self . _log_request_error ( attempt_num , e ) if attempt_num == self . retry_limit : raise AirflowException ( ( 'API requests to Fivetran failed {} times. ' + 'Giving up.' ) . format ( self . retry_limit ) ) attempt_num += 1 sleep ( self . retry_delay )
short_docstring: Utility function to perform an API call with retries
short_docstring_tokens: Utility function to perform an API call with retries
comment: """
          Utility function to perform an API call with retries
          :param endpoint_info: Tuple of method and endpoint
          :type endpoint_info: tuple[string, string]
          :param json: Parameters for this API call.
          :type json: dict
          :return: If the api call returns a OK status code,
              this function returns the response in JSON. Otherwise,
              we throw an AirflowException.
          :rtype: dict
          """$SEP$# In this case, the user probably made a mistake.$SEP$# Don't retry.