diff --git a/ExpressAPI/package-lock.json b/ExpressAPI/package-lock.json
index 955714e441d76e13edddcaed9c0a654ea325212b..1366d30570499f2c7d25230f52d9dedd9ed7c78b 100644
--- a/ExpressAPI/package-lock.json
+++ b/ExpressAPI/package-lock.json
@@ -9,9 +9,8 @@
             "version": "3.3.0",
             "license": "AGPLv3",
             "dependencies": {
-                "@prisma/client": "^5.6.0",
-                "ajv": "^8.12.0",
-                "axios": "^1.6.2",
+                "@prisma/client": "^5.8.1",
+                "axios": "^1.6.5",
                 "compression": "^1.7.4",
                 "cors": "^2.8.5",
                 "dotenv": "^16.3.1",
@@ -32,32 +31,34 @@
                 "swagger-ui-express": "^5.0.0",
                 "tar-stream": "^3.1.6",
                 "uuid": "^9.0.1",
-                "winston": "^3.11.0"
+                "winston": "^3.11.0",
+                "zod": "^3.22.4",
+                "zod-validation-error": "^3.0.0"
             },
             "devDependencies": {
-                "@redocly/cli": "^1.5.0",
+                "@redocly/cli": "^1.6.0",
                 "@types/compression": "^1.7.5",
                 "@types/cors": "^2.8.17",
                 "@types/express": "^4.17.21",
                 "@types/jsonwebtoken": "^9.0.5",
                 "@types/morgan": "^1.9.9",
                 "@types/multer": "^1.4.11",
-                "@types/node": "^20.10.3",
+                "@types/node": "^20.11.5",
                 "@types/parse-link-header": "^2.0.3",
                 "@types/semver": "^7.5.6",
                 "@types/swagger-ui-express": "^4.1.6",
                 "@types/tar-stream": "^3.1.3",
                 "@types/uuid": "^9.0.7",
-                "@typescript-eslint/eslint-plugin": "^6.13.2",
-                "@typescript-eslint/parser": "^6.13.2",
+                "@typescript-eslint/eslint-plugin": "^6.18.1",
+                "@typescript-eslint/parser": "^6.18.1",
                 "dotenv-cli": "^7.3.0",
                 "dotenv-vault": "^1.25.0",
-                "genversion": "^3.1.1",
-                "nodemon": "^3.0.2",
-                "npm": "^10.2.4",
-                "prisma": "^5.6.0",
-                "ts-node": "^10.9.1",
-                "typescript": "^5.3.2"
+                "genversion": "^3.2.0",
+                "nodemon": "^3.0.3",
+                "npm": "^10.3.0",
+                "prisma": "^5.8.1",
+                "ts-node": "^10.9.2",
+                "typescript": "^5.3.3"
             }
         },
         "node_modules/@aashutoshrathi/word-wrap": {
@@ -181,23 +182,6 @@
                 "url": "https://opencollective.com/eslint"
             }
         },
-        "node_modules/@eslint/eslintrc/node_modules/ajv": {
-            "version": "6.12.6",
-            "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
-            "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
-            "dev": true,
-            "peer": true,
-            "dependencies": {
-                "fast-deep-equal": "^3.1.1",
-                "fast-json-stable-stringify": "^2.0.0",
-                "json-schema-traverse": "^0.4.1",
-                "uri-js": "^4.2.2"
-            },
-            "funding": {
-                "type": "github",
-                "url": "https://github.com/sponsors/epoberezkin"
-            }
-        },
         "node_modules/@eslint/eslintrc/node_modules/brace-expansion": {
             "version": "1.1.11",
             "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
@@ -209,13 +193,6 @@
                 "concat-map": "0.0.1"
             }
         },
-        "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": {
-            "version": "0.4.1",
-            "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
-            "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
-            "dev": true,
-            "peer": true
-        },
         "node_modules/@eslint/eslintrc/node_modules/minimatch": {
             "version": "3.1.2",
             "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
@@ -752,9 +729,9 @@
             }
         },
         "node_modules/@prisma/client": {
-            "version": "5.8.0",
-            "resolved": "https://registry.npmjs.org/@prisma/client/-/client-5.8.0.tgz",
-            "integrity": "sha512-QxO6C4MaA/ysTIbC+EcAH1aX/YkpymhXtO6zPdk+FvA7+59tNibIYpd+7koPdViLg2iKES4ojsxWNUGNJaEcbA==",
+            "version": "5.8.1",
+            "resolved": "https://registry.npmjs.org/@prisma/client/-/client-5.8.1.tgz",
+            "integrity": "sha512-xQtMPfbIwLlbm0VVIVQY2yqQVOxPwRQhvIp7Z3m2900g1bu/zRHKhYZJQWELqmjl6d8YwBy0K2NvMqh47v1ubw==",
             "hasInstallScript": true,
             "engines": {
                 "node": ">=16.13"
@@ -769,48 +746,48 @@
             }
         },
         "node_modules/@prisma/debug": {
-            "version": "5.8.0",
-            "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-5.8.0.tgz",
-            "integrity": "sha512-ZqPpkvbovu/kQJ1bvy57NO4dw97fpQGcbQSCtsqlwSE1UNKJP75R3BKxdznk8ZPMY+GJdMRetWNv4oAvSbWn8Q==",
+            "version": "5.8.1",
+            "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-5.8.1.tgz",
+            "integrity": "sha512-tjuw7eA0Us3T42jx9AmAgL58rzwzpFGYc3R7Y4Ip75EBYrKMBA1YihuWMcBC92ILmjlQ/u3p8VxcIE0hr+fZfg==",
             "devOptional": true
         },
         "node_modules/@prisma/engines": {
-            "version": "5.8.0",
-            "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-5.8.0.tgz",
-            "integrity": "sha512-Qhqm9WWLujNEC13AuZlUO14SQ15tNLe5puaz+tOk7UqINqJ3PtqMmuSuzomiw2diGVqZ+HYiSQzlR3+pPucVHA==",
+            "version": "5.8.1",
+            "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-5.8.1.tgz",
+            "integrity": "sha512-TJgYLRrZr56uhqcXO4GmP5be+zjCIHtLDK20Cnfg+o9d905hsN065QOL+3Z0zQAy6YD31Ol4u2kzSfRmbJv/uA==",
             "devOptional": true,
             "hasInstallScript": true,
             "dependencies": {
-                "@prisma/debug": "5.8.0",
-                "@prisma/engines-version": "5.8.0-37.0a83d8541752d7582de2ebc1ece46519ce72a848",
-                "@prisma/fetch-engine": "5.8.0",
-                "@prisma/get-platform": "5.8.0"
+                "@prisma/debug": "5.8.1",
+                "@prisma/engines-version": "5.8.1-1.78caf6feeaed953168c64e15a249c3e9a033ebe2",
+                "@prisma/fetch-engine": "5.8.1",
+                "@prisma/get-platform": "5.8.1"
             }
         },
         "node_modules/@prisma/engines-version": {
-            "version": "5.8.0-37.0a83d8541752d7582de2ebc1ece46519ce72a848",
-            "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-5.8.0-37.0a83d8541752d7582de2ebc1ece46519ce72a848.tgz",
-            "integrity": "sha512-cXcoVweYbnv8xRfkWq9oj8BECOdzHUazrSpYCa0ehp5TNz4l5Spa8jbq/VROCTzj3ZncH5D9Q2TmySYTOUeKlw==",
+            "version": "5.8.1-1.78caf6feeaed953168c64e15a249c3e9a033ebe2",
+            "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-5.8.1-1.78caf6feeaed953168c64e15a249c3e9a033ebe2.tgz",
+            "integrity": "sha512-f5C3JM3l9yhGr3cr4FMqWloFaSCpNpMi58Om22rjD2DOz3owci2mFdFXMgnAGazFPKrCbbEhcxdsRfspEYRoFQ==",
             "devOptional": true
         },
         "node_modules/@prisma/fetch-engine": {
-            "version": "5.8.0",
-            "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-5.8.0.tgz",
-            "integrity": "sha512-1CAuE+JoYsPNggMEn6qk0zos06Uc9bYZBJ0VBPHD6R7REL05614koAbOCmn52IaYz3nobb7f25hqW6AY7rLkIw==",
+            "version": "5.8.1",
+            "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-5.8.1.tgz",
+            "integrity": "sha512-+bgjjoSFa6uYEbAPlklfoVSStOEfcpheOjoBoNsNNSQdSzcwE2nM4Q0prun0+P8/0sCHo18JZ9xqa8gObvgOUw==",
             "devOptional": true,
             "dependencies": {
-                "@prisma/debug": "5.8.0",
-                "@prisma/engines-version": "5.8.0-37.0a83d8541752d7582de2ebc1ece46519ce72a848",
-                "@prisma/get-platform": "5.8.0"
+                "@prisma/debug": "5.8.1",
+                "@prisma/engines-version": "5.8.1-1.78caf6feeaed953168c64e15a249c3e9a033ebe2",
+                "@prisma/get-platform": "5.8.1"
             }
         },
         "node_modules/@prisma/get-platform": {
-            "version": "5.8.0",
-            "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-5.8.0.tgz",
-            "integrity": "sha512-Nk3rhTFZ1LYkFZJnpSvQcLPCaBWgJQfteHII6UEENOOkYlmP0k3FuswND54tzzEr4qs39wOdV9pbXKX9U2lv7A==",
+            "version": "5.8.1",
+            "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-5.8.1.tgz",
+            "integrity": "sha512-wnA+6HTFcY+tkykMokix9GiAkaauPC5W/gg0O5JB0J8tCTNWrqpnQ7AsaGRfkYUbeOIioh6woDjQrGTTRf1Zag==",
             "devOptional": true,
             "dependencies": {
-                "@prisma/debug": "5.8.0"
+                "@prisma/debug": "5.8.1"
             }
         },
         "node_modules/@redocly/ajv": {
@@ -1029,9 +1006,9 @@
             }
         },
         "node_modules/@types/node": {
-            "version": "20.11.0",
-            "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.0.tgz",
-            "integrity": "sha512-o9bjXmDNcF7GbM4CNQpmi+TutCgap/K3w1JyKgxAjqx41zp9qlIAVFi0IhCNsJcXolEqLWhbFbEeL0PvYm4pcQ==",
+            "version": "20.11.5",
+            "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.5.tgz",
+            "integrity": "sha512-g557vgQjUUfN76MZAN/dt1z3dzcUsimuysco0KeluHgrPdJXkP/XdAURgyO2W9fZWHRtRBiVKzKn8vyOAwlG+w==",
             "dev": true,
             "dependencies": {
                 "undici-types": "~5.26.4"
@@ -1119,16 +1096,16 @@
             "dev": true
         },
         "node_modules/@typescript-eslint/eslint-plugin": {
-            "version": "6.18.1",
-            "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.18.1.tgz",
-            "integrity": "sha512-nISDRYnnIpk7VCFrGcu1rnZfM1Dh9LRHnfgdkjcbi/l7g16VYRri3TjXi9Ir4lOZSw5N/gnV/3H7jIPQ8Q4daA==",
+            "version": "6.19.0",
+            "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.19.0.tgz",
+            "integrity": "sha512-DUCUkQNklCQYnrBSSikjVChdc84/vMPDQSgJTHBZ64G9bA9w0Crc0rd2diujKbTdp6w2J47qkeHQLoi0rpLCdg==",
             "dev": true,
             "dependencies": {
                 "@eslint-community/regexpp": "^4.5.1",
-                "@typescript-eslint/scope-manager": "6.18.1",
-                "@typescript-eslint/type-utils": "6.18.1",
-                "@typescript-eslint/utils": "6.18.1",
-                "@typescript-eslint/visitor-keys": "6.18.1",
+                "@typescript-eslint/scope-manager": "6.19.0",
+                "@typescript-eslint/type-utils": "6.19.0",
+                "@typescript-eslint/utils": "6.19.0",
+                "@typescript-eslint/visitor-keys": "6.19.0",
                 "debug": "^4.3.4",
                 "graphemer": "^1.4.0",
                 "ignore": "^5.2.4",
@@ -1154,15 +1131,15 @@
             }
         },
         "node_modules/@typescript-eslint/parser": {
-            "version": "6.18.1",
-            "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.18.1.tgz",
-            "integrity": "sha512-zct/MdJnVaRRNy9e84XnVtRv9Vf91/qqe+hZJtKanjojud4wAVy/7lXxJmMyX6X6J+xc6c//YEWvpeif8cAhWA==",
+            "version": "6.19.0",
+            "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.19.0.tgz",
+            "integrity": "sha512-1DyBLG5SH7PYCd00QlroiW60YJ4rWMuUGa/JBV0iZuqi4l4IK3twKPq5ZkEebmGqRjXWVgsUzfd3+nZveewgow==",
             "dev": true,
             "dependencies": {
-                "@typescript-eslint/scope-manager": "6.18.1",
-                "@typescript-eslint/types": "6.18.1",
-                "@typescript-eslint/typescript-estree": "6.18.1",
-                "@typescript-eslint/visitor-keys": "6.18.1",
+                "@typescript-eslint/scope-manager": "6.19.0",
+                "@typescript-eslint/types": "6.19.0",
+                "@typescript-eslint/typescript-estree": "6.19.0",
+                "@typescript-eslint/visitor-keys": "6.19.0",
                 "debug": "^4.3.4"
             },
             "engines": {
@@ -1182,13 +1159,13 @@
             }
         },
         "node_modules/@typescript-eslint/scope-manager": {
-            "version": "6.18.1",
-            "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.18.1.tgz",
-            "integrity": "sha512-BgdBwXPFmZzaZUuw6wKiHKIovms97a7eTImjkXCZE04TGHysG+0hDQPmygyvgtkoB/aOQwSM/nWv3LzrOIQOBw==",
+            "version": "6.19.0",
+            "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.19.0.tgz",
+            "integrity": "sha512-dO1XMhV2ehBI6QN8Ufi7I10wmUovmLU0Oru3n5LVlM2JuzB4M+dVphCPLkVpKvGij2j/pHBWuJ9piuXx+BhzxQ==",
             "dev": true,
             "dependencies": {
-                "@typescript-eslint/types": "6.18.1",
-                "@typescript-eslint/visitor-keys": "6.18.1"
+                "@typescript-eslint/types": "6.19.0",
+                "@typescript-eslint/visitor-keys": "6.19.0"
             },
             "engines": {
                 "node": "^16.0.0 || >=18.0.0"
@@ -1199,13 +1176,13 @@
             }
         },
         "node_modules/@typescript-eslint/type-utils": {
-            "version": "6.18.1",
-            "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.18.1.tgz",
-            "integrity": "sha512-wyOSKhuzHeU/5pcRDP2G2Ndci+4g653V43gXTpt4nbyoIOAASkGDA9JIAgbQCdCkcr1MvpSYWzxTz0olCn8+/Q==",
+            "version": "6.19.0",
+            "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.19.0.tgz",
+            "integrity": "sha512-mcvS6WSWbjiSxKCwBcXtOM5pRkPQ6kcDds/juxcy/727IQr3xMEcwr/YLHW2A2+Fp5ql6khjbKBzOyjuPqGi/w==",
             "dev": true,
             "dependencies": {
-                "@typescript-eslint/typescript-estree": "6.18.1",
-                "@typescript-eslint/utils": "6.18.1",
+                "@typescript-eslint/typescript-estree": "6.19.0",
+                "@typescript-eslint/utils": "6.19.0",
                 "debug": "^4.3.4",
                 "ts-api-utils": "^1.0.1"
             },
@@ -1226,9 +1203,9 @@
             }
         },
         "node_modules/@typescript-eslint/types": {
-            "version": "6.18.1",
-            "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.18.1.tgz",
-            "integrity": "sha512-4TuMAe+tc5oA7wwfqMtB0Y5OrREPF1GeJBAjqwgZh1lEMH5PJQgWgHGfYufVB51LtjD+peZylmeyxUXPfENLCw==",
+            "version": "6.19.0",
+            "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.19.0.tgz",
+            "integrity": "sha512-lFviGV/vYhOy3m8BJ/nAKoAyNhInTdXpftonhWle66XHAtT1ouBlkjL496b5H5hb8dWXHwtypTqgtb/DEa+j5A==",
             "dev": true,
             "engines": {
                 "node": "^16.0.0 || >=18.0.0"
@@ -1239,13 +1216,13 @@
             }
         },
         "node_modules/@typescript-eslint/typescript-estree": {
-            "version": "6.18.1",
-            "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.18.1.tgz",
-            "integrity": "sha512-fv9B94UAhywPRhUeeV/v+3SBDvcPiLxRZJw/xZeeGgRLQZ6rLMG+8krrJUyIf6s1ecWTzlsbp0rlw7n9sjufHA==",
+            "version": "6.19.0",
+            "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.19.0.tgz",
+            "integrity": "sha512-o/zefXIbbLBZ8YJ51NlkSAt2BamrK6XOmuxSR3hynMIzzyMY33KuJ9vuMdFSXW+H0tVvdF9qBPTHA91HDb4BIQ==",
             "dev": true,
             "dependencies": {
-                "@typescript-eslint/types": "6.18.1",
-                "@typescript-eslint/visitor-keys": "6.18.1",
+                "@typescript-eslint/types": "6.19.0",
+                "@typescript-eslint/visitor-keys": "6.19.0",
                 "debug": "^4.3.4",
                 "globby": "^11.1.0",
                 "is-glob": "^4.0.3",
@@ -1282,17 +1259,17 @@
             }
         },
         "node_modules/@typescript-eslint/utils": {
-            "version": "6.18.1",
-            "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.18.1.tgz",
-            "integrity": "sha512-zZmTuVZvD1wpoceHvoQpOiewmWu3uP9FuTWo8vqpy2ffsmfCE8mklRPi+vmnIYAIk9t/4kOThri2QCDgor+OpQ==",
+            "version": "6.19.0",
+            "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.19.0.tgz",
+            "integrity": "sha512-QR41YXySiuN++/dC9UArYOg4X86OAYP83OWTewpVx5ct1IZhjjgTLocj7QNxGhWoTqknsgpl7L+hGygCO+sdYw==",
             "dev": true,
             "dependencies": {
                 "@eslint-community/eslint-utils": "^4.4.0",
                 "@types/json-schema": "^7.0.12",
                 "@types/semver": "^7.5.0",
-                "@typescript-eslint/scope-manager": "6.18.1",
-                "@typescript-eslint/types": "6.18.1",
-                "@typescript-eslint/typescript-estree": "6.18.1",
+                "@typescript-eslint/scope-manager": "6.19.0",
+                "@typescript-eslint/types": "6.19.0",
+                "@typescript-eslint/typescript-estree": "6.19.0",
                 "semver": "^7.5.4"
             },
             "engines": {
@@ -1307,12 +1284,12 @@
             }
         },
         "node_modules/@typescript-eslint/visitor-keys": {
-            "version": "6.18.1",
-            "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.18.1.tgz",
-            "integrity": "sha512-/kvt0C5lRqGoCfsbmm7/CwMqoSkY3zzHLIjdhHZQW3VFrnz7ATecOHR7nb7V+xn4286MBxfnQfQhAmCI0u+bJA==",
+            "version": "6.19.0",
+            "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.19.0.tgz",
+            "integrity": "sha512-hZaUCORLgubBvtGpp1JEFEazcuEdfxta9j4iUwdSAr7mEsYYAp3EAUyCZk3VEEqGj6W+AV4uWyrDGtrlawAsgQ==",
             "dev": true,
             "dependencies": {
-                "@typescript-eslint/types": "6.18.1",
+                "@typescript-eslint/types": "6.19.0",
                 "eslint-visitor-keys": "^3.4.1"
             },
             "engines": {
@@ -1371,22 +1348,24 @@
             }
         },
         "node_modules/acorn-walk": {
-            "version": "8.3.1",
-            "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.1.tgz",
-            "integrity": "sha512-TgUZgYvqZprrl7YldZNoa9OciCAyZR+Ejm9eXzKCmjsF5IKp/wgQ7Z/ZpjpGTIUPwrHQIcYeI8qDh4PsEwxMbw==",
+            "version": "8.3.2",
+            "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz",
+            "integrity": "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==",
             "dev": true,
             "engines": {
                 "node": ">=0.4.0"
             }
         },
         "node_modules/ajv": {
-            "version": "8.12.0",
-            "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
-            "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
+            "version": "6.12.6",
+            "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+            "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+            "dev": true,
+            "peer": true,
             "dependencies": {
                 "fast-deep-equal": "^3.1.1",
-                "json-schema-traverse": "^1.0.0",
-                "require-from-string": "^2.0.2",
+                "fast-json-stable-stringify": "^2.0.0",
+                "json-schema-traverse": "^0.4.1",
                 "uri-js": "^4.2.2"
             },
             "funding": {
@@ -1394,6 +1373,13 @@
                 "url": "https://github.com/sponsors/epoberezkin"
             }
         },
+        "node_modules/ajv/node_modules/json-schema-traverse": {
+            "version": "0.4.1",
+            "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+            "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+            "dev": true,
+            "peer": true
+        },
         "node_modules/ansi-escapes": {
             "version": "4.3.2",
             "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
@@ -2582,23 +2568,6 @@
                 "url": "https://opencollective.com/eslint"
             }
         },
-        "node_modules/eslint/node_modules/ajv": {
-            "version": "6.12.6",
-            "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
-            "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
-            "dev": true,
-            "peer": true,
-            "dependencies": {
-                "fast-deep-equal": "^3.1.1",
-                "fast-json-stable-stringify": "^2.0.0",
-                "json-schema-traverse": "^0.4.1",
-                "uri-js": "^4.2.2"
-            },
-            "funding": {
-                "type": "github",
-                "url": "https://github.com/sponsors/epoberezkin"
-            }
-        },
         "node_modules/eslint/node_modules/brace-expansion": {
             "version": "1.1.11",
             "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
@@ -2623,13 +2592,6 @@
                 "node": ">=10.13.0"
             }
         },
-        "node_modules/eslint/node_modules/json-schema-traverse": {
-            "version": "0.4.1",
-            "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
-            "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
-            "dev": true,
-            "peer": true
-        },
         "node_modules/eslint/node_modules/minimatch": {
             "version": "3.1.2",
             "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
@@ -2836,7 +2798,8 @@
         "node_modules/fast-deep-equal": {
             "version": "3.1.3",
             "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
-            "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
+            "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+            "dev": true
         },
         "node_modules/fast-fifo": {
             "version": "1.3.2",
@@ -3055,9 +3018,9 @@
             "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw=="
         },
         "node_modules/follow-redirects": {
-            "version": "1.15.4",
-            "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.4.tgz",
-            "integrity": "sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==",
+            "version": "1.15.5",
+            "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz",
+            "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==",
             "funding": [
                 {
                     "type": "individual",
@@ -3855,7 +3818,8 @@
         "node_modules/json-schema-traverse": {
             "version": "1.0.0",
             "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
-            "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
+            "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
+            "dev": true
         },
         "node_modules/json-stable-stringify-without-jsonify": {
             "version": "1.0.1",
@@ -4533,9 +4497,9 @@
             }
         },
         "node_modules/nodemon": {
-            "version": "3.0.2",
-            "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.0.2.tgz",
-            "integrity": "sha512-9qIN2LNTrEzpOPBaWHTm4Asy1LxXLSickZStAQ4IZe7zsoIpD/A7LWxhZV3t4Zu352uBcqVnRsDXSMR2Sc3lTA==",
+            "version": "3.0.3",
+            "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.0.3.tgz",
+            "integrity": "sha512-7jH/NXbFPxVaMwmBCC2B9F/V6X1VkEdNgx3iu9jji8WxWcvhMWkmhNWhI5077zknOnZnBzba9hZP6bCPJLSReQ==",
             "dev": true,
             "dependencies": {
                 "chokidar": "^3.5.2",
@@ -7889,13 +7853,13 @@
             }
         },
         "node_modules/prisma": {
-            "version": "5.8.0",
-            "resolved": "https://registry.npmjs.org/prisma/-/prisma-5.8.0.tgz",
-            "integrity": "sha512-hDKoEqPt2qEUTH5yGO3l27CBnPtwvte0CGMKrpCr9+/A919JghfqJ3qgCGgMbOwdkXUOzdho0RH9tyUF3UhpMw==",
+            "version": "5.8.1",
+            "resolved": "https://registry.npmjs.org/prisma/-/prisma-5.8.1.tgz",
+            "integrity": "sha512-N6CpjzECnUHZ5beeYpDzkt2rYpEdAeqXX2dweu6BoQaeYkNZrC/WJHM+5MO/uidFHTak8QhkPKBWck1o/4MD4A==",
             "devOptional": true,
             "hasInstallScript": true,
             "dependencies": {
-                "@prisma/engines": "5.8.0"
+                "@prisma/engines": "5.8.1"
             },
             "bin": {
                 "prisma": "build/index.js"
@@ -7966,6 +7930,7 @@
             "version": "2.3.1",
             "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
             "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
+            "dev": true,
             "engines": {
                 "node": ">=6"
             }
@@ -8195,6 +8160,7 @@
             "version": "2.0.2",
             "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
             "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
+            "dev": true,
             "engines": {
                 "node": ">=0.10.0"
             }
@@ -8386,14 +8352,15 @@
             }
         },
         "node_modules/set-function-length": {
-            "version": "1.1.1",
-            "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz",
-            "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==",
+            "version": "1.2.0",
+            "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.0.tgz",
+            "integrity": "sha512-4DBHDoyHlM1IRPGYcoxexgh67y4ueR53FKV1yyxwFMY7aCqcN/38M1+SwZ/qJQ8iLv7+ck385ot4CcisOAPT9w==",
             "dependencies": {
                 "define-data-property": "^1.1.1",
-                "get-intrinsic": "^1.2.1",
+                "function-bind": "^1.1.2",
+                "get-intrinsic": "^1.2.2",
                 "gopd": "^1.0.1",
-                "has-property-descriptors": "^1.0.0"
+                "has-property-descriptors": "^1.0.1"
             },
             "engines": {
                 "node": ">= 0.4"
@@ -9150,6 +9117,7 @@
             "version": "4.4.1",
             "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
             "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+            "dev": true,
             "dependencies": {
                 "punycode": "^2.1.0"
             }
@@ -9454,6 +9422,25 @@
             "funding": {
                 "url": "https://github.com/sponsors/sindresorhus"
             }
+        },
+        "node_modules/zod": {
+            "version": "3.22.4",
+            "resolved": "https://registry.npmjs.org/zod/-/zod-3.22.4.tgz",
+            "integrity": "sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==",
+            "funding": {
+                "url": "https://github.com/sponsors/colinhacks"
+            }
+        },
+        "node_modules/zod-validation-error": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/zod-validation-error/-/zod-validation-error-3.0.0.tgz",
+            "integrity": "sha512-x+agsJJG9rvC7axF0xqTEdZhJkLHyIZkdOAWDJSmwGPzxNHMHwtU6w2yDOAAP6yuSfTAUhAMJRBfhVGY64ySEQ==",
+            "engines": {
+                "node": ">=18.0.0"
+            },
+            "peerDependencies": {
+                "zod": "^3.18.0"
+            }
         }
     }
 }
diff --git a/ExpressAPI/package.json b/ExpressAPI/package.json
index 6a7b21468969803fdd857e04f82de52e8237a8fd..87fcbb9bf61cb2177f6b855c86df49a122713fbe 100644
--- a/ExpressAPI/package.json
+++ b/ExpressAPI/package.json
@@ -28,54 +28,55 @@
         "seed": "node dist/prisma/seed"
     },
     "dependencies"   : {
-        "@prisma/client"    : "^5.6.0",
-        "ajv"               : "^8.12.0",
-        "axios"             : "^1.6.2",
-        "compression"       : "^1.7.4",
-        "cors"              : "^2.8.5",
-        "dotenv"            : "^16.3.1",
-        "dotenv-expand"     : "^10.0.0",
-        "express"           : "^4.18.2",
-        "express-validator" : "^7.0.1",
-        "form-data"         : "^4.0.0",
-        "helmet"            : "^7.1.0",
-        "http-status-codes" : "^2.3.0",
-        "json5"             : "^2.2.3",
-        "jsonwebtoken"      : "^9.0.2",
-        "morgan"            : "^1.10.0",
-        "multer"            : "^1.4.5-lts.1",
-        "mysql"             : "^2.18.1",
-        "node"              : "^20.10.0",
-        "parse-link-header" : "^2.0.0",
-        "semver"            : "^7.5.4",
-        "swagger-ui-express": "^5.0.0",
-        "tar-stream"        : "^3.1.6",
-        "uuid"              : "^9.0.1",
-        "winston"           : "^3.11.0"
+        "@prisma/client"      : "^5.8.1",
+        "axios"               : "^1.6.5",
+        "compression"         : "^1.7.4",
+        "cors"                : "^2.8.5",
+        "dotenv"              : "^16.3.1",
+        "dotenv-expand"       : "^10.0.0",
+        "express"             : "^4.18.2",
+        "express-validator"   : "^7.0.1",
+        "form-data"           : "^4.0.0",
+        "helmet"              : "^7.1.0",
+        "http-status-codes"   : "^2.3.0",
+        "json5"               : "^2.2.3",
+        "jsonwebtoken"        : "^9.0.2",
+        "morgan"              : "^1.10.0",
+        "multer"              : "^1.4.5-lts.1",
+        "mysql"               : "^2.18.1",
+        "node"                : "^20.10.0",
+        "parse-link-header"   : "^2.0.0",
+        "semver"              : "^7.5.4",
+        "swagger-ui-express"  : "^5.0.0",
+        "tar-stream"          : "^3.1.6",
+        "uuid"                : "^9.0.1",
+        "winston"             : "^3.11.0",
+        "zod"                 : "^3.22.4",
+        "zod-validation-error": "^3.0.0"
     },
     "devDependencies": {
-        "@redocly/cli"                    : "^1.5.0",
+        "@redocly/cli"                    : "^1.6.0",
         "@types/compression"              : "^1.7.5",
         "@types/cors"                     : "^2.8.17",
         "@types/express"                  : "^4.17.21",
         "@types/jsonwebtoken"             : "^9.0.5",
         "@types/morgan"                   : "^1.9.9",
         "@types/multer"                   : "^1.4.11",
-        "@types/node"                     : "^20.10.3",
+        "@types/node"                     : "^20.11.5",
         "@types/parse-link-header"        : "^2.0.3",
         "@types/semver"                   : "^7.5.6",
         "@types/swagger-ui-express"       : "^4.1.6",
         "@types/tar-stream"               : "^3.1.3",
         "@types/uuid"                     : "^9.0.7",
-        "@typescript-eslint/eslint-plugin": "^6.13.2",
-        "@typescript-eslint/parser"       : "^6.13.2",
+        "@typescript-eslint/eslint-plugin": "^6.18.1",
+        "@typescript-eslint/parser"       : "^6.18.1",
         "dotenv-cli"                      : "^7.3.0",
         "dotenv-vault"                    : "^1.25.0",
-        "genversion"                      : "^3.1.1",
-        "nodemon"                         : "^3.0.2",
-        "npm"                             : "^10.2.4",
-        "prisma"                          : "^5.6.0",
-        "ts-node"                         : "^10.9.1",
-        "typescript"                      : "^5.3.2"
+        "genversion"                      : "^3.2.0",
+        "nodemon"                         : "^3.0.3",
+        "npm"                             : "^10.3.0",
+        "prisma"                          : "^5.8.1",
+        "ts-node"                         : "^10.9.2",
+        "typescript"                      : "^5.3.3"
     }
 }