code: def save(self):
          
  
          if self.object_id:
              # update event
              if not self._track_changes:
                  return True  # there's nothing to update
              url = self.build_url(
                  self._endpoints.get('event').format(id=self.object_id))
              method = self.con.patch
              data = self.to_api_data(restrict_keys=self._track_changes)
          else:
              # new event
              if self.calendar_id:
                  url = self.build_url(
                      self._endpoints.get('event_calendar').format(
                          id=self.calendar_id))
              else:
                  url = self.build_url(self._endpoints.get('event_default'))
              method = self.con.post
              data = self.to_api_data()
  
          response = method(url, data=data)
          if not response:
              return False
  
          self._track_changes.clear()  # clear the tracked changes
  
          if not self.object_id:
              # new event
              event = response.json()
  
              self.object_id = event.get(self._cc('id'), None)
  
              self.__created = event.get(self._cc('createdDateTime'), None)
              self.__modified = event.get(self._cc('lastModifiedDateTime'), None)
  
              self.__created = parse(self.__created).astimezone(
                  self.protocol.timezone) if self.__created else None
              self.__modified = parse(self.__modified).astimezone(
                  self.protocol.timezone) if self.__modified else None
          else:
              self.__modified = self.protocol.timezone.localize(dt.datetime.now())
  
          return True
docs: Create a new event or update an existing one by checking what
          values have changed and update them on the server
  
          :return: Success / Failure
          :rtype: bool