Extensions

An extension is a way to give pipelines more functionality. This might include automatically running your pipeline or printing the results of a run to Slack or more. Pipelines can subscribe to one or more extensions (usually with some individual configuration) and those extensions perform actions on behalf of the pipeline.


List all extensions currently registered

GET/api/extensions

Responses

StatusBodyDescription
200ListExtensionsResponsesuccessful operation
4XXErrorError
5XXErrorError

Compare Gofer's config with the extensions currently running

POST/api/extensions/plan

Rereads Gofer's config file and reports, for each extension, what applying the config would change. Nothing is changed. This backs gofer extension reload. This route is only accessible for admin tokens.

Responses

StatusBodyDescription
200PlanExtensionsResponsesuccessful operation
4XXErrorError
5XXErrorError

Returns details about a specific extension

GET/api/extensions/{extension_id}

Path parameters

NameTypeRequiredDescription
extension_idstringyesThe unique identifier for the target extension.

Responses

StatusBodyDescription
200GetExtensionResponsesuccessful operation
4XXErrorError
5XXErrorError

Permanently delete an extension along with its pipeline subscriptions and stored objects

DELETE/api/extensions/{extension_id}

Only extensions that have already been removed from Gofer's config can be purged; Gofer would just install a configured one again. This route is only accessible for admin tokens.

Path parameters

NameTypeRequiredDescription
extension_idstringyesThe unique identifier for the target extension.

Responses

StatusBodyDescription
204nonesuccessful deletion
4XXErrorError
5XXErrorError

Bring one extension in line with Gofer's config

POST/api/extensions/{extension_id}/apply

Rereads Gofer's config file and installs, updates, starts, or stops the extension to match. The request carries the plan_hash from the plan the operator reviewed; if anything changed since then (the config, the manifest, or a secret) the request is refused so the operator can look at a fresh plan. This route is only accessible for admin tokens.

Path parameters

NameTypeRequiredDescription
extension_idstringyesThe unique identifier for the target extension.

Request body (required): ApplyExtensionRequest

Responses

StatusBodyDescription
200ApplyExtensionResponsesuccessful operation
4XXErrorError
5XXErrorError

Dump extension debug information

GET/api/extensions/{extension_id}/debug

Path parameters

NameTypeRequiredDescription
extension_idstringyesThe unique identifier for the target extension.

Responses

StatusBodyDescription
200DebugResponsesuccessful operation
4XXErrorError
5XXErrorError

Retrieves logs from the extension container

WS/api/extensions/{extension_id}/logs

This endpoint upgrades the connection to a websocket: after the 101 response the server streams data over the socket instead of returning a body.

Path parameters

NameTypeRequiredDescription
extension_idstringyesThe unique identifier for the target extension.

Responses

StatusBodyDescription
101noneNegotiating protocol upgrade from HTTP/1.1 to WebSocket
4XXErrorError
5XXErrorError

Go back to the version of an extension that was running before the last apply

POST/api/extensions/{extension_id}/revert

Meant for when a new version won't start. The extension stays different from Gofer's config until the config is fixed, so it'll show up in the next plan again. This route is only accessible for admin tokens.

Path parameters

NameTypeRequiredDescription
extension_idstringyesThe unique identifier for the target extension.

Responses

StatusBodyDescription
200ApplyExtensionResponsesuccessful operation
4XXErrorError
5XXErrorError

List an extension's subscriptions

GET/api/extensions/{extension_id}/subscriptions

Leaves out disabled subscriptions unless include_disabled is set.

Path parameters

NameTypeRequiredDescription
extension_idstringyesThe unique identifier for the target extension.

Query parameters

NameTypeRequiredDescription
include_disabledbooleannoInclude subscriptions that were turned off. Extensions leave this off when they load their subscriptions on startup, so disabled ones never fire.

Responses

StatusBodyDescription
200ListExtensionSubscriptionsResponsesuccessful operation
4XXErrorError
5XXErrorError