Projects API
Project management with tasks, sprints, timesheets, resource allocation, billing rates, and expense tracking.
All endpoints prefixed with /api/v1/project
Core project records with phases, milestones, and budget tracking.
/api/v1/project/projects Create a new project.
Auth: Bearer token · project.create
Request Body
{
"name": "Website Redesign",
"code": "WR-001",
"description": "Complete website overhaul",
"startDate": "2026-07-01",
"endDate": "2026-09-30",
"budget": 50000,
"currency": "USD",
"status": "planning",
"managerId": 1
} /api/v1/project/projects List projects with pagination and filtering.
Auth: Bearer token · project.view
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| page | number | Page number |
| limit | number | Items per page |
| search | string | Search by name or code |
| status | string | Filter by status |
| managerId | number | Filter by manager |
/api/v1/project/projects/stats Get project statistics.
Auth: Bearer token · project.view
/api/v1/project/projects/:id Get project by ID.
Auth: Bearer token · project.view
/api/v1/project/projects/:id Update a project.
Auth: Bearer token · project.edit
/api/v1/project/projects/:id Delete a project.
Auth: Bearer token · project.delete
/api/v1/project/projects/:id/phases List phases for a project.
Auth: Bearer token · project.view
/api/v1/project/projects/:id/phases Create a phase for a project.
Auth: Bearer token · project.create
/api/v1/project/projects/:id/milestones List milestones for a project.
Auth: Bearer token · project.view
/api/v1/project/projects/:id/milestones Create a milestone for a project.
Auth: Bearer token · project.create
Task management with assignments, priorities, and dependencies.
/api/v1/project/tasks Create a new task.
Auth: Bearer token · project.create
Request Body
{
"projectId": 1,
"title": "Design mockups",
"description": "Create UI mockups",
"assigneeId": 2,
"priority": "high",
"status": "todo",
"dueDate": "2026-07-15",
"estimatedHours": 16,
"sprintId": 1
} /api/v1/project/tasks List tasks with pagination and filtering.
Auth: Bearer token · project.view
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| page | number | Page number |
| limit | number | Items per page |
| projectId | number | Filter by project |
| assigneeId | number | Filter by assignee |
| status | string | Filter by status |
| priority | string | Filter by priority |
| sprintId | number | Filter by sprint |
/api/v1/project/tasks/kanban Get Kanban board view grouped by status.
Auth: Bearer token · project.view
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| projectId | number | Filter by project |
| sprintId | number | Filter by sprint |
/api/v1/project/tasks/:id Get task by ID.
Auth: Bearer token · project.view
/api/v1/project/tasks/:id Update a task.
Auth: Bearer token · project.edit
/api/v1/project/tasks/:id Delete a task.
Auth: Bearer token · project.delete
Agile sprint planning with velocity tracking.
/api/v1/project/sprints Create a new sprint.
Auth: Bearer token · project.create
Request Body
{
"projectId": 1,
"name": "Sprint 1",
"startDate": "2026-07-01",
"endDate": "2026-07-14",
"goal": "Complete initial designs"
} /api/v1/project/sprints List sprints with pagination and filtering.
Auth: Bearer token · project.view
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| page | number | Page number |
| limit | number | Items per page |
| projectId | number | Filter by project |
| status | string | Filter by status |
/api/v1/project/sprints/:id Get sprint by ID.
Auth: Bearer token · project.view
/api/v1/project/sprints/:id Update a sprint.
Auth: Bearer token · project.edit
/api/v1/project/sprints/:id Delete a sprint.
Auth: Bearer token · project.delete
/api/v1/project/sprints/:id/start Start a sprint.
Auth: Bearer token · project.edit
/api/v1/project/sprints/:id/complete Complete a sprint.
Auth: Bearer token · project.edit
Time tracking with billable hours and billing rate integration.
/api/v1/project/timesheets Log a time entry.
Auth: Bearer token · project.create
Request Body
{
"projectId": 1,
"taskId": 5,
"date": "2026-07-10",
"hours": 4.5,
"description": "Frontend development",
"billable": true
} /api/v1/project/timesheets List time entries with pagination and filtering.
Auth: Bearer token · project.view
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| page | number | Page number |
| limit | number | Items per page |
| projectId | number | Filter by project |
| userId | number | Filter by user |
| startDate | string | Filter from date |
| endDate | string | Filter to date |
| billable | boolean | Filter by billable status |
/api/v1/project/timesheets/:id Get time entry by ID.
Auth: Bearer token · project.view
/api/v1/project/timesheets/:id Update a time entry.
Auth: Bearer token · project.edit
/api/v1/project/timesheets/:id Delete a time entry.
Auth: Bearer token · project.delete
/api/v1/project/timesheets/:id/approve Approve a timesheet entry.
Auth: Bearer token · project.manage
/api/v1/project/timesheets/:id/reject Reject a timesheet entry.
Auth: Bearer token · project.manage
Team member assignment and allocation management.
/api/v1/project/resources Assign a resource to a project.
Auth: Bearer token · project.create
Request Body
{
"projectId": 1,
"userId": 3,
"role": "Developer",
"allocationPercentage": 80,
"hourlyRate": 75
} /api/v1/project/resources List resources with pagination and filtering.
Auth: Bearer token · project.view
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| page | number | Page number |
| limit | number | Items per page |
| projectId | number | Filter by project |
| userId | number | Filter by user |
/api/v1/project/resources/:id Get resource by ID.
Auth: Bearer token · project.view
/api/v1/project/resources/:id Update a resource assignment.
Auth: Bearer token · project.edit
/api/v1/project/resources/:id Remove a resource from a project.
Auth: Bearer token · project.delete
Configure billing rates per role for timesheet invoicing.
/api/v1/project/billing-rates Create a billing rate.
Auth: Bearer token · project.manage
Request Body
{
"role": "Senior Developer",
"hourlyRate": 150,
"currency": "USD",
"effectiveFrom": "2026-01-01"
} /api/v1/project/billing-rates List billing rates with pagination.
Auth: Bearer token · project.view
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| page | number | Page number |
| limit | number | Items per page |
| projectId | number | Filter by project |
/api/v1/project/billing-rates/:id Get billing rate by ID.
Auth: Bearer token · project.view
/api/v1/project/billing-rates/:id Update a billing rate.
Auth: Bearer token · project.manage
/api/v1/project/billing-rates/:id Delete a billing rate.
Auth: Bearer token · project.manage
Project expense tracking with Finance module bridge.
/api/v1/project/expenses Create a project expense.
Auth: Bearer token · project.create
Request Body
{
"projectId": 1,
"category": "software",
"amount": 299.99,
"currency": "USD",
"description": "Design tool subscription",
"date": "2026-07-01",
"receiptUrl": "..."
} /api/v1/project/expenses List expenses with pagination and filtering.
Auth: Bearer token · project.view
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| page | number | Page number |
| limit | number | Items per page |
| projectId | number | Filter by project |
| status | string | Filter by status |
| category | string | Filter by category |
/api/v1/project/expenses/:id Get expense by ID.
Auth: Bearer token · project.view
/api/v1/project/expenses/:id Update an expense.
Auth: Bearer token · project.edit
/api/v1/project/expenses/:id Delete an expense.
Auth: Bearer token · project.delete
/api/v1/project/expenses/:id/approve Approve an expense (triggers Finance bridge).
Auth: Bearer token · project.manage
/api/v1/project/expenses/:id/reject Reject an expense.
Auth: Bearer token · project.manage