feat(api): expose project Pages through the v1 API - #9758
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Team Run ID: 📒 Files selected for processing (5)
Included review availability: Your plan provides up to 10 included reviews per hour; 9 remain after this review. 📝 WalkthroughWalkthroughThe change adds API-key-authenticated page routes for CRUD, favorites, descriptions, versions, duplication, access, archive, lock, and summary operations. Contract tests cover route registration, authentication, session access, creation, listing, and updates. ChangesPage API
Estimated code review effort: 3 (Moderate) | ~20 minutes Merge Risk: ⚪ Minimal · up to API-key clients can now manage project Pages through v1 endpoints while existing session-authenticated Page routes remain available. Covered route, authentication, and CRUD behavior leaves no identified merge-blocking risk. Sequence Diagram(s)sequenceDiagram
participant APIClient
participant PageURLPatterns
participant PageViewSet
participant AppPageViewSet
participant PageSerializer
APIClient->>PageURLPatterns: Send API-key page request
PageURLPatterns->>PageViewSet: Resolve page route
PageViewSet->>AppPageViewSet: Execute page operation
PageViewSet->>PageSerializer: Serialize paginated results
PageSerializer-->>APIClient: Return page response
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment Warning |
◈ PR Lens
Architecture 3 components touched across 2 lanes. Inside the changed components — 1 viewComponent view — Public Page API Internal structure of the public v1 page endpoints, subclasses of core page viewsets, API key authentication, and contract tests. Data flow
Drill down
|
|
Sent from [Proton Mail](https://proton.me/mail/home) for Android.
…-------- Original Message --------
On Thursday, 09/03/26 at 23:13 edho08 ***@***.***> wrote:
Description
Adds API-key-authenticated project Page endpoints under /api/v1 while preserving the existing session-authenticated /api Page routes.
This is a best-effort OSS implementation based on the Page functionality currently present in Plane OSS preview. It is not a 1:1 implementation of the commercial SDK/MCP surface; workspace-level Page operations are intentionally excluded because the OSS branch has no corresponding CRUD routes.
The implementation reuses the existing project Page handlers and exposes project Page listing, creation, retrieval, updates, deletion, archive/restore, locking, access changes, descriptions, versions, favorites, duplication, and summary operations through X-Api-Key authentication.
Type of Change
- Feature (non-breaking change which adds functionality)
Screenshots and Media (if applicable)
Not applicable — API-only change.
Test Scenarios
- Added contract coverage for project Page route registration and X-Api-Key authentication.
- Added project Page create, list, and PUT update coverage, including verification of the ProjectPage relation.
- Added a regression test confirming the existing session-authenticated /api Page route remains available.
- Ran the focused Docker-backed test suite:
- docker compose -f docker-compose-test.yml run --rm --build api-tests pytest plane/tests/contract/api/test_pages.py -q
- Result: 5 passed in 20.57s
- ruff format --check passed.
- ruff check passed.
- git diff --check passed.
References
Refs [#9511](#9511)
---------------------------------------------------------------
You can view, comment on, or merge this pull request online at:
#9758
Commit Summary
- [6a696f4](6a696f4) feat(api): expose project pages in v1 API
- [915e6da](915e6da) test(api): cover project page routes and CRUD
File Changes
([5 files](https://github.com/makeplane/plane/pull/9758/files))
- M [apps/api/plane/api/urls/__init__.py](https://github.com/makeplane/plane/pull/9758/files#diff-67657f5939fbd2cc1cae95c0a85a9297a39182ed7b137ca33780c9b26878c25a) (2)
- A [apps/api/plane/api/urls/page.py](https://github.com/makeplane/plane/pull/9758/files#diff-ca2cbe91bed2337bc567e8b6f26438f7ee42b0d480f2dc4300b2487e2806bb00) (73)
- M [apps/api/plane/api/views/__init__.py](https://github.com/makeplane/plane/pull/9758/files#diff-2c3160ac3a28aafe6670417b9e969a98d9c033926aa092eab82318863260c0c2) (8)
- A [apps/api/plane/api/views/page.py](https://github.com/makeplane/plane/pull/9758/files#diff-bc53a5ee29f8d5498f83169a4885769561bc679037273a00bd3c486c247f9fa2) (68)
- A [apps/api/plane/tests/contract/api/test_pages.py](https://github.com/makeplane/plane/pull/9758/files#diff-563217240e960651e98ff5ee985ddd811070978538495ac4e624bc7448f56b6d) (122)
Patch Links:
- https://github.com/makeplane/plane/pull/9758.patch
- https://github.com/makeplane/plane/pull/9758.diff
—
Reply to this email directly, [view it on GitHub](#9758?email_source=notifications&email_token=AM374GYGPJTFFPTDG6UWIJT5NIXNRA5CNFSNUABEM5UWIORPF5TWS5BNNB2WEL2QOVWGYUTFOF2WK43UF42DIMZYHA2DSNBVG6THEZLBONXW5KTTOVRHGY3SNFRGKZFFMV3GK3TUVRTG633UMVZF6Y3MNFRWW), or [unsubscribe](https://github.com/notifications/unsubscribe-auth/AM374G2Z3JB4VYQZN3BQVZT5NIXNRAVCNFSNUABFKJSXA33TNF2G64TZHM2TMOBQHE4DCMJYHNEXG43VMU5TKMZUGM3TONJZG42KC5QC).
You are receiving this because you are subscribed to this thread.Message ID: ***@***.***>
|
|
Im closing this PR because it duplicate #9757. |
Description
Adds API-key-authenticated project Page endpoints under
/api/v1while preserving the existing session-authenticated/apiPage routes.This is a best-effort OSS implementation based on the Page functionality currently present in Plane OSS
preview. It is not a 1:1 implementation of the commercial SDK/MCP surface; workspace-level Page operations are intentionally excluded because the OSS branch has no corresponding CRUD routes.The implementation reuses the existing project Page handlers and exposes project Page listing, creation, retrieval, updates, deletion, archive/restore, locking, access changes, descriptions, versions, favorites, duplication, and summary operations through
X-Api-Keyauthentication.Type of Change
Screenshots and Media (if applicable)
Not applicable — API-only change.
Test Scenarios
X-Api-Keyauthentication.PUTupdate coverage, including verification of theProjectPagerelation./apiPage route remains available.ruff format --checkpassed.ruff checkpassed.git diff --checkpassed.References
Refs #9511
Summary by CodeRabbit
New Features
Tests