Create a new component item (Epic, Work Package, Todo List, or Test Suite)
Creates a new component item within a project component. Items are the building blocks that structure project work.
What are Component Items? Items are the building blocks within components that organize and structure project work. Each item can be one of four types:
-
Epic: Major sections or phases that group related work packages around a common theme or goal
- Example: “Technical Implementation”, “Design & Development”, “Project Kickoff & Preparation”
- Can contain Work Packages, Todo Lists, or Test Suites
- Can nest other Epics to create complex hierarchies (arbitrary nesting depth)
- Helps track project progress at a strategic level
- TimeFrame is not required for Epics
-
Work Package: Self-contained, clearly defined tasks that deliver tangible results
- Example: “Set up domain and hosting”, “Design homepage layout”, “Configure CMS”
- Can have timeframes/estimates (required field)
- Can contain Questions (to capture customer requirements), Todos (checklist items), and Test Cases (acceptance test steps)
- Can nest other Work Packages for complex tasks
- Acts as a draft before creating tickets in the task management system
-
Todo List: Checklists of sub-steps or checkpoints
- Example: “Kickoff Checklist”, “Quality Control Checklist”, “Go-live Approval”
- Perfect for recurring processes (tests, approvals, installation steps)
- Each todo item within the list can be checked off individually
- TimeFrame is required (estimated time to complete the checklist)
-
Test Suite: Formal acceptance tests for project results
- Example: “Contact Form Tests”, “Responsive Design Check”, “SEO Review”
- Contains multiple test cases with steps and expected results
- Project is considered finished when all test cases within all Test Suites pass
- TimeFrame is required (estimated time to run all tests)
Item Placement: Items can be created at the root level of a component or nested under parent items (Epics or other Work Packages). This allows for flexible project structures that match your workflow.
Content Format: The description and internalNote fields accept HTML or Markdown input and are automatically converted to the internal IDoc format for storage. When retrieved, they are converted back to HTML for easy consumption.
Validation Rules: TimeFrame is required for all item types except Epic. The timeframe represents the estimated effort in hours for completing the item.
/projects/{projectId}/itemsAuthorizationOAuth2 access token · headerrequiredapi:writeAuthorizationBearer token (JWT) · headerrequiredprojectIdstringrequiredfieldsToReturnstringresponseShapestringcompactfullLT-Response-Shapestringfullapplication/jsoncomponentIdstringrequiredconditionsCreateComponentItemConditionDto[]Show propertiesHide properties
CreateComponentItemConditionDtocontainsTypestringSomeAlltargetQuestionIdstringtargetTestCaseIdstringtargetTodoIdstringtargetValuestringtypestringrequiredQuestionAnsweredQuestionNotAnsweredQuestionAnswerContainsQuestionAnswerDoesNotContainQuestionAnswerEqualQuestionAnswerDoesNotEqualTodoIsDoneTodoIsNotDoneTestCasePassedTestCaseFaileddescriptionstringrequirediconobject | nullincludeInSpecificationbooleanrequiredinternalNotestringnamestringrequiredparentIdstring | nulltagsstring[]timeFramenumbertypestringrequiredEpicWorkPackageTodoListTestSuiteidstringrequiredcurl -X POST "https://leadtime.app/api/public/projects/550e8400-e29b-41d4-a716-446655440000/items" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"componentId": "550e8400-e29b-41d4-a716-446655440000",
"conditions": [
{
"containsType": "Some",
"targetQuestionId": "e57dc37b-7693-4d06-b49c-17084b773aff",
"targetTestCaseId": "e57dc37b-7693-4d06-b49c-17084b773aff",
"targetTodoId": "e57dc37b-7693-4d06-b49c-17084b773aff",
"targetValue": "Yes",
"type": "QuestionAnswered"
}
],
"description": "<p>Implement user authentication with OAuth 2.0</p>",
"icon": "faCheckSquare",
"includeInSpecification": true,
"internalNote": "<p>Technical implementation details</p>",
"name": "User Authentication Feature",
"parentId": "a47dc37b-7693-4d06-b49c-17084b773aff",
"tags": [
"550e8400-e29b-41d4-a716-446655440020"
],
"timeFrame": 20,
"type": "WorkPackage"
}'const response = await fetch("https://leadtime.app/api/public/projects/550e8400-e29b-41d4-a716-446655440000/items", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_ACCESS_TOKEN",
"Content-Type": "application/json"
},
body: JSON.stringify({
"componentId": "550e8400-e29b-41d4-a716-446655440000",
"conditions": [
{
"containsType": "Some",
"targetQuestionId": "e57dc37b-7693-4d06-b49c-17084b773aff",
"targetTestCaseId": "e57dc37b-7693-4d06-b49c-17084b773aff",
"targetTodoId": "e57dc37b-7693-4d06-b49c-17084b773aff",
"targetValue": "Yes",
"type": "QuestionAnswered"
}
],
"description": "<p>Implement user authentication with OAuth 2.0</p>",
"icon": "faCheckSquare",
"includeInSpecification": true,
"internalNote": "<p>Technical implementation details</p>",
"name": "User Authentication Feature",
"parentId": "a47dc37b-7693-4d06-b49c-17084b773aff",
"tags": [
"550e8400-e29b-41d4-a716-446655440020"
],
"timeFrame": 20,
"type": "WorkPackage"
})
});import requests
response = requests.post(
"https://leadtime.app/api/public/projects/550e8400-e29b-41d4-a716-446655440000/items",
headers={
"Authorization": "Bearer YOUR_ACCESS_TOKEN",
"Content-Type": "application/json"
},
json={
"componentId": "550e8400-e29b-41d4-a716-446655440000",
"conditions": [
{
"containsType": "Some",
"targetQuestionId": "e57dc37b-7693-4d06-b49c-17084b773aff",
"targetTestCaseId": "e57dc37b-7693-4d06-b49c-17084b773aff",
"targetTodoId": "e57dc37b-7693-4d06-b49c-17084b773aff",
"targetValue": "Yes",
"type": "QuestionAnswered"
}
],
"description": "<p>Implement user authentication with OAuth 2.0</p>",
"icon": "faCheckSquare",
"includeInSpecification": True,
"internalNote": "<p>Technical implementation details</p>",
"name": "User Authentication Feature",
"parentId": "a47dc37b-7693-4d06-b49c-17084b773aff",
"tags": [
"550e8400-e29b-41d4-a716-446655440020"
],
"timeFrame": 20,
"type": "WorkPackage"
},
){
"id": "550e8400-e29b-41d4-a716-446655440001"
}