diff --git a/src/stats/migrations/0002_event_description.py b/src/stats/migrations/0002_event_description.py
new file mode 100644
index 0000000000000000000000000000000000000000..d7d056636e1bc6c5ad18457d09a92bc56ba30927
--- /dev/null
+++ b/src/stats/migrations/0002_event_description.py
@@ -0,0 +1,18 @@
+# Generated by Django 2.0.1 on 2019-01-19 14:34
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('stats', '0001_initial'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='event',
+            name='description',
+            field=models.TextField(blank=True, default=''),
+        ),
+    ]
diff --git a/src/stats/models.py b/src/stats/models.py
index cf11e885fcad7924f8c9e396e7ba037977c86382..c4fcbecaa8cbf102f1766c95d1c0bb1e8c735cc1 100644
--- a/src/stats/models.py
+++ b/src/stats/models.py
@@ -8,6 +8,7 @@ from django.core.exceptions import ValidationError
 class Event(models.Model):
     name = models.CharField(max_length=255)
     date = models.DateTimeField(null=False)
+    description = models.TextField(blank=True, default='')
     visitors = models.ManyToManyField(
         Profile,
         related_name='events',
diff --git a/src/stats/serializers.py b/src/stats/serializers.py
index d18167b37f7fe847681259c569e39d6dbde3bb8c..42db8a865bd95c17c1a0df79c377b4ffa6ae2183 100644
--- a/src/stats/serializers.py
+++ b/src/stats/serializers.py
@@ -3,7 +3,7 @@ from common.serializers import CurrentUserProfileDefault
 from . import models
 
 
-class EventSerializer(serializers.ModelSerializer):
+class StaffEventSerializer(serializers.ModelSerializer):
     created_by_name = serializers.SerializerMethodField()
     visitor_number = serializers.SerializerMethodField()
 
@@ -19,6 +19,13 @@ class EventSerializer(serializers.ModelSerializer):
         return obj.visitors.all().count()
 
 
+class StudentEventSerializer(serializers.ModelSerializer):
+    class Meta:
+        model = models.Event
+        fields = ('name', 'date', 'description', )
+        read_only_fields = ('name', 'date', 'description', )
+
+
 class NoteSerializer(serializers.ModelSerializer):
     created_by = serializers.HiddenField(default=CurrentUserProfileDefault())
     created_by_name = serializers.SerializerMethodField()
diff --git a/src/stats/urls.py b/src/stats/urls.py
index f2a911041c8e7fad05bdbfdae40749ac4d044e92..0e669f8037c98287185212ecbe0c2b43c03bd267 100644
--- a/src/stats/urls.py
+++ b/src/stats/urls.py
@@ -2,7 +2,8 @@ from rest_framework import routers
 from . import views
 
 router = routers.DefaultRouter()
-router.register(r'events', views.EventViewSet, base_name='events')
+router.register(r'staff_events', views.StaffEventViewSet, base_name='staff_events')
+router.register(r'student_events', views.StudentEventViewSet, base_name='student_events')
 router.register(r'notes', views.NoteViewSet, base_name='notes')
 
 urlpatterns = router.urls
diff --git a/src/stats/views.py b/src/stats/views.py
index 13d1cc0493df246e02b8f2bbd0b6e1f8df0f958e..b503c5ffc5efebb2bc5dc06796443b53c954cf72 100644
--- a/src/stats/views.py
+++ b/src/stats/views.py
@@ -1,13 +1,19 @@
 from rest_framework import viewsets
 from . import models
 from . import serializers
-from common.permissions import IsStaffUser, IsStaffOrReadOnlyForAuthenticated
+from common.permissions import IsStaffUser, IsStaffOrStudent
 
 
-class EventViewSet(viewsets.ModelViewSet):
-    serializer_class = serializers.EventSerializer
+class StaffEventViewSet(viewsets.ModelViewSet):
+    serializer_class = serializers.StaffEventSerializer
     queryset = models.Event.objects.all()
-    permission_classes = (IsStaffOrReadOnlyForAuthenticated, )
+    permission_classes = (IsStaffUser, )
+
+
+class StudentEventViewSet(viewsets.ModelViewSet):
+    serializer_class = serializers.StudentEventSerializer
+    queryset = models.Event.objects.all()
+    permission_classes = (IsStaffOrStudent, )
 
 
 class NoteViewSet(viewsets.ModelViewSet):