Projects
sfp server API reference for Projects: 9 endpoints.
/sfp/api/projects/config/manual-stepsAuthorization
access-token In: header
Query Parameters
Response Body
curl -X GET "https://example.com/sfp/api/projects/config/manual-steps?repositoryIdentifier=string&environment=string"/sfp/api/projects/config/manual-stepsAuthorization
access-token In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
curl -X PUT "https://example.com/sfp/api/projects/config/manual-steps" \ -H "Content-Type: application/json" \ -d '{ "repositoryIdentifier": "string", "environment": "string", "manualSteps": {} }'/sfp/api/projects/config/build-on-mergeReplaces all branch-scoped domain allow-list rules for the build-on-merge flow.
When build-on-merge runs for a branch, only the domains allow-listed for the first matching branchPattern are built; every other impacted domain is skipped. No matching rule (or an empty list) imposes no restriction.
Branch patterns support wildcards: main, release/*, *. Domains are matched by exact, case-insensitive name (a release config's releaseName).
Authorization
access-token In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
curl -X PUT "https://example.com/sfp/api/projects/config/build-on-merge" \ -H "Content-Type: application/json" \ -d '{ "repositoryIdentifier": "flxbl-io/sf-core", "domainRules": [ { "branchPattern": "main", "allowedDomains": [ "core", "sales" ] } ] }'/sfp/api/projects/config/changesetsReplaces the project-scoped changeset selection mode and template list.
Authorization
access-token In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
curl -X PUT "https://example.com/sfp/api/projects/config/changesets" \ -H "Content-Type: application/json" \ -d '{ "selectionMode": "any", "repositoryIdentifier": "string" }'/sfp/api/projectsCreates a new project entry for repository onboarding. Fails if the project already exists to prevent accidental updates through POST requests. Use this endpoint to register repositories with the SFP server for future operations. Only users with the "owner" role can create projects.
Authorization
access-token In: header
Request Body
application/json
Project details
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
curl -X POST "https://example.com/sfp/api/projects" \ -H "Content-Type: application/json" \ -d '{ "identifier": "flxbl-io/sf-core", "remoteUrl": "https://github.com/flxbl-io/sf-core" }'{ "identifier": "flxbl-io/sf-core", "remoteUrl": "https://github.com/flxbl-io/sf-core", "platform": "github", "createdAt": "2025-06-21T10:00:00.000Z", "updatedAt": "2025-06-21T10:00:00.000Z", "version": 1, "configuration": { "displayName": "SFP Pro", "description": "Enterprise Salesforce build system", "branches": [ "main", "develop" ], "devHubs": [ "devhub1@example.com", "devhub2@example.com" ], "autoReleaseFinalization": true, "workItems": { "provider": "jira", "jiraProjects": [ "DP", "PROJ" ], "baseUrl": "https://company.atlassian.net/browse" }, "metricsAlertConfig": { "validation.successRate": { "warning": 0.85, "alert": 0.7 }, "build.avgCreationTime": { "warning": 15, "alert": 30 } }, "settings": { "buildTimeout": 3600, "parallelBuilds": 4 } }, "integrations": [ { "id": "uuid", "provider": "ai_anthropic", "authType": "api_key", "created_at": "2025-01-01T00:00:00.000Z" } ]}/sfp/api/projectsReturns a list of all projects that have been onboarded to the system. Projects are returned in no particular order. This endpoint is useful for discovering available projects before performing operations on them.
Authorization
access-token In: header
Response Body
application/json
curl -X GET "https://example.com/sfp/api/projects"[ { "identifier": "flxbl-io/sf-core", "remoteUrl": "https://github.com/flxbl-io/sf-core", "platform": "github", "createdAt": "2025-06-21T10:00:00.000Z", "updatedAt": "2025-06-21T10:00:00.000Z", "version": 1, "configuration": { "displayName": "SFP Pro", "description": "Enterprise Salesforce build system", "branches": [ "main", "develop" ], "devHubs": [ "devhub1@example.com", "devhub2@example.com" ], "autoReleaseFinalization": true, "workItems": { "provider": "jira", "jiraProjects": [ "DP", "PROJ" ], "baseUrl": "https://company.atlassian.net/browse" }, "metricsAlertConfig": { "validation.successRate": { "warning": 0.85, "alert": 0.7 }, "build.avgCreationTime": { "warning": 15, "alert": 30 } }, "settings": { "buildTimeout": 3600, "parallelBuilds": 4 } }, "integrations": [ { "id": "uuid", "provider": "ai_anthropic", "authType": "api_key", "created_at": "2025-01-01T00:00:00.000Z" } ] }]/sfp/api/projects/{identifier}Retrieves a project by its repository identifier (e.g., "org/repo"). The identifier must match exactly what was used during project creation. This endpoint supports identifiers with slashes for GitHub-style repositories.
Authorization
access-token In: header
Path Parameters
Repository identifier (e.g., "org/repo")
Response Body
application/json
application/json
curl -X GET "https://example.com/sfp/api/projects/flxbl-io/sf-core"{ "identifier": "flxbl-io/sf-core", "remoteUrl": "https://github.com/flxbl-io/sf-core", "platform": "github", "createdAt": "2025-06-21T10:00:00.000Z", "updatedAt": "2025-06-21T10:00:00.000Z", "version": 1, "configuration": { "displayName": "SFP Pro", "description": "Enterprise Salesforce build system", "branches": [ "main", "develop" ], "devHubs": [ "devhub1@example.com", "devhub2@example.com" ], "autoReleaseFinalization": true, "workItems": { "provider": "jira", "jiraProjects": [ "DP", "PROJ" ], "baseUrl": "https://company.atlassian.net/browse" }, "metricsAlertConfig": { "validation.successRate": { "warning": 0.85, "alert": 0.7 }, "build.avgCreationTime": { "warning": 15, "alert": 30 } }, "settings": { "buildTimeout": 3600, "parallelBuilds": 4 } }, "integrations": [ { "id": "uuid", "provider": "ai_anthropic", "authType": "api_key", "created_at": "2025-01-01T00:00:00.000Z" } ]}/sfp/api/projects/{identifier}Updates an existing project's configuration. Supports partial updates via PATCH semantics. Only owners can update projects. Includes optimistic concurrency control through version checking to prevent concurrent update conflicts.
Renaming: Pass identifier in the body to rename the project. The old identifier is deleted and a new one is created with all existing data.
Authorization
access-token In: header
Path Parameters
Repository identifier (e.g., "org/repo")
Request Body
application/json
Fields to update
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
curl -X PATCH "https://example.com/sfp/api/projects/flxbl-io/sf-core" \ -H "Content-Type: application/json" \ -d '{ "remoteUrl": "https://github.com/flxbl-io/sf-core-renamed" }'{ "identifier": "flxbl-io/sf-core", "remoteUrl": "https://github.com/flxbl-io/sf-core", "platform": "github", "createdAt": "2025-06-21T10:00:00.000Z", "updatedAt": "2025-06-21T10:00:00.000Z", "version": 1, "configuration": { "displayName": "SFP Pro", "description": "Enterprise Salesforce build system", "branches": [ "main", "develop" ], "devHubs": [ "devhub1@example.com", "devhub2@example.com" ], "autoReleaseFinalization": true, "workItems": { "provider": "jira", "jiraProjects": [ "DP", "PROJ" ], "baseUrl": "https://company.atlassian.net/browse" }, "metricsAlertConfig": { "validation.successRate": { "warning": 0.85, "alert": 0.7 }, "build.avgCreationTime": { "warning": 15, "alert": 30 } }, "settings": { "buildTimeout": 3600, "parallelBuilds": 4 } }, "integrations": [ { "id": "uuid", "provider": "ai_anthropic", "authType": "api_key", "created_at": "2025-01-01T00:00:00.000Z" } ]}/sfp/api/projects/{identifier}Permanently deletes a project and its stored configuration. Only owners can delete projects. This does not delete external resources (webhooks, environments, etc.).
Authorization
access-token In: header
Path Parameters
Repository identifier (e.g., "org/repo")
Response Body
application/json
curl -X DELETE "https://example.com/sfp/api/projects/flxbl-io/sf-core"