code: def create_impression_event(self, experiment, variation_id, user_id, attributes):
      
  
      params = self._get_common_params(user_id, attributes)
      impression_params = self._get_required_params_for_impression(experiment, variation_id)
  
      params[self.EventParams.USERS][0][self.EventParams.SNAPSHOTS].append(impression_params)
  
      return Event(self.EVENTS_URL,
                   params,
                   http_verb=self.HTTP_VERB,
                   headers=self.HTTP_HEADERS)
docs: Create impression Event to be sent to the logging endpoint.
  
      Args:
        experiment: Experiment for which impression needs to be recorded.
        variation_id: ID for variation which would be presented to user.
        user_id: ID for user.
        attributes: Dict representing user attributes and values which need to be recorded.
  
      Returns:
        Event object encapsulating the impression event.