Project staffing status
Returns aggregated staffing coverage for a project: planned vs. allocated hours by discipline, open role gaps, timeline signals, and delivery risk. Not a raw staffing CRUD endpoint — designed for dashboards, BI tools, and capacity alerts.
GET
/api/v1/projects/:id/staffing-statusAuthorization
staffing:readapi key scoperequiredRequired scope when calling with an API key.
project:staffing_readsession capabilityoptionalRequired capability when calling with a signed-in session.
Path parameters
idstringrequiredProject ID
Example: proj_abc123
Request
curl -X GET "https://www.digitalstack360.com/api/v1/projects/proj_abc123/staffing-status" \
-H "Authorization: Bearer $DS_API_KEY"Examples use a placeholder key from your environment. Store your key in $DS_API_KEY — never commit it.
Response
200 OK
{
"data": {
"project_id": "proj_abc123",
"project_name": "Website Replatform",
"staffing_status": "watch",
"staffing_risk": "medium",
"coverage": {
"planned_hours": 1200,
"allocated_hours": 1020,
"coverage_percent": 85,
"open_role_line_count": 4
},
"by_discipline": [
{
"discipline": "engineering",
"planned_hours": 600,
"allocated_hours": 480,
"gap_hours": 120,
"coverage_percent": 80,
"risk": "medium"
}
],
"open_requests": {
"count": 2,
"open_role_line_count": 4,
"total_gap_hours": 180,
"pending_count": 1,
"by_discipline": [
{
"discipline": "engineering",
"role_line_count": 2,
"gap_hours": 120
}
]
},
"timeline": {
"earliest_unfilled_start": "2026-06-18",
"days_until_earliest_gap": 21
},
"alerts": [
{
"type": "role_gap",
"severity": "warning",
"message": "Engineering allocation is 120 hours short of plan (80% covered)."
}
],
"updated_at": "2026-05-13T09:00:00.000Z"
}
}Errors
401
missing_authNo credentials provided
401
invalid_api_keyAPI key is invalid or revoked
403
scope_insufficientKey lacks staffing:read scope
404
not_foundProject not found or not in your workspace