Add comprehensive API documentation for the reporting endpoint: - Request/response structure - View type inference (did/is/will) - Blank vs explicit zero semantics - Status values and error responses Related to enhanced-allocation change.
3.3 KiB
3.3 KiB
Reporting API Contract
Overview
The Reporting API provides aggregated resource planning and execution data for management analysis. It supports three view types (did/is/will) inferred from date ranges.
Endpoint
GET /api/reports/allocations
Authentication
Requires Bearer token authentication.
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
start_date |
string (YYYY-MM-DD) | Yes | Start of reporting period |
end_date |
string (YYYY-MM-DD) | Yes | End of reporting period |
project_ids[] |
array of UUIDs | No | Filter by specific projects |
member_ids[] |
array of UUIDs | No | Filter by specific team members |
View Types
The view_type is inferred from the date range:
| View Type | Date Range | Description |
|---|---|---|
did |
All dates in past months | Historical execution analysis |
is |
Includes current month | Active planning vs execution |
will |
All dates in future months | Forecast and capacity planning |
Response Structure
{
"period": {
"start": "2026-01-01",
"end": "2026-03-31"
},
"view_type": "will",
"projects": [
{
"id": "uuid",
"code": "PROJ-001",
"title": "Project Name",
"approved_estimate": 3000.0,
"lifecycle_status": "MATCH",
"plan_sum": 2600.0,
"period_planned": 2600.0,
"period_allocated": 2800.0,
"period_variance": 200.0,
"period_status": "OVER",
"months": [
{
"month": "2026-01",
"planned_hours": 1200.0,
"is_blank": false,
"allocated_hours": 1300.0,
"variance": 100.0,
"status": "OVER"
}
]
}
],
"members": [
{
"id": "uuid",
"name": "Team Member",
"period_allocated": 400.0,
"projects": [
{
"project_id": "uuid",
"project_code": "PROJ-001",
"project_title": "Project Name",
"total_hours": 400.0
}
]
}
],
"aggregates": {
"total_planned": 2600.0,
"total_allocated": 2800.0,
"total_variance": 200.0,
"status": "OVER"
}
}
Status Values
| Status | Meaning | Visual |
|---|---|---|
OVER |
Allocated > Planned/Capacity | 🔴 Red |
UNDER |
Allocated < Planned/Capacity | 🟡 Amber |
MATCH |
Allocated = Planned/Capacity | 🟢 Green/Neutral |
Blank vs Zero Distinction
-
Blank plan (
is_blank: true): No plan entry exists for the monthplanned_hours:null- Used for variance: treated as
0
-
Explicit zero (
is_blank: false,planned_hours: 0): Plan was explicitly set to zeroplanned_hours:0- Distinct from blank for reporting accuracy
Dependencies
This endpoint combines data from:
ProjectMonthPlan- Monthly planning dataAllocation- Resource allocationsProject- Project metadata (approved_estimate)TeamMember- Team member capacity
Calculations use:
ReconciliationCalculator- Lifecycle plan vs estimateVarianceCalculator- Period and monthly variances
Error Responses
| Status | Condition |
|---|---|
| 422 | Missing or invalid date parameters |
| 422 | end_date before start_date |
| 401 | Unauthorized (missing/invalid token) |