Release Candidates
sfp server API reference for Release Candidates: 21 endpoints.
/sfp/api/release-candidates/branchesAuthorization
access-token In: header
Query Parameters
Response Body
application/json
curl -X GET "https://example.com/sfp/api/release-candidates/branches?repositoryIdentifier=string"[ "string"]/sfp/api/release-candidatesAuthorization
access-token In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
curl -X POST "https://example.com/sfp/api/release-candidates" \ -H "Content-Type: application/json" \ -d '{ "repositoryIdentifier": "string", "domain": "string", "releaseName": "string", "commitSha": "string", "value": {} }'{ "id": "string", "repositoryIdentifier": "string", "domain": "string", "releaseName": "string", "commitSha": "string", "branch": "string", "tag": "string", "value": {}, "version": 0, "createdAt": "string", "updatedAt": "string", "createdBy": "string", "updatedBy": "string", "status": "pending", "statusChangedAt": "string", "statusChangedBy": "string"}/sfp/api/release-candidatesAuthorization
access-token In: header
Query Parameters
Repository identifier (e.g., flxbl-io/sf-core)
Filter by domain (e.g., core, auth, origination)
Filter by branch (e.g., main, develop)
Limit results (1-200, default: 50)
Offset for pagination (default: 0)
Include finalized candidates, for example when associating manual deployment steps
Filter by status. Statuses: pending, in_progress, aborted. Note: finalized candidates are excluded by default.
Response Body
application/json
curl -X GET "https://example.com/sfp/api/release-candidates?repositoryIdentifier=string"{ "items": [ { "id": "string", "repositoryIdentifier": "string", "domain": "string", "releaseName": "string", "commitSha": "string", "branch": "string", "tag": "string", "value": {}, "version": 0, "createdAt": "string", "updatedAt": "string", "createdBy": "string", "updatedBy": "string", "status": "pending", "statusChangedAt": "string", "statusChangedBy": "string" } ], "total": 0, "limit": 0, "offset": 0}/sfp/api/release-candidates/domainsAuthorization
access-token In: header
Query Parameters
Response Body
curl -X GET "https://example.com/sfp/api/release-candidates/domains?repositoryIdentifier=string"/sfp/api/release-candidates/latestAuthorization
access-token In: header
Query Parameters
Repository identifier (e.g., flxbl-io/sf-core)
Domain name (e.g., core, auth, origination)
Filter by branch (e.g., main, develop)
Response Body
application/json
curl -X GET "https://example.com/sfp/api/release-candidates/latest?repositoryIdentifier=string&domain=string"{ "id": "string", "repositoryIdentifier": "string", "domain": "string", "releaseName": "string", "commitSha": "string", "branch": "string", "tag": "string", "value": {}, "version": 0, "createdAt": "string", "updatedAt": "string", "createdBy": "string", "updatedBy": "string", "status": "pending", "statusChangedAt": "string", "statusChangedBy": "string"}/sfp/api/release-candidates/by-commit/{commitSha}Authorization
access-token In: header
Path Parameters
Git commit SHA
Query Parameters
Repository identifier (e.g., flxbl-io/sf-core)
Response Body
curl -X GET "https://example.com/sfp/api/release-candidates/by-commit/string?repositoryIdentifier=string"/sfp/api/release-candidates/{id}Authorization
access-token In: header
Path Parameters
Release candidate ID
Response Body
application/json
curl -X GET "https://example.com/sfp/api/release-candidates/string"{ "id": "string", "repositoryIdentifier": "string", "domain": "string", "releaseName": "string", "commitSha": "string", "branch": "string", "tag": "string", "value": {}, "version": 0, "createdAt": "string", "updatedAt": "string", "createdBy": "string", "updatedBy": "string", "status": "pending", "statusChangedAt": "string", "statusChangedBy": "string"}/sfp/api/release-candidates/{id}Authorization
access-token In: header
Path Parameters
Release candidate ID
Response Body
curl -X DELETE "https://example.com/sfp/api/release-candidates/string"/sfp/api/release-candidates/{id}/compareCompares the release candidate packages against packages installed in a registered environment. When includeChangelog=true, computes detailed changelog with commits and work items for changed packages.
Authorization
access-token In: header
Path Parameters
Release candidate ID
Query Parameters
Include detailed changelog with commits and work items (default: false)
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
curl -X POST "https://example.com/sfp/api/release-candidates/string/compare" \ -H "Content-Type: application/json" \ -d '{}'{ "releaseCandidate": { "id": "string", "repositoryIdentifier": "string", "domain": "string", "releaseName": "string", "commitSha": "string", "branch": "string", "tag": "string", "value": {}, "version": 0, "createdAt": "string", "updatedAt": "string", "createdBy": "string", "updatedBy": "string", "status": "pending", "statusChangedAt": "string", "statusChangedBy": "string" }, "environment": {}, "comparison": { "packagesToInstall": [ { "name": "string", "type": "string", "isOutOfSync": true, "versions": { "property1": {}, "property2": {} } } ], "packagesToUpdate": [ { "name": "string", "type": "string", "isOutOfSync": true, "versions": { "property1": {}, "property2": {} } } ], "unchanged": [ { "name": "string", "type": "string", "isOutOfSync": true, "versions": { "property1": {}, "property2": {} } } ], "totalChanges": 0 }, "estimatedDeploymentTime": 0, "changelog": {}, "linkedCandidates": {}}/sfp/api/release-candidates/{id}/compare-to-packagesCompares the release candidate packages against a provided set of package versions. Useful for comparing RC against local git state (from artifact tags at a specific ref). When includeChangelog=true, computes detailed changelog with commits and work items for changed packages.
Authorization
access-token In: header
Path Parameters
Release candidate ID
Query Parameters
Include detailed changelog with commits and work items (default: false)
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
curl -X POST "https://example.com/sfp/api/release-candidates/string/compare-to-packages" \ -H "Content-Type: application/json" \ -d '{ "packages": { "sales-pkg": "1.4.44.10", "core-pkg": "2.0.0" } }'{ "releaseCandidate": { "id": "string", "repositoryIdentifier": "string", "domain": "string", "releaseName": "string", "commitSha": "string", "branch": "string", "tag": "string", "value": {}, "version": 0, "createdAt": "string", "updatedAt": "string", "createdBy": "string", "updatedBy": "string", "status": "pending", "statusChangedAt": "string", "statusChangedBy": "string" }, "baseLabel": "string", "comparison": {}, "changelog": {}, "linkedCandidates": {}}/sfp/api/release-candidates/{id}/changesAuthorization
access-token In: header
Path Parameters
Release candidate ID
Query Parameters
Compare changes since this commit SHA or date
Response Body
application/json
curl -X GET "https://example.com/sfp/api/release-candidates/string/changes"{ "packages": [ "string" ], "workItems": [ "string" ], "commits": [ "string" ]}/sfp/api/release-candidates/by-branch/{branchName}Bulk-deletes all release candidates associated with a given branch. Rejects if the branch is a configured project branch or part of a cascade.
Authorization
access-token In: header
Path Parameters
Branch name (e.g., unbundle-sales-15MAR26)
Query Parameters
Repository identifier (e.g., flxbl-io/sf-core)
Response Body
application/json
curl -X DELETE "https://example.com/sfp/api/release-candidates/by-branch/string?repositoryIdentifier=string"{ "branch": "string", "deletedCandidates": [ { "id": "string", "releaseName": "string", "domain": "string" } ], "deletedCount": 0}/sfp/api/release-candidates/{id}/statusAuthorization
access-token In: header
Path Parameters
Release candidate ID
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
curl -X PATCH "https://example.com/sfp/api/release-candidates/string/status" \ -H "Content-Type: application/json" \ -d '{ "status": "pending" }'{ "id": "string", "repositoryIdentifier": "string", "domain": "string", "releaseName": "string", "commitSha": "string", "branch": "string", "tag": "string", "value": {}, "version": 0, "createdAt": "string", "updatedAt": "string", "createdBy": "string", "updatedBy": "string", "status": "pending", "statusChangedAt": "string", "statusChangedBy": "string"}/sfp/api/release-candidates/findAuthorization
access-token In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
curl -X POST "https://example.com/sfp/api/release-candidates/find" \ -H "Content-Type: application/json" \ -d '{ "repositoryIdentifier": "string", "domain": "string", "releaseName": "string" }'{ "id": "string", "repositoryIdentifier": "string", "domain": "string", "releaseName": "string", "commitSha": "string", "branch": "string", "tag": "string", "value": {}, "version": 0, "createdAt": "string", "updatedAt": "string", "createdBy": "string", "updatedBy": "string", "status": "pending", "statusChangedAt": "string", "statusChangedBy": "string"}/sfp/api/release-candidates/status-by-nameAuthorization
access-token In: header
Response Body
application/json
curl -X PATCH "https://example.com/sfp/api/release-candidates/status-by-name"{ "id": "string", "repositoryIdentifier": "string", "domain": "string", "releaseName": "string", "commitSha": "string", "branch": "string", "tag": "string", "value": {}, "version": 0, "createdAt": "string", "updatedAt": "string", "createdBy": "string", "updatedBy": "string", "status": "pending", "statusChangedAt": "string", "statusChangedBy": "string"}/sfp/api/release-candidates/abortMarks a release candidate as aborted. Once aborted, the release candidate's status cannot be changed. Note: Finalized release candidates cannot be aborted.
Authorization
access-token In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
curl -X POST "https://example.com/sfp/api/release-candidates/abort" \ -H "Content-Type: application/json" \ -d '{ "repositoryIdentifier": "string", "domain": "string", "releaseName": "string" }'{ "id": "string", "repositoryIdentifier": "string", "domain": "string", "releaseName": "string", "commitSha": "string", "branch": "string", "tag": "string", "value": {}, "version": 0, "createdAt": "string", "updatedAt": "string", "createdBy": "string", "updatedBy": "string", "status": "pending", "statusChangedAt": "string", "statusChangedBy": "string"}/sfp/api/release-candidates/update-packagesAllows excluding packages from a release candidate or overriding their versions. Note: Cannot update release candidates with locked statuses (finalized, aborted).
Authorization
access-token In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
curl -X PATCH "https://example.com/sfp/api/release-candidates/update-packages" \ -H "Content-Type: application/json" \ -d '{ "repositoryIdentifier": "string", "domain": "string", "releaseName": "string" }'{ "id": "string", "repositoryIdentifier": "string", "domain": "string", "releaseName": "string", "commitSha": "string", "branch": "string", "tag": "string", "value": {}, "version": 0, "createdAt": "string", "updatedAt": "string", "createdBy": "string", "updatedBy": "string", "status": "pending", "statusChangedAt": "string", "statusChangedBy": "string"}/sfp/api/release-candidates/release-eventCalled when a release is deployed to an environment. This endpoint automatically updates the release candidate status based on the environment category and deployment status: - Only successful deployments (Success) trigger status progression - Any successful deployment → status becomes 'in_progress' (if currently pending) - Auto-finalization occurs only when deployed to ALL release category environments for the domain (if autoReleaseFinalization is enabled in project settings)
Authorization
access-token In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
curl -X POST "https://example.com/sfp/api/release-candidates/release-event" \ -H "Content-Type: application/json" \ -d '{ "repositoryIdentifier": "string", "domain": "string", "releaseName": "string", "environmentName": "string" }'{ "updated": true, "newStatus": {}, "previousStatus": {}, "intermediateCandidatesFinalized": 0, "finalizationPending": true, "message": "string"}/sfp/api/release-candidates/rolling-analysis/{repository}/{domain}Performs comprehensive rolling analysis showing progression from last completed release to latest candidate. Results are cached (TTL configurable via ROLLING_ANALYSIS_CACHE_TTL_SECONDS env var, default 15 minutes).
Authorization
access-token In: header
Path Parameters
Repository identifier (e.g., flxbl-io/sf-core)
Domain name (e.g., core, auth, origination)
Query Parameters
Filter by branch (e.g., main, develop)
Include package changelogs (default: false)
Bypass cache and fetch fresh data (default: false)
Header Parameters
Cache key used for this request
HIT if served from cache, MISS if freshly computed
Response Body
application/json
curl -X GET "https://example.com/sfp/api/release-candidates/rolling-analysis/string/string"{ "repository": "string", "domain": "string", "baseline": { "releaseName": "string", "createdAt": "string", "completedAt": "string", "deployedEnvironments": [ "string" ], "packages": { "property1": "string", "property2": "string" }, "isDefaultBaseline": true, "branch": "string" }, "orchestrationOrder": [ "string" ], "currentEnvironmentStates": { "property1": { "currentRelease": "string", "packages": { "property1": "string", "property2": "string" } }, "property2": { "currentRelease": "string", "packages": { "property1": "string", "property2": "string" } } }, "candidates": [ { "id": "string", "releaseName": "string", "branch": "string", "commitSha": "string", "createdAt": "string", "incrementalChanges": { "packages": { "added": [ { "name": "string", "version": "string" } ], "updated": [ { "name": "string", "fromVersion": "string", "toVersion": "string" } ], "removed": [ { "name": "string", "version": "string" } ] }, "summary": { "totalPackageChanges": 0, "totalCommits": 0, "totalWorkItems": 0 } }, "cumulativeChanges": { "packages": { "added": [ { "name": "string", "version": "string" } ], "updated": [ { "name": "string", "fromVersion": "string", "toVersion": "string" } ], "removed": [ { "name": "string", "version": "string" } ] }, "summary": { "totalPackageChanges": 0, "totalCommits": 0, "totalWorkItems": 0 }, "cumulativeSummary": { "estimatedDeploymentTime": 0 } } } ], "candidatesByBranch": { "byBranch": { "property1": [ { "id": "string", "releaseName": "string", "branch": "string", "commitSha": "string", "createdAt": "string", "incrementalChanges": { "packages": { "added": [ { "name": "string", "version": "string" } ], "updated": [ { "name": "string", "fromVersion": "string", "toVersion": "string" } ], "removed": [ { "name": "string", "version": "string" } ] }, "summary": { "totalPackageChanges": 0, "totalCommits": 0, "totalWorkItems": 0 } }, "cumulativeChanges": { "packages": { "added": [ { "name": "string", "version": "string" } ], "updated": [ { "name": "string", "fromVersion": "string", "toVersion": "string" } ], "removed": [ { "name": "string", "version": "string" } ] }, "summary": { "totalPackageChanges": 0, "totalCommits": 0, "totalWorkItems": 0 }, "cumulativeSummary": { "estimatedDeploymentTime": 0 } } } ], "property2": [ { "id": "string", "releaseName": "string", "branch": "string", "commitSha": "string", "createdAt": "string", "incrementalChanges": { "packages": { "added": [ { "name": "string", "version": "string" } ], "updated": [ { "name": "string", "fromVersion": "string", "toVersion": "string" } ], "removed": [ { "name": "string", "version": "string" } ] }, "summary": { "totalPackageChanges": 0, "totalCommits": 0, "totalWorkItems": 0 } }, "cumulativeChanges": { "packages": { "added": [ { "name": "string", "version": "string" } ], "updated": [ { "name": "string", "fromVersion": "string", "toVersion": "string" } ], "removed": [ { "name": "string", "version": "string" } ] }, "summary": { "totalPackageChanges": 0, "totalCommits": 0, "totalWorkItems": 0 }, "cumulativeSummary": { "estimatedDeploymentTime": 0 } } } ] }, "all": [ { "id": "string", "releaseName": "string", "branch": "string", "commitSha": "string", "createdAt": "string", "incrementalChanges": { "packages": { "added": [ { "name": "string", "version": "string" } ], "updated": [ { "name": "string", "fromVersion": "string", "toVersion": "string" } ], "removed": [ { "name": "string", "version": "string" } ] }, "summary": { "totalPackageChanges": 0, "totalCommits": 0, "totalWorkItems": 0 } }, "cumulativeChanges": { "packages": { "added": [ { "name": "string", "version": "string" } ], "updated": [ { "name": "string", "fromVersion": "string", "toVersion": "string" } ], "removed": [ { "name": "string", "version": "string" } ] }, "summary": { "totalPackageChanges": 0, "totalCommits": 0, "totalWorkItems": 0 }, "cumulativeSummary": { "estimatedDeploymentTime": 0 } } } ] }, "summary": { "deploymentPipeline": { "environmentStatus": [ { "environment": "string", "currentRelease": "string", "candidatesInQueue": [ "string" ] } ], "blockers": [ { "environment": "string", "blockedCandidate": "string", "reason": "string" } ] }, "progressMetrics": { "candidatesFullyDeployed": 0, "candidatesInProgress": 0, "candidatesPending": 0, "estimatedTimeToFullDeployment": 0 }, "baselineToLatestSummary": { "totalCandidates": 0, "totalUniqueWorkItems": 0, "totalUniqueCommits": 0, "packageProgressions": [ { "name": "string", "journey": [ { "version": "string", "candidateIndex": 0 } ] } ] }, "branchAnalysis": { "mainBranch": "string", "featureBranches": [ { "branch": "string", "candidateCount": 0, "firstCandidate": "string", "lastCandidate": "string" } ] } }, "analyzedAt": "string"}/sfp/api/release-candidates/rolling-analysis/{repository}/{domain}/environment/{environment}Analyzes progression for a specific environment including pending candidates
Authorization
access-token In: header
Path Parameters
Repository identifier (e.g., myorg/myrepo)
Domain name
Environment name
Query Parameters
Include package changelogs
Response Body
curl -X GET "https://example.com/sfp/api/release-candidates/rolling-analysis/string/string/environment/string"/sfp/api/release-candidates/rolling-analysis/{repository}/{domain}/environment/{environment}/riskProvides risk assessment for the next deployment to a specific environment
Authorization
access-token In: header
Path Parameters
Repository identifier (e.g., myorg/myrepo)
Domain name
Environment name
Response Body
curl -X GET "https://example.com/sfp/api/release-candidates/rolling-analysis/string/string/environment/string/risk"