Stacks, bookmarks & folders
Save APIs into project stacks — the “My Stack” that turns browsing into monitoring.
Auth required
All stack endpoints need Authorization: Bearer <accessToken> from anonymous or linked auth.
Bookmarks
bash
GET /v1/bookmarks?page=1&limit=20
POST /v1/bookmarks { "apiId": "uuid" } # 409 if already bookmarked
DELETE /v1/bookmarks/:idFolders (projects)
bash
GET /v1/folders
POST /v1/folders { "title": "Payments stack", "iconCodePoint": 0 }
GET /v1/folders/:id
PUT /v1/folders/:id { "title": "…", "iconCodePoint": 123 }
DELETE /v1/folders/:id # cascade deletes items
POST /v1/folders/:id/api-links { "link": "https://api.example.com" }
DELETE /v1/folders/:id/api-links/:link # link must be URL-encoded
GET /v1/folders/:id/metadata # { totalApis, lastAdded, preview: [5 APIs] }Notifications
bash
GET /v1/notifications/preferences
PATCH /v1/notifications/preferences
# body: { savedApiHealth, newMatchingApis, weeklyDigest, lifecycleUpdates, pricingChanges, trustAlerts }
POST /v1/notifications/events # client page-event tracking
GET /v1/fcm-tokens # push tokens for device
POST /v1/fcm-tokens # register; admin also exposes /admin/v1/* FCM managementPreferences default all true. Disable per-topic. Muted topics skip sends unless marked critical. Dedupe by deviceId+dedupeKey.
Soft upsell (placeholder)
Free: stacks limited (placeholder: 3 stacks). Pro ($19/mo) raises to 20 + unlocks change-alert emails & digest. Free users still save and browse; upgrade is presented as “get more stacks + alerts,” not a block. Hard gating deferred to Phase 2 per decision (3).