Aggregates¶
Forecast provides aggregate endpoints that return summarized data across projects, people, and placeholders. This guide covers all six aggregate methods: remaining budgeted hours, future scheduled hours, assigned people, and the three heatmap variants.
Remaining budgeted hours¶
Returns remaining budgeted hours for all projects in the account.
Each item is a RemainingBudgetedHoursItem with fields:
| Field | Type | Description |
|---|---|---|
project_id |
int |
Project ID |
budget_by |
str \| None |
Budget type (e.g. "project") |
budget_is_monthly |
bool |
Whether budget resets monthly |
hours |
float \| None |
Remaining hours |
response_code |
int \| None |
API response code |
Future scheduled hours¶
Returns scheduled hours starting from a given date. Accepts either an ISO date string or a date object.
Filtered by project¶
Use future_scheduled_hours_for_project to filter to a single project:
Each item is a FutureScheduledHoursItem with fields:
| Field | Type | Description |
|---|---|---|
project_id |
int \| None |
Project ID |
person_id |
int \| None |
Person ID |
placeholder_id |
int \| None |
Placeholder ID |
allocation |
float \| None |
Allocated hours |
Assigned people¶
Returns a mapping of project ID strings to lists of person IDs assigned within a date range.
Returns a dict, not a list
Unlike other aggregate methods, assigned_people returns dict[str, list[int]] — keys are project
ID strings, values are lists of person ID integers.
Heatmaps¶
Forecast provides three heatmap endpoints, each returning a time-series of allocation data. All accept
from_ (start date), to (end date), an entity ID, and an optional scale parameter ("daily" or
"weekly").
Project heatmap¶
ProjectHeatmapItem fields:
| Field | Type | Description |
|---|---|---|
start_date |
str \| None |
Window start (ISO string) |
end_date |
str \| None |
Window end (ISO string) |
Person heatmap¶
PersonHeatmapItem fields:
| Field | Type | Description |
|---|---|---|
start_date |
str \| None |
Window start |
end_date |
str \| None |
Window end |
daily_allocation |
int \| None |
Daily allocation in minutes |
daily_time_off |
int \| None |
Daily time off in minutes |
Placeholder heatmap¶
PlaceholderHeatmapItem has the same fields as PersonHeatmapItem.
Heatmap dates are strings
Unlike resource models (which use date objects), heatmap items store start_date and end_date
as strings because the API returns them in varying formats depending on the scale.
Summary table¶
| Method | Returns | Key parameters |
|---|---|---|
remaining_budgeted_hours() |
list[RemainingBudgetedHoursItem] |
none |
future_scheduled_hours(from_date) |
list[FutureScheduledHoursItem] |
from_date: str \| date |
future_scheduled_hours_for_project(from_date, project_id) |
list[FutureScheduledHoursItem] |
from_date, project_id |
assigned_people(start_date, end_date) |
dict[str, list[int]] |
start_date: str, end_date: str |
project_heatmap(from_, to, project_id, scale) |
list[ProjectHeatmapItem] |
dates (str), project_id, scale |
person_heatmap(from_, to, person_id, scale) |
list[PersonHeatmapItem] |
dates (str), person_id, scale |
placeholder_heatmap(from_, to, placeholder_id, scale) |
list[PlaceholderHeatmapItem] |
dates (str), placeholder_id, scale |
Next steps¶
- API Reference: Schemas — All aggregate item models
- API Reference: Client — Full method documentation