Release Calculator
Calculate the impact of toggling work items on packages and linked releases
Release candidate ID
Work items to exclude
Work items to include
Calculator mode
exclude
Possible values: Analysis results
Release candidate not found
POST /sfp/api/release-candidates/calculator/analyze HTTP/1.1
Host:
Authorization: Bearer JWT
Content-Type: application/json
Accept: */*
Content-Length: 104
{
"releaseCandidateId": "text",
"excludedWorkItems": [
"text"
],
"includedWorkItems": [
"text"
],
"mode": "exclude"
}
{
"candidateId": "text",
"releaseName": "text",
"original": {
"packages": [
{
"name": "text",
"version": "text",
"commitCount": 1,
"workItemCount": 1,
"hasSharedCommits": true
}
],
"workItems": [
{
"id": "text",
"type": "jira",
"packageCount": 1,
"commitCount": 1
}
],
"totalCommits": 1
},
"calculated": {
"packages": [
{
"name": "text",
"version": "text",
"commitCount": 1,
"workItemCount": 1,
"hasSharedCommits": true
}
],
"workItems": [
{
"id": "text",
"type": "jira",
"packageCount": 1,
"commitCount": 1
}
],
"excludedPackages": [
{
"packageName": "text",
"version": "text",
"reason": "no-remaining-commits",
"excludedWorkItems": [
"text"
],
"excludedCommits": 1
}
],
"totalCommits": 1
},
"impact": {
"packagesRemoved": 1,
"workItemsRemoved": 1,
"commitsRemoved": 1,
"linkedReleasesAffected": [
{
"release": {},
"impactType": "full",
"affectedPackages": [
"text"
],
"severity": "low",
"warning": "text"
}
]
},
"warnings": [
{
"type": "shared-commit",
"severity": "info",
"message": "text",
"affectedPackages": [
"text"
],
"affectedReleases": [
"text"
],
"suggestion": "text"
}
],
"suggestions": [
"text"
]
}
Find optimal package configuration for given work items and constraints
Release candidate ID
Target work items to include
Optimization constraints
Optimization results
Release candidate not found
POST /sfp/api/release-candidates/calculator/optimize HTTP/1.1
Host:
Authorization: Bearer JWT
Content-Type: application/json
Accept: */*
Content-Length: 277
{
"releaseCandidateId": "text",
"targetWorkItems": [
"text"
],
"constraints": {
"mustIncludePackages": [
"text"
],
"mustExcludePackages": [
"text"
],
"mustIncludeWorkItems": [
"text"
],
"mustExcludeWorkItems": [
"text"
],
"maxPackages": 1,
"preferExcludePackages": [
"text"
],
"optimizationGoal": "balanced"
}
}
{
"includedPackages": [
"text"
],
"excludedPackages": [
"text"
],
"includedWorkItems": [
"text"
],
"excludedWorkItems": [
"text"
],
"totalCommits": 1,
"metrics": {
"packageCount": 1,
"workItemCount": 1,
"commitCount": 1,
"sharedCommitRatio": 1,
"exclusionSafety": 1
},
"suggestions": [
{
"type": "exclude-package",
"target": "text",
"reason": "text",
"impact": {},
"confidence": "high"
}
]
}
Find safe exclusion strategies for reducing release size
Release candidate ID
Target reduction percentage (0-1, default: 0.2)
List of exclusion strategies
Release candidate not found
GET /sfp/api/release-candidates/calculator/strategies/{candidateId} HTTP/1.1
Host:
Authorization: Bearer JWT
Accept: */*
[
{
"name": "text",
"description": "text",
"excludablePackages": [
"text"
],
"requiredExclusions": [
"text"
],
"safetyScore": 1,
"savings": {
"packages": 1,
"commits": 1,
"percentage": 1
}
}
]
Get dependency graph data for visualization
Release candidate ID
Dependency visualization data
Release candidate not found
GET /sfp/api/release-candidates/calculator/dependencies/{candidateId} HTTP/1.1
Host:
Authorization: Bearer JWT
Accept: */*
{
"nodes": {},
"edges": [
{
"from": "text",
"to": "text",
"type": "contains"
}
],
"statistics": {
"totalWorkItems": 1,
"totalCommits": 1,
"totalPackages": 1,
"sharedCommitRatio": 1
}
}
Find the minimal set of packages needed for specific work items
Minimal package set
Release candidate not found
POST /sfp/api/release-candidates/calculator/minimal-package-set HTTP/1.1
Host:
Authorization: Bearer JWT
Accept: */*
{
"packages": [
"text"
],
"additionalWorkItems": [
"text"
],
"rationale": {
"ANY_ADDITIONAL_PROPERTY": "text"
}
}
Analyze multiple work item combinations in a single request
Batch analysis results
POST /sfp/api/release-candidates/calculator/batch-analyze HTTP/1.1
Host:
Authorization: Bearer JWT
Accept: */*
Batch analysis results
[
{
"candidateId": "text",
"releaseName": "text",
"original": {
"packages": [
{
"name": "text",
"version": "text",
"commitCount": 1,
"workItemCount": 1,
"hasSharedCommits": true
}
],
"workItems": [
{
"id": "text",
"type": "jira",
"packageCount": 1,
"commitCount": 1
}
],
"totalCommits": 1
},
"calculated": {
"packages": [
{
"name": "text",
"version": "text",
"commitCount": 1,
"workItemCount": 1,
"hasSharedCommits": true
}
],
"workItems": [
{
"id": "text",
"type": "jira",
"packageCount": 1,
"commitCount": 1
}
],
"excludedPackages": [
{
"packageName": "text",
"version": "text",
"reason": "no-remaining-commits",
"excludedWorkItems": [
"text"
],
"excludedCommits": 1
}
],
"totalCommits": 1
},
"impact": {
"packagesRemoved": 1,
"workItemsRemoved": 1,
"commitsRemoved": 1,
"linkedReleasesAffected": [
{
"release": {},
"impactType": "full",
"affectedPackages": [
"text"
],
"severity": "low",
"warning": "text"
}
]
},
"warnings": [
{
"type": "shared-commit",
"severity": "info",
"message": "text",
"affectedPackages": [
"text"
],
"affectedReleases": [
"text"
],
"suggestion": "text"
}
],
"suggestions": [
"text"
]
}
]
Was this helpful?