Skip to main content

Plugins API

The Plugins API exposes the list of loaded plugins (admin only) and a status endpoint with enabled IDs and public (non-secret) config for all authenticated users. Admin can persist enable/disable overrides via PATCH.

Base path: /api/v1/plugins and /api/v1/admin/plugins.


List plugins (admin)

GET /api/v1/plugins

Returns the full list of loaded plugins (metadata, status, config shape). Intended for platform administrators.

Auth

admin:plugins

Response

200 OK

The response body is the array of loaded plugins as returned by the plugin loader. Each item typically includes:

  • id: Plugin ID (e.g. pagerduty, slack-notify)
  • status: enabled | disabled
  • version, name, and other manifest fields
  • Config and metadata as defined by the loader (no secrets).

Exact shape is implementation-defined; the API returns the same structure as used internally (e.g. LoadedPlugin[]).

Errors

StatusCondition
401Not authenticated
403Missing admin:plugins

Example

curl -s -b cookies.txt "https://forgeportal.example.com/api/v1/plugins"

Plugins status (all authenticated)

GET /api/v1/plugins/status

Returns enabled plugin IDs and their public (non-secret) config only. Safe for any authenticated user to see.

Auth

Authenticated user (no specific permission).

Response

200 OK

{
"enabledIds": ["pagerduty", "slack-notify"],
"configs": {
"pagerduty": {
"apiEndpoint": "https://api.pagerduty.com"
},
"slack-notify": {
"defaultChannel": "#alerts"
}
}
}
  • enabledIds: Array of plugin IDs that are currently enabled.
  • configs: Object keyed by plugin ID; values are the public config (secret keys stripped). Only enabled plugins with non-empty public config appear.

Errors

StatusCondition
401Not authenticated

Example

curl -s -b cookies.txt "https://forgeportal.example.com/api/v1/plugins/status"

Update plugin override (admin)

PATCH /api/v1/admin/plugins/:id

Persists an enable/disable override for a plugin. The change takes effect after the server is restarted.

Auth

admin:plugins

Path parameters

NameTypeDescription
idstringPlugin ID (e.g. pagerduty)

Request body

FieldTypeRequiredDescription
enabledbooleanyesWhether the plugin should be enabled after restart.

Response

200 OK

{
"id": "pagerduty",
"enabled": false,
"message": "Override saved. Restart the server for the change to take effect."
}

Errors

StatusCondition
400Body missing or invalid (e.g. enabled not boolean)
404Plugin ID not found in loaded plugins
401Not authenticated
403Missing admin:plugins

Example

curl -s -b cookies.txt -X PATCH "https://forgeportal.example.com/api/v1/admin/plugins/pagerduty" \
-H "Content-Type: application/json" \
-d '{ "enabled": false }'