Better discovery
A REST API makes it easier to search, filter, paginate, and inspect plugin versions.
The registry currently ships as a static plugins.json index served from GitHub Pages. The Registry Web Service is the next phase: a Go backend that will power registry.semrel.io with richer discovery and management features.
Better discovery
A REST API makes it easier to search, filter, paginate, and inspect plugin versions.
Operational workflows
Admin endpoints unlock managed plugin and version updates instead of editing generated files by hand.
Future UI
The backend creates a foundation for a browser-based registry UI and later an admin dashboard.
plugins.json served through GitHub Pagesregistry.semrel.io| Endpoint | Purpose |
|---|---|
GET /health | Health check for load balancers and deployment verification |
GET /api/v1/plugins | List plugins with pagination and optional category, search, and sort filters |
GET /api/v1/plugins/:id | Fetch a single plugin by numeric ID or plugin name |
GET /api/v1/plugins/:id/versions | List versions for a plugin with limit and offset |
POST /api/v1/plugins | Create a plugin record (admin token required) |
PUT /api/v1/plugins/:id | Update plugin metadata (admin token required) |
DELETE /api/v1/plugins/:id | Soft-delete a plugin (admin token required) |
POST /api/v1/plugins/:id/versions | Create a plugin version record (admin token required) |
GET /api/v1/admin/status | Placeholder admin status endpoint for future dashboard work |
The current backend skeleton uses:
golang-migrate to run SQL migrations automatically at startupImportant runtime settings:
| Variable | Purpose |
|---|---|
PORT | HTTP listen address |
DATABASE_URL | PostgreSQL connection string |
MIGRATE_DIR | Migration directory loaded on startup |
ENVIRONMENT | Runtime mode such as dev or prod |
ADMIN_TOKEN | Bearer token protecting admin endpoints |
Local development starts PostgreSQL through docker compose and runs the API with go run main.go.
docker compose up -dcp .env.example .envgo run main.gocurl http://localhost:8080/healthA browser-based admin dashboard is planned for a later phase. The expected goals are:
For now, the API contains the backend foundations and a placeholder GET /api/v1/admin/status route that will evolve alongside the dashboard work.