Calculates capacity for a board cycle: per-resource hours, utilization, and aggregates.
curl --request GET \
--url https://{install}/api/plan/{boardId}/capacity \
--header 'Authorization: Bearer <token>'import requests
url = "https://{install}/api/plan/{boardId}/capacity"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://{install}/api/plan/{boardId}/capacity', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));using RestSharp;
var options = new RestClientOptions("https://{install}/api/plan/{boardId}/capacity");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "Bearer <token>");
var response = await client.GetAsync(request);
Console.WriteLine("{0}", response.Content);<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://{install}/api/plan/{boardId}/capacity",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://{install}/api/plan/{boardId}/capacity"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://{install}/api/plan/{boardId}/capacity")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://{install}/api/plan/{boardId}/capacity")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"boardId": "<string>",
"cycleId": "<string>",
"boardBudgetHours": 123,
"cycleBudgetHours": 123,
"cyclePlannedHours": 123,
"resources": [
{
"userId": "<string>",
"userName": "<string>",
"totalCapacityHours": 123,
"plannedHours": 123,
"availableHours": 123,
"utilizationPercent": 123,
"plannedCost": 123,
"plannedRevenue": 123
}
],
"aggregate": {
"totalCapacityHours": 123,
"totalPlannedHours": 123,
"totalAvailableHours": 123,
"utilizationPercent": 123,
"totalPlannedCost": 123,
"totalPlannedRevenue": 123,
"grossMarginPercent": 123,
"totalLoggedCost": 123,
"totalLoggedRevenue": 123
}
}Planning
Calculates capacity for a board cycle: per-resource hours, utilization, and aggregates.
GET
/
api
/
plan
/
{boardId}
/
capacity
Calculates capacity for a board cycle: per-resource hours, utilization, and aggregates.
curl --request GET \
--url https://{install}/api/plan/{boardId}/capacity \
--header 'Authorization: Bearer <token>'import requests
url = "https://{install}/api/plan/{boardId}/capacity"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://{install}/api/plan/{boardId}/capacity', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));using RestSharp;
var options = new RestClientOptions("https://{install}/api/plan/{boardId}/capacity");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "Bearer <token>");
var response = await client.GetAsync(request);
Console.WriteLine("{0}", response.Content);<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://{install}/api/plan/{boardId}/capacity",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://{install}/api/plan/{boardId}/capacity"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://{install}/api/plan/{boardId}/capacity")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://{install}/api/plan/{boardId}/capacity")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"boardId": "<string>",
"cycleId": "<string>",
"boardBudgetHours": 123,
"cycleBudgetHours": 123,
"cyclePlannedHours": 123,
"resources": [
{
"userId": "<string>",
"userName": "<string>",
"totalCapacityHours": 123,
"plannedHours": 123,
"availableHours": 123,
"utilizationPercent": 123,
"plannedCost": 123,
"plannedRevenue": 123
}
],
"aggregate": {
"totalCapacityHours": 123,
"totalPlannedHours": 123,
"totalAvailableHours": 123,
"utilizationPercent": 123,
"totalPlannedCost": 123,
"totalPlannedRevenue": 123,
"grossMarginPercent": 123,
"totalLoggedCost": 123,
"totalLoggedRevenue": 123
}
}Authorizations
JWT Bearer token. Obtain via the OAuth 2.0 token endpoint.
Path Parameters
The board ID.
Query Parameters
The cycle ID.
Returns unplanned items across the board's whitelisted containers.
Items without a board/cycle assignment that the user can see.
Previous
Returns a resource-by-cycle utilization heatmap for a board.
Next
⌘I