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/:id

Folders (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 management

Preferences 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).