Skip to main content

Backend types

Port's self-service actions and automations support a variety of backends that can be used when triggered.

The process contains the following steps:

  1. The action is triggered in Port - the trigger can either be a user executing a self-service action via the UI, or an automation triggering an action.
  2. The payload is sent to your backend - the payload, as defined by the action's creator, is sent to your backend. The backend can be a URL, a dedicated Kafka topic or one of your CI/CD workflows/pipelines.
  3. Your backend receives the payload and handles the request - depending on the action, your backend might open a PR, create a cloud resource, provision a new environment, or perform any other logic you would like.
  4. Your backend updates Port on the status of the execution - You can enrich the action run object in Port by adding logs, attaching links to other workflows or pipelines that help fullfil the request and add a final success/fail status once the action is complete.

Supported backends

Port supports the backends listed below.
Examples can be found under each type, under the Self-service examples section in the sidebar.

JSON structure

For both self-service actions and automations, the backend is defined under the invocationMethod object.
The following example shows a backend definition that uses a GitHub workflow:

{
"invocationMethod": {
"type": "GITHUB",
"org": "Port-samples",
"repo": "Port-actions",
"workflow": "reportBug.yaml",
"workflowInputs": {
"port_context": {
"user_first_name": "{{ .trigger.by.user.firstName }}",
"user_last_name": "{{ .trigger.by.user.lastName }}",
"runId": "{{.run.id}}"
},
"short_title": "{{ .inputs.short_title }}",
"description": "{{ .inputs.description }}"
},
"reportWorkflowStatus": true
},
}

Invocation method structure fields

The type field defines the action's backend type, and can have one of the following values: WEBHOOK, GITHUB, GITLAB, KAFKA, UPSERT_ENTITY.

Depending on the backend type you choose, the available fields will be different:

invocationMethod.type should be set to WEBHOOK.

FieldTypeDescriptionExample values
agentbooleanDefines whether to use Port Agent for execution or not.true or false
urlstringDefines the webhook URL to which Port will send the action via an HTTP POST request.https://example.com
methodstringDefines the HTTP method to be used for the request.POST, PUT, DELETE, PATCH
synchronizedbooleanIf true, the action will be executed synchronously.true or false
headersobjectAn object containing the payload headers to be sent to the webhook in each execution, in "key":"value" pairs.
bodyobjectDefines the payload that will be sent to the backend upon execution of the action.
An object containing "key":"value" pairs.