Checklists
Checklist tasks (checklist_items) are the individual to-dos attached to an offboarding record - "revoke GitHub access," "collect laptop," and so on. There's no standalone /checklists resource; tasks are created as a side effect of starting an offboarding and managed through the employee/offboarding endpoints below.
These are the same session-authenticated endpoints the PurpletGo web app uses (/api/employees, /api/checklist-templates) - not the API-key-based /api/v1 surface. If you're integrating from a server, you'll authenticate the same way the dashboard does.
How tasks get created
POST /api/employees
When you create an offboarding, its checklist is populated automatically - you don't POST individual tasks. PurpletGo picks the task list in this order:
checklistTemplateIdin the request body, if you pass one explicitly- A role-based template configured under Settings → Role Templates, matched against the employee's role and separation type
- A shorter default list for contractors/vendors, or a general default list for regular employees
Each generated task has a task and an assignedTo (IT Admin, HR, Manager, Employee, or Finance, depending on the default set used).
See the Offboarding API for the full create-offboarding request body.
Reading a checklist
Checklist items aren't fetched from their own endpoint - they come back embedded on the offboarding record.
GET /api/employees
Each row in the response includes a checklist_items array:
{
"id": "e3b0c442-...",
"employee_name": "Jordan Lee",
"checklist_items": [
{
"id": "f47ac10b-...",
"task": "Revoke GitHub access",
"completed": false,
"assigned_to": "IT Admin",
"due_date": null,
"sla_hours": 48,
"sla_deadline": "2024-06-03T10:00:00.000Z",
"sla_breached": false
}
]
}Field names are the raw checklist_items column names (snake_case) - there's no camelCase transformation on this endpoint.
Update a task
PATCH /api/employees/checklist/:itemId
Updates one checklist item. This is also how you mark a task complete - there's no separate "complete" endpoint.
Request body (all fields optional - send only what you're changing)
| Field | Type | Description |
|---|---|---|
completed | boolean | Marking true stamps completed_at and clears any SLA breach; marking false clears completed_at |
task | string | Task description |
assigned_to | string | Who owns the task |
due_date | date | ISO date string |
sla_hours | integer or null | Hours from creation until the task is due. Requires HR/manager/admin permissions. Pass null to clear it |
Response 200 OK
{
"success": true,
"slaHours": 48,
"slaDeadline": "2024-06-03T10:00:00.000Z",
"slaBreached": false
}There's no endpoint to delete an individual checklist item.
Apply a checklist template
POST /api/checklist-templates/:id/apply/:offboardingId
Copies every item from an existing checklist template onto an already-created offboarding, on top of whatever tasks it already has.
Response 200 OK
{ "success": true, "itemsAdded": 8 }Templates themselves (GET/POST/PATCH/PUT/DELETE /api/checklist-templates) are managed separately - see Settings → Checklist Templates in the app for the full template CRUD surface.
SLA breach report
GET /api/employees/sla-breaches
Returns every incomplete task with an SLA configured, across all in-progress offboardings, sorted by deadline. Requires HR, manager, or admin permissions. Unlike the embedded checklist above, this endpoint camelCases its fields:
[
{
"id": "f47ac10b-...",
"task": "Revoke GitHub access",
"assignedTo": "IT Admin",
"slaHours": 48,
"slaDeadline": "2024-06-03T10:00:00.000Z",
"slaBreached": true,
"completed": false,
"dueDate": null,
"createdAt": "2024-06-01T10:00:00.000Z",
"offboardingId": "e3b0c442-...",
"employeeName": "Jordan Lee",
"employeeDepartment": "Engineering",
"exitDate": "2024-06-15",
"hoursOverdue": 6.2,
"hoursRemaining": 0,
"status": "breached"
}
]status is computed per-row: breached once the deadline has passed, at_risk when less than 25% of the SLA window remains, otherwise on_track.