diff --git a/SAS/TMSS/backend/src/tmss/tmssapp/serializers/specification.py b/SAS/TMSS/backend/src/tmss/tmssapp/serializers/specification.py
index cec4fd45dff78a464c315c5d5715c4d5fa9b4c00..f24068cd0ce5bb6d6e6b6f08d435458e72d3c043 100644
--- a/SAS/TMSS/backend/src/tmss/tmssapp/serializers/specification.py
+++ b/SAS/TMSS/backend/src/tmss/tmssapp/serializers/specification.py
@@ -335,6 +335,30 @@ class SchedulingUnitBlueprintSlimSerializer(serializers.ModelSerializer):
         raise NotImplementedError("This serializer should only be used for fast querying existing scheduling units")
 
 
+class SchedulingUnitBlueprintPublicSerializer(serializers.ModelSerializer):
+    '''A read-only serializer exposing public non-sensitive properties.'''
+    project = serializers.StringRelatedField(source='draft.scheduling_set.project.name', label='project', read_only=True)
+    on_sky_duration = FloatDurationField(read_only=True)
+    target_pointings_astropy = serializers.StringRelatedField(label='targets', read_only=True)
+
+    class Meta:
+        model = models.SchedulingUnitBlueprint
+        read_only_fields = ['id',
+                            'status',
+                            'on_sky_start_time',
+                            'on_sky_stop_time',
+                            'on_sky_duration',
+                            'target_pointings_astropy',
+                            'project']
+        fields = read_only_fields
+
+    def create(self, validated_data):
+        raise NotImplementedError("This is a read-only serializer")
+
+    def update(self, instance, validated_data):
+        raise NotImplementedError("This is a read-only serializer")
+
+
 class TaskBlueprintSlimSerializer(serializers.ModelSerializer):
     '''A small 'slim' serializer for the most relevant properties.'''
     duration = FloatDurationField(read_only=True)