def reserve_time_slot(self, calendar_event, participant_id=None, **kwargs):
        """
        Return single Calendar Event by id

        :calls: `POST /api/v1/calendar_events/:id/reservations \
        <https://canvas.instructure.com/doc/api/calendar_events.html#method.calendar_events_api.reserve>`_

        :param calendar_event: The object or ID of the calendar event.
        :type calendar_event: :class:`canvasapi.calendar_event.CalendarEvent` or int

        :param participant_id: The ID of the participant, if given.
        :type participant_id: str

        :rtype: :class:`canvasapi.calendar_event.CalendarEvent`
        """
        from canvasapi.calendar_event import CalendarEvent

        calendar_event_id = obj_or_id(calendar_event, "calendar_event", (CalendarEvent,))

        if participant_id:
            uri = 'calendar_events/{}/reservations/{}'.format(
                calendar_event_id, participant_id
            )
        else:
            uri = 'calendar_events/{}/reservations'.format(calendar_event_id)

        response = self.__requester.request(
            'POST',
            uri,
            _kwargs=combine_kwargs(**kwargs)
        )
        return CalendarEvent(self.__requester, response.json())