For the complete documentation index, see llms.txt. This page is also available as Markdown.

Integrations

Integrations allow you to securely store and manage credentials for external services like Jira and GitHub. These credentials are encrypted at rest using AES-256 and can be scoped to specific projects or made globally available.

Key Concepts

What is an Integration?

An integration is a secure credential store that connects sfp server to external services. For example:

  • Jira integration: Stores your Jira API credentials so sfp can fetch work items, link commits to issues, and track deployment status

  • GitHub integration: Stores GitHub tokens for repository access, PR comments, and status checks

Global vs Project-Scoped Integrations

Scope
Use Case
Example

Global (isGlobal: true)

Single set of credentials shared across all projects

Company-wide Jira instance

Project-scoped (projects: [...])

Credentials specific to certain repositories

Per-repo GitHub App tokens

When to use global integrations:

  • You have one Jira instance for all projects

  • You want a fallback credential when no project-specific one exists

When to use project-scoped integrations:

  • Different teams use different Jira projects

  • You need separate GitHub tokens per repository

  • Security requires credential isolation between projects

Authentication Types

Type
Provider
Use Case

pat

GitHub

Personal Access Token for API access

oauth

GitHub, Jira

OAuth flow for user-delegated access

app

GitHub

GitHub App installation token

basic_auth

Jira

Email + API token (recommended for Jira Cloud)

API Reference

Create Integration

Register a new integration with encrypted credentials.

Request Body:

Field
Type
Required
Description

provider

string

Yes

Service provider: github or jira

authType

string

Yes

Authentication type: pat, oauth, app, or basic_auth

credentials

object

Yes

Provider-specific credentials (see examples below)

isGlobal

boolean

No

Set true for global integration

projects

string[]

No

Project identifiers (required if not global)

config

object

No

Provider-specific configuration

Example: Global Jira Integration

Example: Project-Scoped GitHub Integration

Get Credentials

Retrieve stored credentials for use in automation. All access is audited.

Query Parameters:

Parameter
Required
Description

provider

No

Filter by provider (github, jira)

project

No

Filter by project identifier

Example:

Response:

Complete Workflow Example

Here's a typical setup workflow for a new team:

1. Register Your Project

2. Create a Global Jira Integration

Since most teams share a single Jira instance:

3. Create Project-Scoped GitHub Integration

For repository-specific access:

4. Use in Your Pipeline

Once configured, sfp commands automatically use the stored credentials:

Security Considerations

  • Encryption: All credentials are encrypted at rest using AES-256 via Supabase pgcrypto

  • Audit Logging: Every credential access is logged with actor information

  • Least Privilege: Use project-scoped integrations when possible to limit blast radius

  • Token Rotation: Regularly rotate API tokens and update integrations accordingly

Troubleshooting

"Either isGlobal or projects must be specified"

You must specify either isGlobal: true OR provide a projects array. You cannot omit both.

"Project 'xyz' not found"

The project identifier must match an existing registered project. List projects first:

"No integration found for project=xyz"

Either no integration exists for that project, or the integration is not scoped to include it. Check if a global integration exists or create a project-scoped one.

Was this helpful?