diff --git a/ExpressAPI/src/middlewares/ParamsValidatorMiddleware.ts b/ExpressAPI/src/middlewares/ParamsValidatorMiddleware.ts
new file mode 100644
index 0000000000000000000000000000000000000000..7bf77bf88fc528ea10a1e8bfb9bdf715cf664237
--- /dev/null
+++ b/ExpressAPI/src/middlewares/ParamsValidatorMiddleware.ts
@@ -0,0 +1,40 @@
+import * as ExpressValidator from 'express-validator';
+import express               from 'express';
+import { StatusCodes }       from 'http-status-codes';
+import ApiRequest            from '../models/ApiRequest';
+
+
+class ParamsValidatorMiddleware {
+    private static _instance: ParamsValidatorMiddleware;
+
+    private constructor() { }
+
+    public static get instance(): ParamsValidatorMiddleware {
+        if ( !ParamsValidatorMiddleware._instance ) {
+            ParamsValidatorMiddleware._instance = new ParamsValidatorMiddleware();
+        }
+
+        return ParamsValidatorMiddleware._instance;
+    }
+
+    validate(validations: Array<ExpressValidator.ValidationChain> | ExpressValidator.Schema): (req: ApiRequest, res: express.Response, next: express.NextFunction) => void {
+        return async (req: ApiRequest, res: express.Response, next: express.NextFunction) => {
+
+            if ( !(validations instanceof Array) ) {
+                validations = ExpressValidator.checkSchema(validations);
+            }
+
+            await Promise.all(validations.map(validation => validation.run(req)));
+
+            const errors = ExpressValidator.validationResult(req);
+            if ( !errors.isEmpty() ) {
+                return req.session.sendResponse(res, StatusCodes.BAD_REQUEST, { errors: errors.array() });
+            }
+
+            return next();
+        };
+    }
+}
+
+
+export default ParamsValidatorMiddleware.instance;