From 20d424ea8cf7377e6cf70b7544e794841a66f259 Mon Sep 17 00:00:00 2001 From: Julien Maupetit Date: Mon, 27 Jul 2026 18:31:10 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=9A(global)=20move=20favorite=20docume?= =?UTF-8?q?nts=20API=20endpoint=20to=20/documents/favorites/?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit To respect the globally used pattern, we can safely switch to a simpler path. --- CHANGELOG.md | 1 + src/backend/core/api/viewsets.py | 3 ++- .../documents/test_api_documents_favorite_list.py | 12 ++++++------ .../test_external_api_documents_favorite.py | 2 +- .../docs/doc-management/api/useDocsFavorite.tsx | 2 +- 5 files changed, 11 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ac490d64ab..7255897470 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,7 @@ and this project adheres to ### Changed - ♿️(frontend) use semantic `
` structure in document info card #2379 +- 🚚(global) move favorite documents API endpoint to `/documents/favorites/` ## [v5.4.1] - 2026-07-09 diff --git a/src/backend/core/api/viewsets.py b/src/backend/core/api/viewsets.py index 5d9991bcbf..e491b84b6c 100644 --- a/src/backend/core/api/viewsets.py +++ b/src/backend/core/api/viewsets.py @@ -484,7 +484,7 @@ class DocumentViewSet( 8. **Favorite**: Get list of favorite documents for a user. Mark or unmark a document as favorite. Examples: - - GET /documents/favorite_list/ + - GET /documents/favorites/ - POST, DELETE /documents/{id}/favorite/ 9. **Create for Owner**: Create a document via server-to-server on behalf of a user. @@ -836,6 +836,7 @@ def can_edit(self, request, *args, **kwargs): detail=False, methods=["get"], permission_classes=[permissions.IsAuthenticated], + url_path="favorites", ) def favorite_list(self, request, *args, **kwargs): """Get list of favorite documents for the current user.""" diff --git a/src/backend/core/tests/documents/test_api_documents_favorite_list.py b/src/backend/core/tests/documents/test_api_documents_favorite_list.py index e28e0f777d..a07c905e0f 100644 --- a/src/backend/core/tests/documents/test_api_documents_favorite_list.py +++ b/src/backend/core/tests/documents/test_api_documents_favorite_list.py @@ -16,7 +16,7 @@ def test_api_document_favorite_list_anonymous(): """Anonymous users should receive a 401 error.""" client = APIClient() - response = client.get("/api/v1.0/documents/favorite_list/") + response = client.get("/api/v1.0/documents/favorites/") assert response.status_code == 401 @@ -27,7 +27,7 @@ def test_api_document_favorite_list_authenticated_no_favorite(): client = APIClient() client.force_login(user) - response = client.get("/api/v1.0/documents/favorite_list/") + response = client.get("/api/v1.0/documents/favorites/") assert response.status_code == 200 assert response.json() == { @@ -53,7 +53,7 @@ def test_api_document_favorite_list_authenticated_with_favorite(): user=user, role=models.RoleChoices.READER, document__favorited_by=[user] ).document - response = client.get("/api/v1.0/documents/favorite_list/") + response = client.get("/api/v1.0/documents/favorites/") assert response.status_code == 200 assert response.json() == { @@ -107,7 +107,7 @@ def test_api_document_favorite_list_with_favorite_children(): other_root = factories.DocumentFactory(creator=user, users=[user]) factories.DocumentFactory.create_batch(2, parent=other_root) - response = client.get("/api/v1.0/documents/favorite_list/") + response = client.get("/api/v1.0/documents/favorites/") assert response.status_code == 200 assert response.json()["count"] == 3 @@ -149,7 +149,7 @@ def test_api_document_favorite_list_sorted_by_updated_at(): updated_at=now + timedelta(seconds=3) ) - response = client.get("/api/v1.0/documents/favorite_list/") + response = client.get("/api/v1.0/documents/favorites/") assert response.status_code == 200 assert response.json()["count"] == 3 @@ -176,7 +176,7 @@ def test_api_document_favorite_list_with_deleted_child(): child1.delete() - response = client.get("/api/v1.0/documents/favorite_list/") + response = client.get("/api/v1.0/documents/favorites/") assert response.status_code == 200 assert response.json()["count"] == 2 diff --git a/src/backend/core/tests/external_api/test_external_api_documents_favorite.py b/src/backend/core/tests/external_api/test_external_api_documents_favorite.py index 86883a9da2..c9ee470558 100644 --- a/src/backend/core/tests/external_api/test_external_api_documents_favorite.py +++ b/src/backend/core/tests/external_api/test_external_api_documents_favorite.py @@ -35,7 +35,7 @@ def test_external_api_documents_favorites_list_allowed( document__favorited_by=[user_specific_sub], ).document - response = client.get("/external_api/v1.0/documents/favorite_list/") + response = client.get("/external_api/v1.0/documents/favorites/") assert response.status_code == 200 data = response.json() diff --git a/src/frontend/apps/impress/src/features/docs/doc-management/api/useDocsFavorite.tsx b/src/frontend/apps/impress/src/features/docs/doc-management/api/useDocsFavorite.tsx index 3baa451024..5f47bc3c6c 100644 --- a/src/frontend/apps/impress/src/features/docs/doc-management/api/useDocsFavorite.tsx +++ b/src/frontend/apps/impress/src/features/docs/doc-management/api/useDocsFavorite.tsx @@ -26,7 +26,7 @@ export const getDocsFavorite = async ( } const response = await fetchAPI( - `documents/favorite_list/?${searchParams.toString()}`, + `documents/favorites/?${searchParams.toString()}`, ); if (!response.ok) {