diff --git a/aleksis/apps/chronos/managers.py b/aleksis/apps/chronos/managers.py
index ba620386bfcb59d31049ff4b5c7a2d89f7f01fd2..d26c4cbbc89fd4a1abd2b361e1380702f3bd30f5 100644
--- a/aleksis/apps/chronos/managers.py
+++ b/aleksis/apps/chronos/managers.py
@@ -12,6 +12,7 @@ from calendarweek import CalendarWeek
 from polymorphic.managers import PolymorphicQuerySet
 
 from aleksis.apps.chronos.util.date import week_weekday_from_date, week_weekday_to_date
+from aleksis.apps.cursus.models import Course
 from aleksis.core.managers import (
     AlekSISBaseManagerWithoutMigrations,
     DateRangeQuerySetMixin,
@@ -888,6 +889,12 @@ class LessonEventQuerySet(PolymorphicQuerySet):
         )
         return self.filter(Q(rooms=room) | Q(pk__in=amended)).distinct()
 
+    def for_course(self, course: Union[int, Course]):
+        amended = self.filter(Q(amended_by__isnull=False) & (Q(course=course))).values_list(
+            "amended_by__pk", flat=True
+        )
+        return self.filter(Q(course=course) | Q(pk__in=amended)).distinct()
+
     def for_person(self, person: Union[int, Person]):
         amended = self.filter(
             Q(amended_by__isnull=False) & (Q(teachers=person) | Q(groups__members=person))
@@ -908,3 +915,9 @@ class LessonEventQuerySet(PolymorphicQuerySet):
             & Q(amends__isnull=True)
             & Q(amended_by__isnull=True)
         )
+    
+    def not_amended(self):
+        return self.filter(amended_by__isnull=True)
+
+    def not_amending(self):
+        return self.filter(amends__isnull=True)
diff --git a/aleksis/apps/chronos/models.py b/aleksis/apps/chronos/models.py
index c501552c2ce8a450500af60c85ba8d5ece857aa1..720da54ca3da9eca357d31b4e1b131a235118461 100644
--- a/aleksis/apps/chronos/models.py
+++ b/aleksis/apps/chronos/models.py
@@ -1544,10 +1544,18 @@ class LessonEvent(CalendarEvent):
             obj_id = int(params.get("id", 0))
             type_ = params.get("type", None)
             prefetch_absences = params.get("prefetch_absences", False)
+            not_amended = params.get("not_amended", False)
+            not_amending = params.get("not_amending", False)
 
             if prefetch_absences:
                 objs = objs.prefetch_related("teachers__kolego_absences")
 
+            if not_amended:
+                objs = objs.not_amended()
+
+            if not_amending:
+                objs = objs.not_amending()
+
             if type_ and obj_id:
                 if type_ == "TEACHER":
                     return objs.for_teacher(obj_id)
@@ -1555,6 +1563,8 @@ class LessonEvent(CalendarEvent):
                     return objs.for_group(obj_id)
                 elif type_ == "ROOM":
                     return objs.for_room(obj_id)
+                elif type_ == "COURSE":
+                    return objs.for_course(obj_id)
         return objs.for_person(request.user.person)
 
     @classmethod
diff --git a/aleksis/apps/chronos/schema/__init__.py b/aleksis/apps/chronos/schema/__init__.py
index c2a3e6fd4d33b2ee7298edeb7a6fa9e948f84016..9fb03afece38926a9c1653bb6d094535803f4fb8 100644
--- a/aleksis/apps/chronos/schema/__init__.py
+++ b/aleksis/apps/chronos/schema/__init__.py
@@ -173,6 +173,17 @@ class TimetableObjectType(graphene.ObjectType):
         return f"{root.type.value}-{root.id}"
 
 
+class LessonEventType(DjangoObjectType):
+    class Meta:
+        model = LessonEvent
+        fields = (
+            "id",
+        )
+        filter_fields = {
+            "id": ["exact", "lte", "gte"],
+        }
+
+
 class Query(graphene.ObjectType):
     timetable_teachers = graphene.List(TimetablePersonType)
     timetable_groups = graphene.List(TimetableGroupType)
diff --git a/aleksis/apps/chronos/templates/chronos/lesson_event_description.txt b/aleksis/apps/chronos/templates/chronos/lesson_event_description.txt
index 573c92354535f0f4a5ed029e9efab63bc71c3639..0b9a2edc8f0e32ccdb6bc9c4181bfbbff35a26eb 100644
--- a/aleksis/apps/chronos/templates/chronos/lesson_event_description.txt
+++ b/aleksis/apps/chronos/templates/chronos/lesson_event_description.txt
@@ -3,4 +3,4 @@
 {% trans "Teachers" %}: {{ event.teacher_names_with_amends|default:"–" }}
 {% trans "Rooms" %}: {{ event.room_names_with_amends|default:"–" }}{% if event.comment %}
 
-{{ event.comment }}{% endif %}
\ No newline at end of file
+{{ event.comment }}{% endif %}
diff --git a/aleksis/apps/chronos/templates/chronos/supervision_event_description.txt b/aleksis/apps/chronos/templates/chronos/supervision_event_description.txt
index d2f311f240e5cf527033bc08de15869085dc0ee5..dee2e549c16c765884c47a28d3aa5db311be6dee 100644
--- a/aleksis/apps/chronos/templates/chronos/supervision_event_description.txt
+++ b/aleksis/apps/chronos/templates/chronos/supervision_event_description.txt
@@ -1,2 +1,2 @@
 {% load i18n %}{% trans "Teachers" %}: {{ event.teacher_names }}
-{% trans "Areas" %}: {{ event.room_names }}
\ No newline at end of file
+{% trans "Areas" %}: {{ event.room_names }}