diff --git a/src/logic/database/Schemas.py b/src/logic/database/Schemas.py
index 78bc9c8bfcd2eb5efbd4c876176378e4bd5eb48c..5137f72b7454d80d4c1038891ce0cd47eec326b0 100644
--- a/src/logic/database/Schemas.py
+++ b/src/logic/database/Schemas.py
@@ -38,6 +38,12 @@ class DatabaseInfo(BaseModel):
         }
 
 
+class DatabaseCleanupInfo(BaseModel):
+    before: DatabaseInfo
+    after: DatabaseInfo
+    difference: DatabaseInfo
+
+
 class MinMax(BaseModel):
     min: float = None
     max: float = None
diff --git a/src/logic/routers/GeneralRouter.py b/src/logic/routers/GeneralRouter.py
index 81938bceaaa7b928dd777fc0456d781b08a164d0..43b7478c0f462476b54464509ebb5e774accbbb1 100644
--- a/src/logic/routers/GeneralRouter.py
+++ b/src/logic/routers/GeneralRouter.py
@@ -23,3 +23,21 @@ async def version():
             response_model=Schemas.DatabaseInfo)
 async def databaseInfo(db: Session = Depends(get_database)):
     return DatabaseInfoProvider.get_database_info(db)
+
+
+@router.get('/databaseCleanup',
+            summary='Cleans up the database by enforcing the configured retention policies',
+            response_model=Schemas.DatabaseCleanupInfo)
+async def databaseCleanup(db: Session = Depends(get_database)):
+    infoBefore = DatabaseInfoProvider.get_database_info(db)
+
+    # TODO
+
+    infoAfter = DatabaseInfoProvider.get_database_info(db)
+
+    deletedMeasurements = infoBefore.number_of_measurements - infoAfter.number_of_measurements
+    sizeFreed = infoBefore.size_on_disk_in_mb - infoAfter.size_on_disk_in_mb
+    infoDifference = Schemas.DatabaseInfo(number_of_measurements=deletedMeasurements, size_on_disk_in_mb=sizeFreed)
+
+    return Schemas.DatabaseCleanupInfo(before=infoBefore,  after=infoAfter,  difference=infoDifference)
+