Get detailed period-by-period breakdown of support contingents
Retrieves a detailed period-by-period breakdown of all support contingents for a specific project.
What are Support Contingents? Support contingents are retainer plans that define allocated hours and pricing for support periods. They help manage support contracts with predefined hours, rates, and transferability of unused hours.
What is returned:
- All support contingents for the project
- For each contingent: period-by-period breakdown from start date until present day
- Each period includes: start/end dates, allocated hours, hours from previous period (if transferable), consumed hours, and list of tasks
- Tasks include: title, short number, hours billed, invoice number (if billed), and unbilled flag (if in progress)
- Current period includes unbilled tasks with their spent hours
- Periods are sorted newest first, active contingents appear before inactive ones
- Tasks within each period are sorted with unbilled tasks first, then by short number
Note: Requires project access and Projects.canSeeSupportContingentDetails permission.
GET
/projects/{id}/support-contingents-detailsAuthorization
AuthorizationOAuth2 access token · headerrequiredScopes:
api:reador
AuthorizationBearer token (JWT) · headerrequiredPath parameters
idstringrequiredResponses
200Support contingents breakdown retrieved successfully
Array of
SupportContingentWithBreakdownResponseDtocreatedAtstringrequiredISO 8601 timestamp when the contingent was created
frequencynumberrequiredFrequency in months for the contingent period
fromDatestringrequiredStart date of the contingent period (ISO 8601 date format)
hoursnumberrequiredTotal hours allocated for the contingent period
idstringrequiredUnique identifier for the support contingent (UUID)
periodsSupportContingentPeriodDto[]requiredPeriod-by-period breakdown of the contingent, from start until present day
Show propertiesHide properties
Array of
SupportContingentPeriodDtoconsumedHoursnumberrequiredHours consumed in this period (from invoices)
hasNoEndDatebooleanFlag indicating if this period has no end date (for frequency=0 contingents with null toDate). When true, periodEnd represents the current date for display purposes, but the period is actually open-ended.
hoursnumberrequiredHours allocated for this period
hoursFromPreviousnumberrequiredHours transferred from previous period (only applicable for transferable contingents)
isCurrentPeriodbooleanrequiredFlag indicating if this is the current active period
periodEndstringrequiredEnd date of the period (ISO 8601 date format)
periodStartstringrequiredStart date of the period (ISO 8601 date format)
tasksSupportContingentPeriodTaskDto[]requiredList of tasks billed or unbilled in this period
Show propertiesHide properties
Array of
SupportContingentPeriodTaskDtohoursBillednumberrequiredHours billed/consumed for this task
idstringrequiredUnique identifier for the task (UUID)
invoiceNumberobjectInvoice number if the task is billed, null if unbilled
isUnbilledbooleanFlag indicating if this task is unbilled (in progress)
shortNumbernumberrequiredShort number of the task
titlestringrequiredTitle of the task
pricenumberrequiredTotal price for the contingent period
projectIdstringrequiredID of the project this contingent belongs to (UUID)
ratenumberrequiredCalculated hourly rate (price / hours). Automatically computed.
titlestringrequiredTitle or name of the support contingent plan
toDatestringEnd date of the contingent period (ISO 8601 date format). If not set, the contingent is active forever.
transferablebooleanrequiredWhether unused hours can be transferred to the next period
updatedAtstringrequiredISO 8601 timestamp when the contingent was last updated
401Unauthorized - Invalid or missing authentication token
403Forbidden - Insufficient API scopes or permissions
Request
curl -X GET "https://leadtime.app/api/public/projects/string/support-contingents-details" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"const response = await fetch("https://leadtime.app/api/public/projects/string/support-contingents-details", {
method: "GET",
headers: {
"Authorization": "Bearer YOUR_ACCESS_TOKEN"
}
});import requests
response = requests.get(
"https://leadtime.app/api/public/projects/string/support-contingents-details",
headers={
"Authorization": "Bearer YOUR_ACCESS_TOKEN"
},
)Response
[
{
"createdAt": "2024-01-15T10:00:00Z",
"frequency": 12,
"fromDate": "2025-01-01",
"hours": 120,
"id": "550e8400-e29b-41d4-a716-446655440000",
"periods": [
{
"consumedHours": 15.5,
"hasNoEndDate": false,
"hours": 40,
"hoursFromPrevious": 10,
"isCurrentPeriod": true,
"periodEnd": "2025-11-30",
"periodStart": "2025-11-01",
"tasks": [
{
"hoursBilled": 5.5,
"id": "550e8400-e29b-41d4-a716-446655440000",
"invoiceNumber": "INV-2025-001",
"isUnbilled": false,
"shortNumber": 1234,
"title": "Fix bug in payment module"
}
]
}
],
"price": 10000,
"projectId": "550e8400-e29b-41d4-a716-446655440001",
"rate": 83.33,
"title": "Maintenance flatrate",
"toDate": "2025-12-31",
"transferable": false,
"updatedAt": "2024-01-20T14:30:00Z"
}
]Unauthorized - Invalid or missing authentication token
Forbidden - Insufficient API scopes or permissions