diff --git a/api/package-lock.json b/api/package-lock.json
index 01c4c7c5e1ebe2505dbb2ec0a9be20147e5b15c9..0c21f7cc3b3e9d8c8e851add6ec67c2a9d78ffe1 100644
--- a/api/package-lock.json
+++ b/api/package-lock.json
@@ -9,11 +9,12 @@
       "version": "1.0.2",
       "license": "UNLICENSED",
       "dependencies": {
+        "@nestjs/apollo": "^10.0.6",
         "@nestjs/axios": "^0.0.7",
         "@nestjs/common": "^8.0.0",
         "@nestjs/config": "^1.0.1",
         "@nestjs/core": "^8.0.0",
-        "@nestjs/graphql": "^9.0.4",
+        "@nestjs/graphql": "^10.0.6",
         "@nestjs/platform-express": "^8.0.0",
         "@nestjs/typeorm": "^8.0.2",
         "apollo-server-express": "^3.3.0",
@@ -258,22 +259,6 @@
         "xss": "^1.0.8"
       }
     },
-    "node_modules/@ardatan/aggregate-error": {
-      "version": "0.0.6",
-      "resolved": "https://registry.npmjs.org/@ardatan/aggregate-error/-/aggregate-error-0.0.6.tgz",
-      "integrity": "sha512-vyrkEHG1jrukmzTPtyWB4NLPauUw5bQeg4uhn8f+1SSynmrOcyvlb1GKQjjgoBzElLdfXCRYX8UnBlhklOHYRQ==",
-      "dependencies": {
-        "tslib": "~2.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/@ardatan/aggregate-error/node_modules/tslib": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz",
-      "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ=="
-    },
     "node_modules/@babel/code-frame": {
       "version": "7.12.11",
       "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz",
@@ -975,23 +960,17 @@
       "dev": true
     },
     "node_modules/@graphql-tools/merge": {
-      "version": "6.2.5",
-      "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-6.2.5.tgz",
-      "integrity": "sha512-T2UEm7L5MeS1ggbGKBkdV9kTqLqSHQM13RrjPzIAYzkFL/mK837sf+oq8h2+R8B+senuHX8akUhMTcU85kcMvw==",
+      "version": "8.2.3",
+      "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.2.3.tgz",
+      "integrity": "sha512-XCSmL6/Xg8259OTWNp69B57CPWiVL69kB7pposFrufG/zaAlI9BS68dgzrxmmSqZV5ZHU4r/6Tbf6fwnEJGiSw==",
       "dependencies": {
-        "@graphql-tools/schema": "^7.0.0",
-        "@graphql-tools/utils": "^7.0.0",
-        "tslib": "~2.0.1"
+        "@graphql-tools/utils": "^8.6.2",
+        "tslib": "~2.3.0"
       },
       "peerDependencies": {
-        "graphql": "^14.0.0 || ^15.0.0"
+        "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0"
       }
     },
-    "node_modules/@graphql-tools/merge/node_modules/tslib": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz",
-      "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ=="
-    },
     "node_modules/@graphql-tools/mock": {
       "version": "8.5.2",
       "resolved": "https://registry.npmjs.org/@graphql-tools/mock/-/mock-8.5.2.tgz",
@@ -1006,19 +985,7 @@
         "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0"
       }
     },
-    "node_modules/@graphql-tools/mock/node_modules/@graphql-tools/merge": {
-      "version": "8.2.3",
-      "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.2.3.tgz",
-      "integrity": "sha512-XCSmL6/Xg8259OTWNp69B57CPWiVL69kB7pposFrufG/zaAlI9BS68dgzrxmmSqZV5ZHU4r/6Tbf6fwnEJGiSw==",
-      "dependencies": {
-        "@graphql-tools/utils": "^8.6.2",
-        "tslib": "~2.3.0"
-      },
-      "peerDependencies": {
-        "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0"
-      }
-    },
-    "node_modules/@graphql-tools/mock/node_modules/@graphql-tools/schema": {
+    "node_modules/@graphql-tools/schema": {
       "version": "8.3.2",
       "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-8.3.2.tgz",
       "integrity": "sha512-77feSmIuHdoxMXRbRyxE8rEziKesd/AcqKV6fmxe7Zt+PgIQITxNDew2XJJg7qFTMNM43W77Ia6njUSBxNOkwg==",
@@ -1032,7 +999,7 @@
         "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0"
       }
     },
-    "node_modules/@graphql-tools/mock/node_modules/@graphql-tools/utils": {
+    "node_modules/@graphql-tools/utils": {
       "version": "8.6.2",
       "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.6.2.tgz",
       "integrity": "sha512-x1DG0cJgpJtImUlNE780B/dfp8pxvVxOD6UeykFH5rHes26S4kGokbgU8F1IgrJ1vAPm/OVBHtd2kicTsPfwdA==",
@@ -1043,50 +1010,6 @@
         "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0"
       }
     },
-    "node_modules/@graphql-tools/mock/node_modules/value-or-promise": {
-      "version": "1.0.11",
-      "resolved": "https://registry.npmjs.org/value-or-promise/-/value-or-promise-1.0.11.tgz",
-      "integrity": "sha512-41BrgH+dIbCFXClcSapVs5M6GkENd3gQOJpEfPDNa71LsUGMXDL0jMWpI/Rh7WhX+Aalfz2TTS3Zt5pUsbnhLg==",
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/@graphql-tools/schema": {
-      "version": "7.1.5",
-      "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-7.1.5.tgz",
-      "integrity": "sha512-uyn3HSNSckf4mvQSq0Q07CPaVZMNFCYEVxroApOaw802m9DcZPgf9XVPy/gda5GWj9AhbijfRYVTZQgHnJ4CXA==",
-      "dependencies": {
-        "@graphql-tools/utils": "^7.1.2",
-        "tslib": "~2.2.0",
-        "value-or-promise": "1.0.6"
-      },
-      "peerDependencies": {
-        "graphql": "^14.0.0 || ^15.0.0"
-      }
-    },
-    "node_modules/@graphql-tools/schema/node_modules/tslib": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz",
-      "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w=="
-    },
-    "node_modules/@graphql-tools/utils": {
-      "version": "7.10.0",
-      "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-7.10.0.tgz",
-      "integrity": "sha512-d334r6bo9mxdSqZW6zWboEnnOOFRrAPVQJ7LkU8/6grglrbcu6WhwCLzHb90E94JI3TD3ricC3YGbUqIi9Xg0w==",
-      "dependencies": {
-        "@ardatan/aggregate-error": "0.0.6",
-        "camel-case": "4.1.2",
-        "tslib": "~2.2.0"
-      },
-      "peerDependencies": {
-        "graphql": "^14.0.0 || ^15.0.0"
-      }
-    },
-    "node_modules/@graphql-tools/utils/node_modules/tslib": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz",
-      "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w=="
-    },
     "node_modules/@humanwhocodes/config-array": {
       "version": "0.5.0",
       "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz",
@@ -1518,6 +1441,38 @@
         "@jridgewell/sourcemap-codec": "^1.4.10"
       }
     },
+    "node_modules/@nestjs/apollo": {
+      "version": "10.0.6",
+      "resolved": "https://registry.npmjs.org/@nestjs/apollo/-/apollo-10.0.6.tgz",
+      "integrity": "sha512-wRmaNZFHoetw/90HygIvDKwCbT06ufGMg05XYz3WSoR7WCSFVTFPF+vaTcbtUABlZHz1QAbmDEJQIagMtY6ArQ==",
+      "dependencies": {
+        "iterall": "1.3.0",
+        "lodash.omit": "4.5.0"
+      },
+      "peerDependencies": {
+        "@apollo/gateway": "^0.44.1 || ^0.46.0 || ^0.48.0",
+        "@nestjs/common": "^8.2.3",
+        "@nestjs/core": "^8.2.3",
+        "@nestjs/graphql": "^10.0.0",
+        "apollo-server-core": "^3.5.0",
+        "apollo-server-express": "^3.5.0",
+        "apollo-server-fastify": "^3.5.0"
+      },
+      "peerDependenciesMeta": {
+        "@apollo/gateway": {
+          "optional": true
+        },
+        "apollo-server-core": {
+          "optional": true
+        },
+        "apollo-server-express": {
+          "optional": true
+        },
+        "apollo-server-fastify": {
+          "optional": true
+        }
+      }
+    },
     "node_modules/@nestjs/axios": {
       "version": "0.0.7",
       "resolved": "https://registry.npmjs.org/@nestjs/axios/-/axios-0.0.7.tgz",
@@ -1828,91 +1783,59 @@
       }
     },
     "node_modules/@nestjs/graphql": {
-      "version": "9.1.2",
-      "resolved": "https://registry.npmjs.org/@nestjs/graphql/-/graphql-9.1.2.tgz",
-      "integrity": "sha512-ncxmkKmrswnHJ+jLgc6tbkRET6HAyC3gK6WKt1CdPLjvMnXVpFVpyQMFSenNXxAndInw9IgaiSyiJFdRYZVD/w==",
-      "dependencies": {
-        "@graphql-tools/merge": "6.2.5",
-        "@graphql-tools/schema": "7.1.5",
-        "@graphql-tools/utils": "7.10.0",
-        "@nestjs/mapped-types": "1.0.0",
-        "chokidar": "3.5.2",
-        "fast-glob": "3.2.7",
+      "version": "10.0.6",
+      "resolved": "https://registry.npmjs.org/@nestjs/graphql/-/graphql-10.0.6.tgz",
+      "integrity": "sha512-ASqvrlnkElobGv/MwxpFK82PBwitGo61bJKoNAPOLo3kHG7XEeT+GHJYfGfaFyEdryynk9wlqJlx5XNfJl00Rw==",
+      "dependencies": {
+        "@graphql-tools/merge": "8.2.3",
+        "@graphql-tools/schema": "8.3.2",
+        "@graphql-tools/utils": "8.6.2",
+        "@nestjs/mapped-types": "1.0.1",
+        "chokidar": "3.5.3",
+        "fast-glob": "3.2.11",
+        "graphql-tag": "2.12.6",
         "graphql-ws": "5.5.5",
-        "iterall": "1.3.0",
         "lodash": "4.17.21",
         "normalize-path": "3.0.0",
         "subscriptions-transport-ws": "0.11.0",
         "tslib": "2.3.1",
         "uuid": "8.3.2",
-        "ws": "8.3.0"
+        "ws": "8.5.0"
       },
       "peerDependencies": {
-        "@apollo/federation": "^0.26.0 || ^0.27.0 || ^0.29.0 || ^0.33.0",
-        "@apollo/gateway": "^0.29.0 || ^0.32.0 || ^0.33.0 || ^0.35.0 || ^0.38.0 || ^0.42.0",
-        "@apollo/subgraph": "^0.1.2",
-        "@nestjs/common": "^8.0.0",
-        "@nestjs/core": "^8.0.0",
-        "apollo-server-core": "^3.0.0",
-        "apollo-server-express": "^3.1.2",
-        "apollo-server-fastify": "^3.1.2",
-        "graphql": "^15.5.1",
+        "@apollo/subgraph": "^0.1.5 || ^0.3.0",
+        "@nestjs/common": "^8.2.3",
+        "@nestjs/core": "^8.2.3",
+        "graphql": "^15.8.0 || ^16.0.0",
         "reflect-metadata": "^0.1.13",
-        "ts-morph": "^11.0.3 || ^12.0.0 || ^13.0.0"
+        "ts-morph": "^13.0.2"
       },
       "peerDependenciesMeta": {
-        "@apollo/federation": {
-          "optional": true
-        },
-        "@apollo/gateway": {
-          "optional": true
-        },
         "@apollo/subgraph": {
           "optional": true
         },
-        "apollo-server-core": {
-          "optional": true
-        },
-        "apollo-server-express": {
-          "optional": true
-        },
-        "apollo-server-fastify": {
-          "optional": true
-        },
         "ts-morph": {
           "optional": true
         }
       }
     },
-    "node_modules/@nestjs/graphql/node_modules/chokidar": {
-      "version": "3.5.2",
-      "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz",
-      "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==",
-      "dependencies": {
-        "anymatch": "~3.1.2",
-        "braces": "~3.0.2",
-        "glob-parent": "~5.1.2",
-        "is-binary-path": "~2.1.0",
-        "is-glob": "~4.0.1",
-        "normalize-path": "~3.0.0",
-        "readdirp": "~3.6.0"
-      },
-      "engines": {
-        "node": ">= 8.10.0"
-      },
-      "optionalDependencies": {
-        "fsevents": "~2.3.2"
-      }
-    },
     "node_modules/@nestjs/mapped-types": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/@nestjs/mapped-types/-/mapped-types-1.0.0.tgz",
-      "integrity": "sha512-26AW5jHadLXtvHs+M+Agd9KZ92dDlBrmD0rORlBlvn2KvsWs4JRaKl2mUsrW7YsdZeAu3Hc4ukqyYyDdyCmMWQ==",
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/@nestjs/mapped-types/-/mapped-types-1.0.1.tgz",
+      "integrity": "sha512-NFvofzSinp00j5rzUd4tf+xi9od6383iY0JP7o0Bnu1fuItAUkWBgc4EKuIQ3D+c2QI3i9pG1kDWAeY27EMGtg==",
       "peerDependencies": {
         "@nestjs/common": "^7.0.8 || ^8.0.0",
-        "class-transformer": "^0.2.0 || ^0.3.0 || ^0.4.0",
+        "class-transformer": "^0.2.0 || ^0.3.0 || ^0.4.0 || ^0.5.0",
         "class-validator": "^0.11.1 || ^0.12.0 || ^0.13.0",
         "reflect-metadata": "^0.1.12"
+      },
+      "peerDependenciesMeta": {
+        "class-transformer": {
+          "optional": true
+        },
+        "class-validator": {
+          "optional": true
+        }
       }
     },
     "node_modules/@nestjs/platform-express": {
@@ -3474,51 +3397,6 @@
         "graphql": "^15.3.0 || ^16.0.0"
       }
     },
-    "node_modules/apollo-server-core/node_modules/@graphql-tools/merge": {
-      "version": "8.2.3",
-      "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.2.3.tgz",
-      "integrity": "sha512-XCSmL6/Xg8259OTWNp69B57CPWiVL69kB7pposFrufG/zaAlI9BS68dgzrxmmSqZV5ZHU4r/6Tbf6fwnEJGiSw==",
-      "dependencies": {
-        "@graphql-tools/utils": "^8.6.2",
-        "tslib": "~2.3.0"
-      },
-      "peerDependencies": {
-        "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0"
-      }
-    },
-    "node_modules/apollo-server-core/node_modules/@graphql-tools/schema": {
-      "version": "8.3.2",
-      "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-8.3.2.tgz",
-      "integrity": "sha512-77feSmIuHdoxMXRbRyxE8rEziKesd/AcqKV6fmxe7Zt+PgIQITxNDew2XJJg7qFTMNM43W77Ia6njUSBxNOkwg==",
-      "dependencies": {
-        "@graphql-tools/merge": "^8.2.3",
-        "@graphql-tools/utils": "^8.6.2",
-        "tslib": "~2.3.0",
-        "value-or-promise": "1.0.11"
-      },
-      "peerDependencies": {
-        "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0"
-      }
-    },
-    "node_modules/apollo-server-core/node_modules/@graphql-tools/utils": {
-      "version": "8.6.2",
-      "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.6.2.tgz",
-      "integrity": "sha512-x1DG0cJgpJtImUlNE780B/dfp8pxvVxOD6UeykFH5rHes26S4kGokbgU8F1IgrJ1vAPm/OVBHtd2kicTsPfwdA==",
-      "dependencies": {
-        "tslib": "~2.3.0"
-      },
-      "peerDependencies": {
-        "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0"
-      }
-    },
-    "node_modules/apollo-server-core/node_modules/value-or-promise": {
-      "version": "1.0.11",
-      "resolved": "https://registry.npmjs.org/value-or-promise/-/value-or-promise-1.0.11.tgz",
-      "integrity": "sha512-41BrgH+dIbCFXClcSapVs5M6GkENd3gQOJpEfPDNa71LsUGMXDL0jMWpI/Rh7WhX+Aalfz2TTS3Zt5pUsbnhLg==",
-      "engines": {
-        "node": ">=12"
-      }
-    },
     "node_modules/apollo-server-env": {
       "version": "4.2.1",
       "resolved": "https://registry.npmjs.org/apollo-server-env/-/apollo-server-env-4.2.1.tgz",
@@ -4124,15 +4002,6 @@
         "node": ">=6"
       }
     },
-    "node_modules/camel-case": {
-      "version": "4.1.2",
-      "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz",
-      "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==",
-      "dependencies": {
-        "pascal-case": "^3.1.2",
-        "tslib": "^2.0.3"
-      }
-    },
     "node_modules/camelcase": {
       "version": "5.3.1",
       "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
@@ -4223,7 +4092,6 @@
       "version": "3.5.3",
       "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
       "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
-      "dev": true,
       "funding": [
         {
           "type": "individual",
@@ -4277,12 +4145,14 @@
       "version": "0.4.0",
       "resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.4.0.tgz",
       "integrity": "sha512-ETWD/H2TbWbKEi7m9N4Km5+cw1hNcqJSxlSYhsLsNjQzWWiZIYA1zafxpK9PwVfaZ6AqR5rrjPVUBGESm5tQUA==",
+      "optional": true,
       "peer": true
     },
     "node_modules/class-validator": {
       "version": "0.13.2",
       "resolved": "https://registry.npmjs.org/class-validator/-/class-validator-0.13.2.tgz",
       "integrity": "sha512-yBUcQy07FPlGzUjoLuUfIOXzgynnQPPruyK1Ge2B74k9ROwnle1E+NxLWnUv5OLU8hA/qL5leAE9XnXq3byaBw==",
+      "optional": true,
       "peer": true,
       "dependencies": {
         "libphonenumber-js": "^1.9.43",
@@ -5903,9 +5773,9 @@
       "dev": true
     },
     "node_modules/fast-glob": {
-      "version": "3.2.7",
-      "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz",
-      "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==",
+      "version": "3.2.11",
+      "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz",
+      "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==",
       "dependencies": {
         "@nodelib/fs.stat": "^2.0.2",
         "@nodelib/fs.walk": "^1.2.3",
@@ -5914,7 +5784,7 @@
         "micromatch": "^4.0.4"
       },
       "engines": {
-        "node": ">=8"
+        "node": ">=8.6.0"
       }
     },
     "node_modules/fast-json-stable-stringify": {
@@ -6534,22 +6404,6 @@
         "url": "https://github.com/sponsors/sindresorhus"
       }
     },
-    "node_modules/globby/node_modules/fast-glob": {
-      "version": "3.2.11",
-      "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz",
-      "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==",
-      "dev": true,
-      "dependencies": {
-        "@nodelib/fs.stat": "^2.0.2",
-        "@nodelib/fs.walk": "^1.2.3",
-        "glob-parent": "^5.1.2",
-        "merge2": "^1.3.0",
-        "micromatch": "^4.0.4"
-      },
-      "engines": {
-        "node": ">=8.6.0"
-      }
-    },
     "node_modules/got": {
       "version": "11.8.3",
       "resolved": "https://registry.npmjs.org/got/-/got-11.8.3.tgz",
@@ -8511,6 +8365,7 @@
       "version": "1.9.49",
       "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.9.49.tgz",
       "integrity": "sha512-/wEOIONcVboFky+lWlCaF7glm1FhBz11M5PHeCApA+xDdVfmhKjHktHS8KjyGxouV5CSXIr4f3GvLSpJa4qMSg==",
+      "optional": true,
       "peer": true
     },
     "node_modules/lines-and-columns": {
@@ -8624,6 +8479,11 @@
       "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
       "dev": true
     },
+    "node_modules/lodash.omit": {
+      "version": "4.5.0",
+      "resolved": "https://registry.npmjs.org/lodash.omit/-/lodash.omit-4.5.0.tgz",
+      "integrity": "sha1-brGa5aHuHdnfC5aeZs4Lf6MLXmA="
+    },
     "node_modules/lodash.sortby": {
       "version": "4.7.0",
       "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz",
@@ -8690,14 +8550,6 @@
       "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz",
       "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA=="
     },
-    "node_modules/lower-case": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz",
-      "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==",
-      "dependencies": {
-        "tslib": "^2.0.3"
-      }
-    },
     "node_modules/lowercase-keys": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz",
@@ -9144,15 +8996,6 @@
       "integrity": "sha1-5tq3/r9a2Bbqgc9cYpxaDr3nLBo=",
       "dev": true
     },
-    "node_modules/no-case": {
-      "version": "3.0.4",
-      "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz",
-      "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==",
-      "dependencies": {
-        "lower-case": "^2.0.2",
-        "tslib": "^2.0.3"
-      }
-    },
     "node_modules/node-emoji": {
       "version": "1.11.0",
       "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz",
@@ -12032,15 +11875,6 @@
         "node": ">= 0.8"
       }
     },
-    "node_modules/pascal-case": {
-      "version": "3.1.2",
-      "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz",
-      "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==",
-      "dependencies": {
-        "no-case": "^3.0.4",
-        "tslib": "^2.0.3"
-      }
-    },
     "node_modules/path-exists": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
@@ -14777,15 +14611,16 @@
       "version": "13.7.0",
       "resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz",
       "integrity": "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==",
+      "optional": true,
       "peer": true,
       "engines": {
         "node": ">= 0.10"
       }
     },
     "node_modules/value-or-promise": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/value-or-promise/-/value-or-promise-1.0.6.tgz",
-      "integrity": "sha512-9r0wQsWD8z/BxPOvnwbPf05ZvFngXyouE9EKB+5GbYix+BYnAwrIChCUyFIinfbf2FL/U71z+CPpbnmTdxrwBg==",
+      "version": "1.0.11",
+      "resolved": "https://registry.npmjs.org/value-or-promise/-/value-or-promise-1.0.11.tgz",
+      "integrity": "sha512-41BrgH+dIbCFXClcSapVs5M6GkENd3gQOJpEfPDNa71LsUGMXDL0jMWpI/Rh7WhX+Aalfz2TTS3Zt5pUsbnhLg==",
       "engines": {
         "node": ">=12"
       }
@@ -15156,9 +14991,9 @@
       }
     },
     "node_modules/ws": {
-      "version": "8.3.0",
-      "resolved": "https://registry.npmjs.org/ws/-/ws-8.3.0.tgz",
-      "integrity": "sha512-Gs5EZtpqZzLvmIM59w4igITU57lrtYVFneaa434VROv4thzJyV6UjIL3D42lslWlI+D4KzLYnxSwtfuiO79sNw==",
+      "version": "8.5.0",
+      "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz",
+      "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==",
       "engines": {
         "node": ">=10.0.0"
       },
@@ -15469,21 +15304,6 @@
         "xss": "^1.0.8"
       }
     },
-    "@ardatan/aggregate-error": {
-      "version": "0.0.6",
-      "resolved": "https://registry.npmjs.org/@ardatan/aggregate-error/-/aggregate-error-0.0.6.tgz",
-      "integrity": "sha512-vyrkEHG1jrukmzTPtyWB4NLPauUw5bQeg4uhn8f+1SSynmrOcyvlb1GKQjjgoBzElLdfXCRYX8UnBlhklOHYRQ==",
-      "requires": {
-        "tslib": "~2.0.1"
-      },
-      "dependencies": {
-        "tslib": {
-          "version": "2.0.3",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz",
-          "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ=="
-        }
-      }
-    },
     "@babel/code-frame": {
       "version": "7.12.11",
       "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz",
@@ -16023,20 +15843,12 @@
       }
     },
     "@graphql-tools/merge": {
-      "version": "6.2.5",
-      "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-6.2.5.tgz",
-      "integrity": "sha512-T2UEm7L5MeS1ggbGKBkdV9kTqLqSHQM13RrjPzIAYzkFL/mK837sf+oq8h2+R8B+senuHX8akUhMTcU85kcMvw==",
+      "version": "8.2.3",
+      "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.2.3.tgz",
+      "integrity": "sha512-XCSmL6/Xg8259OTWNp69B57CPWiVL69kB7pposFrufG/zaAlI9BS68dgzrxmmSqZV5ZHU4r/6Tbf6fwnEJGiSw==",
       "requires": {
-        "@graphql-tools/schema": "^7.0.0",
-        "@graphql-tools/utils": "^7.0.0",
-        "tslib": "~2.0.1"
-      },
-      "dependencies": {
-        "tslib": {
-          "version": "2.0.3",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz",
-          "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ=="
-        }
+        "@graphql-tools/utils": "^8.6.2",
+        "tslib": "~2.3.0"
       }
     },
     "@graphql-tools/mock": {
@@ -16048,75 +15860,25 @@
         "@graphql-tools/utils": "^8.6.2",
         "fast-json-stable-stringify": "^2.1.0",
         "tslib": "~2.3.0"
-      },
-      "dependencies": {
-        "@graphql-tools/merge": {
-          "version": "8.2.3",
-          "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.2.3.tgz",
-          "integrity": "sha512-XCSmL6/Xg8259OTWNp69B57CPWiVL69kB7pposFrufG/zaAlI9BS68dgzrxmmSqZV5ZHU4r/6Tbf6fwnEJGiSw==",
-          "requires": {
-            "@graphql-tools/utils": "^8.6.2",
-            "tslib": "~2.3.0"
-          }
-        },
-        "@graphql-tools/schema": {
-          "version": "8.3.2",
-          "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-8.3.2.tgz",
-          "integrity": "sha512-77feSmIuHdoxMXRbRyxE8rEziKesd/AcqKV6fmxe7Zt+PgIQITxNDew2XJJg7qFTMNM43W77Ia6njUSBxNOkwg==",
-          "requires": {
-            "@graphql-tools/merge": "^8.2.3",
-            "@graphql-tools/utils": "^8.6.2",
-            "tslib": "~2.3.0",
-            "value-or-promise": "1.0.11"
-          }
-        },
-        "@graphql-tools/utils": {
-          "version": "8.6.2",
-          "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.6.2.tgz",
-          "integrity": "sha512-x1DG0cJgpJtImUlNE780B/dfp8pxvVxOD6UeykFH5rHes26S4kGokbgU8F1IgrJ1vAPm/OVBHtd2kicTsPfwdA==",
-          "requires": {
-            "tslib": "~2.3.0"
-          }
-        },
-        "value-or-promise": {
-          "version": "1.0.11",
-          "resolved": "https://registry.npmjs.org/value-or-promise/-/value-or-promise-1.0.11.tgz",
-          "integrity": "sha512-41BrgH+dIbCFXClcSapVs5M6GkENd3gQOJpEfPDNa71LsUGMXDL0jMWpI/Rh7WhX+Aalfz2TTS3Zt5pUsbnhLg=="
-        }
       }
     },
     "@graphql-tools/schema": {
-      "version": "7.1.5",
-      "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-7.1.5.tgz",
-      "integrity": "sha512-uyn3HSNSckf4mvQSq0Q07CPaVZMNFCYEVxroApOaw802m9DcZPgf9XVPy/gda5GWj9AhbijfRYVTZQgHnJ4CXA==",
+      "version": "8.3.2",
+      "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-8.3.2.tgz",
+      "integrity": "sha512-77feSmIuHdoxMXRbRyxE8rEziKesd/AcqKV6fmxe7Zt+PgIQITxNDew2XJJg7qFTMNM43W77Ia6njUSBxNOkwg==",
       "requires": {
-        "@graphql-tools/utils": "^7.1.2",
-        "tslib": "~2.2.0",
-        "value-or-promise": "1.0.6"
-      },
-      "dependencies": {
-        "tslib": {
-          "version": "2.2.0",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz",
-          "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w=="
-        }
+        "@graphql-tools/merge": "^8.2.3",
+        "@graphql-tools/utils": "^8.6.2",
+        "tslib": "~2.3.0",
+        "value-or-promise": "1.0.11"
       }
     },
     "@graphql-tools/utils": {
-      "version": "7.10.0",
-      "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-7.10.0.tgz",
-      "integrity": "sha512-d334r6bo9mxdSqZW6zWboEnnOOFRrAPVQJ7LkU8/6grglrbcu6WhwCLzHb90E94JI3TD3ricC3YGbUqIi9Xg0w==",
+      "version": "8.6.2",
+      "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.6.2.tgz",
+      "integrity": "sha512-x1DG0cJgpJtImUlNE780B/dfp8pxvVxOD6UeykFH5rHes26S4kGokbgU8F1IgrJ1vAPm/OVBHtd2kicTsPfwdA==",
       "requires": {
-        "@ardatan/aggregate-error": "0.0.6",
-        "camel-case": "4.1.2",
-        "tslib": "~2.2.0"
-      },
-      "dependencies": {
-        "tslib": {
-          "version": "2.2.0",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz",
-          "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w=="
-        }
+        "tslib": "~2.3.0"
       }
     },
     "@humanwhocodes/config-array": {
@@ -16461,6 +16223,15 @@
         "@jridgewell/sourcemap-codec": "^1.4.10"
       }
     },
+    "@nestjs/apollo": {
+      "version": "10.0.6",
+      "resolved": "https://registry.npmjs.org/@nestjs/apollo/-/apollo-10.0.6.tgz",
+      "integrity": "sha512-wRmaNZFHoetw/90HygIvDKwCbT06ufGMg05XYz3WSoR7WCSFVTFPF+vaTcbtUABlZHz1QAbmDEJQIagMtY6ArQ==",
+      "requires": {
+        "iterall": "1.3.0",
+        "lodash.omit": "4.5.0"
+      }
+    },
     "@nestjs/axios": {
       "version": "0.0.7",
       "resolved": "https://registry.npmjs.org/@nestjs/axios/-/axios-0.0.7.tgz",
@@ -16672,47 +16443,30 @@
       }
     },
     "@nestjs/graphql": {
-      "version": "9.1.2",
-      "resolved": "https://registry.npmjs.org/@nestjs/graphql/-/graphql-9.1.2.tgz",
-      "integrity": "sha512-ncxmkKmrswnHJ+jLgc6tbkRET6HAyC3gK6WKt1CdPLjvMnXVpFVpyQMFSenNXxAndInw9IgaiSyiJFdRYZVD/w==",
-      "requires": {
-        "@graphql-tools/merge": "6.2.5",
-        "@graphql-tools/schema": "7.1.5",
-        "@graphql-tools/utils": "7.10.0",
-        "@nestjs/mapped-types": "1.0.0",
-        "chokidar": "3.5.2",
-        "fast-glob": "3.2.7",
+      "version": "10.0.6",
+      "resolved": "https://registry.npmjs.org/@nestjs/graphql/-/graphql-10.0.6.tgz",
+      "integrity": "sha512-ASqvrlnkElobGv/MwxpFK82PBwitGo61bJKoNAPOLo3kHG7XEeT+GHJYfGfaFyEdryynk9wlqJlx5XNfJl00Rw==",
+      "requires": {
+        "@graphql-tools/merge": "8.2.3",
+        "@graphql-tools/schema": "8.3.2",
+        "@graphql-tools/utils": "8.6.2",
+        "@nestjs/mapped-types": "1.0.1",
+        "chokidar": "3.5.3",
+        "fast-glob": "3.2.11",
+        "graphql-tag": "2.12.6",
         "graphql-ws": "5.5.5",
-        "iterall": "1.3.0",
         "lodash": "4.17.21",
         "normalize-path": "3.0.0",
         "subscriptions-transport-ws": "0.11.0",
         "tslib": "2.3.1",
         "uuid": "8.3.2",
-        "ws": "8.3.0"
-      },
-      "dependencies": {
-        "chokidar": {
-          "version": "3.5.2",
-          "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz",
-          "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==",
-          "requires": {
-            "anymatch": "~3.1.2",
-            "braces": "~3.0.2",
-            "fsevents": "~2.3.2",
-            "glob-parent": "~5.1.2",
-            "is-binary-path": "~2.1.0",
-            "is-glob": "~4.0.1",
-            "normalize-path": "~3.0.0",
-            "readdirp": "~3.6.0"
-          }
-        }
+        "ws": "8.5.0"
       }
     },
     "@nestjs/mapped-types": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/@nestjs/mapped-types/-/mapped-types-1.0.0.tgz",
-      "integrity": "sha512-26AW5jHadLXtvHs+M+Agd9KZ92dDlBrmD0rORlBlvn2KvsWs4JRaKl2mUsrW7YsdZeAu3Hc4ukqyYyDdyCmMWQ==",
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/@nestjs/mapped-types/-/mapped-types-1.0.1.tgz",
+      "integrity": "sha512-NFvofzSinp00j5rzUd4tf+xi9od6383iY0JP7o0Bnu1fuItAUkWBgc4EKuIQ3D+c2QI3i9pG1kDWAeY27EMGtg==",
       "requires": {}
     },
     "@nestjs/platform-express": {
@@ -18000,41 +17754,6 @@
         "lru-cache": "^6.0.0",
         "sha.js": "^2.4.11",
         "uuid": "^8.0.0"
-      },
-      "dependencies": {
-        "@graphql-tools/merge": {
-          "version": "8.2.3",
-          "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.2.3.tgz",
-          "integrity": "sha512-XCSmL6/Xg8259OTWNp69B57CPWiVL69kB7pposFrufG/zaAlI9BS68dgzrxmmSqZV5ZHU4r/6Tbf6fwnEJGiSw==",
-          "requires": {
-            "@graphql-tools/utils": "^8.6.2",
-            "tslib": "~2.3.0"
-          }
-        },
-        "@graphql-tools/schema": {
-          "version": "8.3.2",
-          "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-8.3.2.tgz",
-          "integrity": "sha512-77feSmIuHdoxMXRbRyxE8rEziKesd/AcqKV6fmxe7Zt+PgIQITxNDew2XJJg7qFTMNM43W77Ia6njUSBxNOkwg==",
-          "requires": {
-            "@graphql-tools/merge": "^8.2.3",
-            "@graphql-tools/utils": "^8.6.2",
-            "tslib": "~2.3.0",
-            "value-or-promise": "1.0.11"
-          }
-        },
-        "@graphql-tools/utils": {
-          "version": "8.6.2",
-          "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.6.2.tgz",
-          "integrity": "sha512-x1DG0cJgpJtImUlNE780B/dfp8pxvVxOD6UeykFH5rHes26S4kGokbgU8F1IgrJ1vAPm/OVBHtd2kicTsPfwdA==",
-          "requires": {
-            "tslib": "~2.3.0"
-          }
-        },
-        "value-or-promise": {
-          "version": "1.0.11",
-          "resolved": "https://registry.npmjs.org/value-or-promise/-/value-or-promise-1.0.11.tgz",
-          "integrity": "sha512-41BrgH+dIbCFXClcSapVs5M6GkENd3gQOJpEfPDNa71LsUGMXDL0jMWpI/Rh7WhX+Aalfz2TTS3Zt5pUsbnhLg=="
-        }
       }
     },
     "apollo-server-env": {
@@ -18507,15 +18226,6 @@
       "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
       "dev": true
     },
-    "camel-case": {
-      "version": "4.1.2",
-      "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz",
-      "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==",
-      "requires": {
-        "pascal-case": "^3.1.2",
-        "tslib": "^2.0.3"
-      }
-    },
     "camelcase": {
       "version": "5.3.1",
       "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
@@ -18583,7 +18293,6 @@
       "version": "3.5.3",
       "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
       "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
-      "dev": true,
       "requires": {
         "anymatch": "~3.1.2",
         "braces": "~3.0.2",
@@ -18623,12 +18332,14 @@
       "version": "0.4.0",
       "resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.4.0.tgz",
       "integrity": "sha512-ETWD/H2TbWbKEi7m9N4Km5+cw1hNcqJSxlSYhsLsNjQzWWiZIYA1zafxpK9PwVfaZ6AqR5rrjPVUBGESm5tQUA==",
+      "optional": true,
       "peer": true
     },
     "class-validator": {
       "version": "0.13.2",
       "resolved": "https://registry.npmjs.org/class-validator/-/class-validator-0.13.2.tgz",
       "integrity": "sha512-yBUcQy07FPlGzUjoLuUfIOXzgynnQPPruyK1Ge2B74k9ROwnle1E+NxLWnUv5OLU8hA/qL5leAE9XnXq3byaBw==",
+      "optional": true,
       "peer": true,
       "requires": {
         "libphonenumber-js": "^1.9.43",
@@ -19899,9 +19610,9 @@
       "dev": true
     },
     "fast-glob": {
-      "version": "3.2.7",
-      "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz",
-      "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==",
+      "version": "3.2.11",
+      "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz",
+      "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==",
       "requires": {
         "@nodelib/fs.stat": "^2.0.2",
         "@nodelib/fs.walk": "^1.2.3",
@@ -20386,21 +20097,6 @@
         "ignore": "^5.2.0",
         "merge2": "^1.4.1",
         "slash": "^3.0.0"
-      },
-      "dependencies": {
-        "fast-glob": {
-          "version": "3.2.11",
-          "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz",
-          "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==",
-          "dev": true,
-          "requires": {
-            "@nodelib/fs.stat": "^2.0.2",
-            "@nodelib/fs.walk": "^1.2.3",
-            "glob-parent": "^5.1.2",
-            "merge2": "^1.3.0",
-            "micromatch": "^4.0.4"
-          }
-        }
       }
     },
     "got": {
@@ -21858,6 +21554,7 @@
       "version": "1.9.49",
       "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.9.49.tgz",
       "integrity": "sha512-/wEOIONcVboFky+lWlCaF7glm1FhBz11M5PHeCApA+xDdVfmhKjHktHS8KjyGxouV5CSXIr4f3GvLSpJa4qMSg==",
+      "optional": true,
       "peer": true
     },
     "lines-and-columns": {
@@ -21958,6 +21655,11 @@
       "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
       "dev": true
     },
+    "lodash.omit": {
+      "version": "4.5.0",
+      "resolved": "https://registry.npmjs.org/lodash.omit/-/lodash.omit-4.5.0.tgz",
+      "integrity": "sha1-brGa5aHuHdnfC5aeZs4Lf6MLXmA="
+    },
     "lodash.sortby": {
       "version": "4.7.0",
       "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz",
@@ -22007,14 +21709,6 @@
       "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz",
       "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA=="
     },
-    "lower-case": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz",
-      "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==",
-      "requires": {
-        "tslib": "^2.0.3"
-      }
-    },
     "lowercase-keys": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz",
@@ -22344,15 +22038,6 @@
       "integrity": "sha1-5tq3/r9a2Bbqgc9cYpxaDr3nLBo=",
       "dev": true
     },
-    "no-case": {
-      "version": "3.0.4",
-      "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz",
-      "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==",
-      "requires": {
-        "lower-case": "^2.0.2",
-        "tslib": "^2.0.3"
-      }
-    },
     "node-emoji": {
       "version": "1.11.0",
       "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz",
@@ -24399,15 +24084,6 @@
       "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
       "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
     },
-    "pascal-case": {
-      "version": "3.1.2",
-      "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz",
-      "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==",
-      "requires": {
-        "no-case": "^3.0.4",
-        "tslib": "^2.0.3"
-      }
-    },
     "path-exists": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
@@ -26387,12 +26063,13 @@
       "version": "13.7.0",
       "resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz",
       "integrity": "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==",
+      "optional": true,
       "peer": true
     },
     "value-or-promise": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/value-or-promise/-/value-or-promise-1.0.6.tgz",
-      "integrity": "sha512-9r0wQsWD8z/BxPOvnwbPf05ZvFngXyouE9EKB+5GbYix+BYnAwrIChCUyFIinfbf2FL/U71z+CPpbnmTdxrwBg=="
+      "version": "1.0.11",
+      "resolved": "https://registry.npmjs.org/value-or-promise/-/value-or-promise-1.0.11.tgz",
+      "integrity": "sha512-41BrgH+dIbCFXClcSapVs5M6GkENd3gQOJpEfPDNa71LsUGMXDL0jMWpI/Rh7WhX+Aalfz2TTS3Zt5pUsbnhLg=="
     },
     "vary": {
       "version": "1.1.2",
@@ -26671,9 +26348,9 @@
       }
     },
     "ws": {
-      "version": "8.3.0",
-      "resolved": "https://registry.npmjs.org/ws/-/ws-8.3.0.tgz",
-      "integrity": "sha512-Gs5EZtpqZzLvmIM59w4igITU57lrtYVFneaa434VROv4thzJyV6UjIL3D42lslWlI+D4KzLYnxSwtfuiO79sNw==",
+      "version": "8.5.0",
+      "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz",
+      "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==",
       "requires": {}
     },
     "xml-name-validator": {
diff --git a/api/package.json b/api/package.json
index 3ae366bab6370aa5ff1ac9bdb9358ae5ab66068a..c41d69594d25d79078516a27a461c998e7688913 100644
--- a/api/package.json
+++ b/api/package.json
@@ -23,11 +23,12 @@
     "prepare": "cd .. && husky install api/.husky"
   },
   "dependencies": {
+    "@nestjs/apollo": "^10.0.6",
     "@nestjs/axios": "^0.0.7",
     "@nestjs/common": "^8.0.0",
     "@nestjs/config": "^1.0.1",
     "@nestjs/core": "^8.0.0",
-    "@nestjs/graphql": "^9.0.4",
+    "@nestjs/graphql": "^10.0.6",
     "@nestjs/platform-express": "^8.0.0",
     "@nestjs/typeorm": "^8.0.2",
     "apollo-server-express": "^3.3.0",
diff --git a/api/src/engine/engine.module.ts b/api/src/engine/engine.module.ts
index 3a8404abdfa1f52ed1f11b22580c7a52325dd81c..8831eb2aeb9f62e9469de310502d7d2740e6926d 100644
--- a/api/src/engine/engine.module.ts
+++ b/api/src/engine/engine.module.ts
@@ -1,3 +1,4 @@
+import { ApolloDriver, ApolloDriverConfig } from '@nestjs/apollo';
 import { HttpModule, HttpService } from '@nestjs/axios';
 import { DynamicModule, Global, Logger, Module } from '@nestjs/common';
 import { REQUEST } from '@nestjs/core';
@@ -33,7 +34,8 @@ export class EngineModule {
       module: EngineModule,
       imports: [
         HttpModule,
-        GraphQLModule.forRoot({
+        GraphQLModule.forRoot<ApolloDriverConfig>({
+          driver: ApolloDriver,
           autoSchemaFile: join(process.cwd(), 'src/schema.gql'),
           context: ({ req, res }) => ({ req, res }),
           cors: {
diff --git a/api/src/schema.gql b/api/src/schema.gql
index 48bd85be516d834d9a1571eae528dc5918695650..b8935c5dc2eb1b36888b27187445faca6f9912c1 100644
--- a/api/src/schema.gql
+++ b/api/src/schema.gql
@@ -209,14 +209,14 @@ type ListExperiments {
 type Query {
   configuration: Configuration!
   domains(ids: [String!] = []): [Domain!]!
-  experimentList(name: String = "", page: Float = 0): ListExperiments!
+  experimentList(page: Float = 0, name: String = ""): ListExperiments!
   experiment(id: String!): Experiment!
   algorithms: [Algorithm!]!
 }
 
 type Mutation {
-  createExperiment(isTransient: Boolean = false, data: ExperimentCreateInput!): Experiment!
-  editExperiment(data: ExperimentEditInput!, id: String!): Experiment!
+  createExperiment(data: ExperimentCreateInput!, isTransient: Boolean = false): Experiment!
+  editExperiment(id: String!, data: ExperimentEditInput!): Experiment!
   removeExperiment(id: String!): PartialExperiment!
 }