Skip to main content

Overview

The Marketplace API powers the in-app catalog described in the Marketplace guide. It returns the full catalog of playbooks, apps, and books, and it manages which department playbooks are mounted (active) in a workspace. All endpoints are scoped to the requesting workspace. Every endpoint returns 200 on success and 500 with an error field if the operation fails.

List marketplace items

Returns the full catalog for the current workspace. Playbook entries include per-workspace mount state; apps and books are the same for every workspace.
Key response fields:
  • playbooks[].isMounted: whether the playbook is active in the workspace. Mounted playbooks report status: "Mounted & Active"; unmounted playbooks report status: "Available to Mount".
  • apps[].launchUrl: the destination the app card opens. External apps (isExternal: true) open in a new tab; in-app destinations (for example, the Founder Signal System’s diagnostic intake) are app routes.
  • apps[].isBetaOnly and apps[].betaTierRequired: beta gating. The client checks enrollment before launching beta-only apps.
  • books[].gumroadUrl: the Gumroad product page for the book.
  • mountedCount: number of playbooks currently mounted in the workspace.
If the workspace has no subscription records yet, the response seeds the Marketing (mkt-playbook) and Operations (ops-playbook) playbooks as mounted defaults.

List packages

Alias for GET /api/marketplace/items. Returns the same payload.

Mount a playbook

Mounts the playbook identified by :id (for example, sal-playbook) into the current workspace. If a subscription record already exists, the API reactivates it with status active. Otherwise, the API creates a new record.
Valid playbook IDs: mkt-playbook, sal-playbook, ops-playbook, fin-playbook, ful-playbook, cul-playbook, aft-playbook.

Subscribe to a package

Alias for POST /api/marketplace/mount/:id. Mounts the package identified by :packageId and returns the same payload.

Unmount a playbook

Removes the playbook from the workspace’s active entitlements by setting its subscription status to canceled. The playbook remains in the catalog and can be mounted again later.

Error handling

All Marketplace endpoints return 500 with a JSON error body when the operation fails:
If the database is temporarily unavailable, mount and unmount operations fall back to an in-memory subscription store so the workspace state stays consistent within the running session.