Merge extensions v2 reads into scoped endpoints - #230
Conversation
Deploying with
|
| Status | Name | Latest Commit | Preview URL | Updated (UTC) |
|---|---|---|---|---|
| ✅ Deployment successful! View logs |
api | 5ff5f42 | Commit Preview URL Branch Preview URL |
Sep 17 2026, 08:04 AM |
There was a problem hiding this comment.
All reported issues were addressed across 22 files
Reply with feedback, questions, or to request a fix.
Re-trigger cubic
There was a problem hiding this comment.
All reported issues were addressed across 17 files (changes from recent commits).
Reply with feedback, questions, or to request a fix.
Re-trigger cubic
There was a problem hiding this comment.
0 issues found across 1 file (changes from recent commits).
Requires human review: Auto-approval blocked by 1 unresolved issue from previous reviews.
Re-trigger cubic
There was a problem hiding this comment.
All reported issues were addressed across 10 files (changes from recent commits).
Tip: Review your code locally with the cubic CLI to iterate faster.
Re-trigger cubic
Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>
Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>
There was a problem hiding this comment.
0 issues found across 10 files (changes from recent commits).
Requires human review: Breaks the public API by merging extensions v2 read endpoints into scope/role-aware routes; clients must migrate and response, auth, and cache behavior change, so a human should approve the contract and migration.
Re-trigger cubic
Summary by cubic
Merges the extensions v2 read endpoints into role-aware scoped endpoints so each resource has one read path instead of separate public, owner, and moderator routes. Existing clients using the old read paths must update.
Migration
GET /extensionskeepsscope=publicas the default;?scope=mineand?scope=allreplaceGET /extensions/mineandGET /moderation/all-extensions.GET /extensions/{id}replacesGET /extensions/mine/{id}andGET /moderation/extensions/{id}.GET /moderation/extensionstoGET /revisions; per-extension history stays atGET /extensions/{id}/revisions.GET /developersnow defaults tostatus=all;?status=unapprovedreplacesGET /developers/unapproved.GET /developers/claims?scope=mine|pendingreplaces/developers/claims/mineand/developers/claims.GET /extensions/mineno longer exists.Behavior
GET /extensions/{id}andGET /developers/{id}are role-aware: anonymous, unrelated, or inactive-account callers get the public projection, active owners and moderators get the full record, and unpublished or delisted extensions return 404 outside those roles.GET /developers,?scope=all,?scope=pending, andGET /revisionsremain moderator-only;?scope=minerequires an active account.Vary: Authorization.GET /extensions,developer_idis rejected outsidescope=public;statusandqare rejected outsidescope=all(422 instead of being ignored).GET /developers/claims?scope=minenow returns the same enriched claim shape as the pending queue.GET /revisions(queue) defaults to oldest first;GET /extensions/{id}/revisions(history) defaults to newest first.PATCH /users/menow returns the full account projection instead of onlydisplay_name.mineis no longer a reserved extension id;POST /extensionsaccepts it now that the static route is gone.Written for commit c7f2d13. Summary will update on new commits.