Integration catalog and marketplace

Embed
Preview of the card
<a href="https://forumulate.com/p/watchtower/docs/catalog"><img src="https://forumulate.com/api/public/orgs/watchtower/spaces/docs/pages/41105cb8-74f9-42b9-9856-9baf613a549c/social-card.svg?v=3e7ae33eec8b" alt="Integration catalog and marketplace" width="600" height="315"></a>

make catalog (cd go && go run ./tools/catalog) scans the repo and writes docs/integrations/catalog.json: agent integration packs (integrations/*, go/agent/*), connectors (go/internal/connectors/*, cloud pulls, change-source presets), notification channels, uptime check drivers, importers and plugin examples. Entries are grouped by tier (core, extended, community, plugin) with totals, each with {slug, vendor, kind, summary, setup}. go test ./tools/catalog fails when the file is stale or an integrations/* directory has no entry.

At API start the entries are upserted into marketplace_listings (one row per slug, idempotent). Installing a plugin adds a source = plugin listing (plugin-<name>).

  • GET /v1/integrations/catalog?tier&kind&q&limit&cursor (any signed-in caller)

  • GET /v1/integrations/catalog/{slug}

The web catalog (Settings, Integration catalog) shows tier groups and per-vendor setup guidance.

OpenAPI import

PUT /v1/projects/{p}/services/{svc}/api-spec takes an OpenAPI 3.x JSON document (up to 5 MiB), validates it and stores it. GET returns the endpoint list and the distinct path templates as candidate APM endpoint_rules (nothing is applied automatically). YAML must be converted to JSON first (yq -o=json).

Updated