diff --git a/jupyterlab_server/spec.py b/jupyterlab_server/spec.py
index 94347b9..6e0d7d4 100644
--- a/jupyterlab_server/spec.py
+++ b/jupyterlab_server/spec.py
@@ -9,17 +9,17 @@ import typing
 from pathlib import Path
 
 if typing.TYPE_CHECKING:
-    from openapi_core.spec.paths import Spec
+    from jsonschema_path import SchemaPath
 
 HERE = Path(os.path.dirname(__file__)).resolve()
 
 
-def get_openapi_spec() -> Spec:
+def get_openapi_spec() -> SchemaPath:
     """Get the OpenAPI spec object."""
-    from openapi_core.spec.paths import Spec
+    from jsonschema_path import SchemaPath
 
     openapi_spec_dict = get_openapi_spec_dict()
-    return Spec.from_dict(openapi_spec_dict)  # type:ignore[arg-type]
+    return SchemaPath.from_dict(openapi_spec_dict)
 
 
 def get_openapi_spec_dict() -> dict[str, typing.Any]:
diff --git a/jupyterlab_server/test_utils.py b/jupyterlab_server/test_utils.py
index c1d8956..337bb53 100644
--- a/jupyterlab_server/test_utils.py
+++ b/jupyterlab_server/test_utils.py
@@ -13,8 +13,8 @@ from urllib.parse import parse_qs, urlparse
 
 import tornado.httpclient
 import tornado.web
+from jsonschema_path import SchemaPath
 from openapi_core import V30RequestValidator, V30ResponseValidator
-from openapi_core.spec.paths import Spec
 from openapi_core.validation.request.datatypes import RequestParameters
 from tornado.httpclient import HTTPRequest, HTTPResponse
 from werkzeug.datastructures import Headers, ImmutableMultiDict
@@ -32,7 +32,7 @@ class TornadoOpenAPIRequest:
     Converts a torando request to an OpenAPI one
     """
 
-    def __init__(self, request: HTTPRequest, spec: Spec):
+    def __init__(self, request: HTTPRequest, spec: SchemaPath):
         """Initialize the request."""
         self.request = request
         self.spec = spec
@@ -76,7 +76,7 @@ class TornadoOpenAPIRequest:
         # https://github.com/OAI/OpenAPI-Specification/issues/892
         url = None
         o = urlparse(self.request.url)
-        for path_ in self.spec["paths"]:
+        for path_ in self.spec["paths"].keys():
             if url:
                 continue  # type:ignore[unreachable]
             has_arg = "{" in path_
