docs: def _make_api_call(self, http_type, endpoint, extra_headers = None, data=None):
          # type: (str, str, dict, Any) -> None
          """
          Internal method to handle making calls to the Outlook API and logging both the request and response
          Args:
              http_type: (str) 'post' or 'delete'
              endpoint: (str) The endpoint the request will be made to
              headers: A dict of headers to send to the requests module in addition to Authorization and Content-Type
              data: The data to provide to the requests module
  
          Raises:
              MiscError: For errors that aren't a 401
              AuthError: For 401 errors
  
          """
  
          headers = {"Authorization": "Bearer " + self.account.access_token, "Content-Type": "application/json"}
  
          if extra_headers is not None:
              headers.update(extra_headers)
  
          log.debug('Making Outlook API request for message (ID: {}) with Headers: {} Data: {}'
                    .format(self.message_id, headers, data))
  
          if http_type == 'post':
              r = requests.post(endpoint, headers=headers, data=data)
          elif http_type == 'delete':
              r = requests.delete(endpoint, headers=headers)
          elif http_type == 'patch':
              r = requests.patch(endpoint, headers=headers, data=data)
          else:
              raise NotImplemented
  
          check_response(r)