From 19e54b10d4d955e22346339a38f34190e3a1b36b Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 4 Jul 2026 13:43:44 +0000 Subject: [PATCH] Convert /-/databases.json from top-level array to object /-/databases.json now returns {"ok": true, "databases": [...]} instead of a bare JSON array, so the response can grow additional keys without a breaking change. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01GrHZSypDfMnym1tM5XJAFZ --- datasette/app.py | 6 +++++- docs/introspection.rst | 23 +++++++++++++---------- existing-api.md | 7 ++++--- tests/test_api.py | 6 ++++-- tests/test_cli.py | 6 +++--- tests/test_config_dir.py | 2 +- tests/test_internals_datasette.py | 2 +- tests/test_routes.py | 2 +- tests/test_success_envelope.py | 11 +++++++++++ 9 files changed, 43 insertions(+), 22 deletions(-) diff --git a/datasette/app.py b/datasette/app.py index b554f9bc..bc35669f 100644 --- a/datasette/app.py +++ b/datasette/app.py @@ -2571,7 +2571,11 @@ class Datasette: r"/-/threads(\.(?Pjson))?$", ) add_route( - JsonDataView.as_view(self, "databases.json", self._connected_databases), + JsonDataView.as_view( + self, + "databases.json", + lambda: {"databases": self._connected_databases()}, + ), r"/-/databases(\.(?Pjson))?$", ) add_route( diff --git a/docs/introspection.rst b/docs/introspection.rst index 99238204..ab47c0a5 100644 --- a/docs/introspection.rst +++ b/docs/introspection.rst @@ -141,16 +141,19 @@ Shows currently attached databases. `Databases example len(data["plugins"]) + + +@pytest.mark.asyncio +async def test_databases_json_is_object(ds_client): + response = await ds_client.get("/-/databases.json") + assert response.status_code == 200 + data = response.json() + assert set(data.keys()) == {"ok", "databases"} + assert data["ok"] is True + assert isinstance(data["databases"], list) + assert "fixtures" in {db["name"] for db in data["databases"]}