diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index ba6e5567ed0914500033837eba6a304fcf05ad96..75e69afe5c732ba25ff633fd52f93898bc0f0688 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -9,6 +9,11 @@ and this project adheres to `Semantic Versioning`_.
 Unreleased
 ----------
 
+Added
+~~~~~
+
+* GraphQL schema for Rooms
+
 Fixed
 ~~~~~
 
diff --git a/aleksis/core/schema/__init__.py b/aleksis/core/schema/__init__.py
index deab0e28b5d93e854a020aad687a618817196536..e752d6e456dce1509360990cb8e685b7a12d48c9 100644
--- a/aleksis/core/schema/__init__.py
+++ b/aleksis/core/schema/__init__.py
@@ -9,7 +9,15 @@ from haystack.inputs import AutoQuery
 from haystack.query import SearchQuerySet
 from haystack.utils.loading import UnifiedIndex
 
-from ..models import CustomMenu, DynamicRoute, Notification, PDFFile, Person, TaskUserAssignment
+from ..models import (
+    CustomMenu,
+    DynamicRoute,
+    Notification,
+    PDFFile,
+    Person,
+    Room,
+    TaskUserAssignment,
+)
 from ..util.apps import AppConfig
 from ..util.core_helpers import get_allowed_object_ids, get_app_module, get_app_packages, has_person
 from .celery_progress import CeleryProgressFetchedMutation, CeleryProgressType
@@ -21,6 +29,7 @@ from .message import MessageType
 from .notification import MarkNotificationReadMutation, NotificationType
 from .pdf import PDFFileType
 from .person import PersonMutation, PersonType
+from .room import RoomType
 from .school_term import SchoolTermType  # noqa
 from .search import SearchResultType
 from .system_properties import SystemPropertiesType
@@ -59,6 +68,8 @@ class Query(graphene.ObjectType):
 
     two_factor = graphene.Field(TwoFactorType)
 
+    rooms = graphene.List(RoomType)
+
     def resolve_ping(root, info, payload) -> str:
         return payload
 
@@ -157,6 +168,12 @@ class Query(graphene.ObjectType):
             return None
         return info.context.user
 
+    @staticmethod
+    def resolve_rooms(root, info, **kwargs):
+        if info.context.user.is_anonymous:
+            return []
+        return Room.objects.all()
+
 
 class Mutation(graphene.ObjectType):
     update_person = PersonMutation.Field()
diff --git a/aleksis/core/schema/room.py b/aleksis/core/schema/room.py
new file mode 100644
index 0000000000000000000000000000000000000000..d4f76700793d2f7eededaac1b0361ebeff1a6a5a
--- /dev/null
+++ b/aleksis/core/schema/room.py
@@ -0,0 +1,9 @@
+from graphene_django import DjangoObjectType
+
+from ..models import Room
+
+
+class RoomType(DjangoObjectType):
+    class Meta:
+        model = Room
+        fields = ("id", "name", "short_name")