diff --git a/SAS/TMSS/backend/src/tmss/tmssapp/viewsets/metadata.py b/SAS/TMSS/backend/src/tmss/tmssapp/viewsets/metadata.py
index dce59a925c4de4faa4890d15ff3eb8e47f3a380d..7e5dc83937520443417096898b2533df4dfbcb33 100644
--- a/SAS/TMSS/backend/src/tmss/tmssapp/viewsets/metadata.py
+++ b/SAS/TMSS/backend/src/tmss/tmssapp/viewsets/metadata.py
@@ -1,3 +1,5 @@
+from collections import OrderedDict
+from django.utils.encoding import force_str
 from rest_framework.metadata import SimpleMetadata
 
 import logging
@@ -10,6 +12,52 @@ class LOFARDefaultMetadata(SimpleMetadata):
     """
     def determine_metadata(self, request, view):
         metadata = super(LOFARDefaultMetadata, self).determine_metadata(request, view)
-        # TODO: Add filtering and ordering information.
+
+        if hasattr(view, 'filter_backends'):
+            # TODO: Add filter_backends.
+            pass
+
+        if hasattr(view, 'filter_class'):
+            # Add filters
+            filters = OrderedDict()
+            for filter_name, filter_type in view.filter_class.base_filters.items():
+                filter_parts = filter_name.split('__')
+                filter_name = filter_parts[0]
+                attrs = OrderedDict()
+
+                # Type
+                attrs['type'] = filter_type.__class__.__name__
+
+                # Lookup fields
+                if len(filter_parts) > 1:
+                    # Has a lookup type (__gt, __lt, etc.)
+                    lookup_type = filter_parts[1]
+                    if filters.get(filter_name) is not None:
+                        # Filter name already in, just append the value
+                        attrs['lookup_types'] = filters[filter_name]['lookup_types']
+                        attrs['lookup_types'].append(lookup_type)
+                    else:
+                        attrs['lookup_types'] = [lookup_type]
+                else:
+                    attrs['lookup_types'] = ['exact']
+
+                # Do choices
+                choices = filter_type.extra.get('choices', False)
+                if choices:
+                    attrs['choices'] = [
+                        {
+                            'value': choice_value,
+                            'display_name': force_str(choice_name, strings_only=True)
+                        }
+                        for choice_value, choice_name in choices
+                    ]
+                filters[filter_name] = attrs
+
+            # Add filters info
+            metadata['filters'] = filters
+
+        # Add ordering info
+        if hasattr(view, 'ordering'):
+            metadata['ordering'] = view.ordering
 
         return metadata