Checklists

Onboarding and leaver checklists made from templates, their tasks, and your own open tasks.

MethodPathSummary
GET/api/checklistsList checklists
GET/api/checklists/tasks/mineOpen tasks that are the viewer's to do, across every checklist
GET/api/checklists/templatesChecklist templates
GET/api/checklists/:idGet a checklist
POST/api/checklistsStart a checklist
POST/api/checklists/:id/tasksAdd a task
POST/api/checklists/tasks/:tid/toggleTick or untick a task
DELETE/api/checklists/tasks/:tidDelete a task
DELETE/api/checklists/:idCancel a checklist

#List checklists

GET/api/checklists
Address
https://<your-org>.brambleit.cloud/hr/api/checklists
Requires
Signed-in browser session (the sso_session / session_id cookies from Bramble sign-in).
Licence: HR.

Query parameters

NameTypeDescription
employeenumberA person's checklists.
includestringclosed to include finished and cancelled ones.

Response 200

FieldTypeDescription
checklistsarray of any
Example response
JSON
{
  "checklists": []
}

Example request

JavaScript
// From a page served by Bramble (uses the signed-in session)
const res = await fetch('/hr/api/checklists', {
  method: 'GET',
  credentials: 'include',
});
const data = await res.json();

#Open tasks that are the viewer's to do, across every checklist

GET/api/checklists/tasks/mine
Address
https://<your-org>.brambleit.cloud/hr/api/checklists/tasks/mine
Requires
Signed-in browser session (the sso_session / session_id cookies from Bramble sign-in).
Licence: HR.

Response 200

FieldTypeDescription
tasksarray of object
tasks[].idinteger, or null
tasks[].tenant_idinteger
tasks[].checklist_idinteger
tasks[].titlestring
tasks[].detailsstring, or null
tasks[].assigneestring: "hr" | "manager" | "employee"
tasks[].assignee_employee_idinteger, or null
tasks[].done_atstring (date-time), or null
tasks[].done_byinteger, or null
tasks[].done_by_namestring, or null
tasks[].sortinteger
tasks[].employee_idinteger
tasks[].kindstring: "onboarding" | "offboarding"
tasks[].checklist_namestring
tasks[].employee_namestring
Example response
JSON
{
  "tasks": [
    {
      "id": 42,
      "tenant_id": 1,
      "checklist_id": 7,
      "title": "Example title",
      "details": "string",
      "assignee": "hr",
      "assignee_employee_id": 7,
      "done_at": "2026-11-12T09:30:00.000Z",
      "done_by": 1,
      "done_by_name": "Example done by name",
      "sort": 1,
      "employee_id": 7,
      "kind": "onboarding",
      "checklist_name": "Example checklist name",
      "employee_name": "Example employee name"
    }
  ]
}

Example request

JavaScript
// From a page served by Bramble (uses the signed-in session)
const res = await fetch('/hr/api/checklists/tasks/mine', {
  method: 'GET',
  credentials: 'include',
});
const data = await res.json();

#Checklist templates

GET/api/checklists/templates
Address
https://<your-org>.brambleit.cloud/hr/api/checklists/templates
Requires
Signed-in browser session (the sso_session / session_id cookies from Bramble sign-in).
Licence: HR.

Response 200

FieldTypeDescription
templatesarray of object
templates[].idinteger, or null
templates[].kindstring: "onboarding" | "offboarding"
templates[].namestring
templates[].descriptionstring, or null
templates[].tasksboolean
Example response
JSON
{
  "templates": [
    {
      "id": 42,
      "kind": "onboarding",
      "name": "Example name",
      "description": "string",
      "tasks": false
    }
  ]
}

Errors

StatusMessage
403HR admins only

Example request

JavaScript
// From a page served by Bramble (uses the signed-in session)
const res = await fetch('/hr/api/checklists/templates', {
  method: 'GET',
  credentials: 'include',
});
const data = await res.json();

#Get a checklist

GET/api/checklists/:id
Address
https://<your-org>.brambleit.cloud/hr/api/checklists/:id
Requires
Signed-in browser session (the sso_session / session_id cookies from Bramble sign-in).
Licence: HR.

Path parameters

NameTypeDescription
idrequirednumber

Response 200

FieldTypeDescription
checklistarray of any
tasksarray of any
Example response
JSON
{
  "checklist": [],
  "tasks": []
}

Errors

StatusMessage
404Checklist not found

Example request

JavaScript
// From a page served by Bramble (uses the signed-in session)
const res = await fetch('/hr/api/checklists/12.5', {
  method: 'GET',
  credentials: 'include',
});
const data = await res.json();

#Start a checklist

POST/api/checklists
Address
https://<your-org>.brambleit.cloud/hr/api/checklists
Requires
Signed-in browser session (the sso_session / session_id cookies from Bramble sign-in).
Licence: HR.

Request body JSON

NameTypeDescription
employee_idintegerThe person.
template_idnumberThe template.
anchor_datestring (date)The date tasks' due dates count from (start or leaving date).

Response 201

FieldTypeDescription
idinteger
Example response
JSON
{
  "id": 42
}

Errors

StatusMessage
400Choose a checklist
400… already has an open … checklist
403Only HR admins can start checklists

Example request

JavaScript
// From a page served by Bramble (uses the signed-in session)
const res = await fetch('/hr/api/checklists', {
  method: 'POST',
  credentials: 'include',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({"employee_id":7,"template_id":12.5,"anchor_date":"2026-11-12"}),
});
const data = await res.json();

#Add a task

POST/api/checklists/:id/tasks
Address
https://<your-org>.brambleit.cloud/hr/api/checklists/:id/tasks
Requires
Signed-in browser session (the sso_session / session_id cookies from Bramble sign-in).
Licence: HR.

Path parameters

NameTypeDescription
idrequiredinteger

Request body JSON

NameTypeDescription
titlestring
assigneeanyWho does it (HR, the manager, the person, IT…).
detailsstring
due_datestring (date)When it's due.

Response 201

FieldTypeDescription
okboolean
Example response
JSON
{
  "ok": true
}

Errors

StatusMessage
400Give the task a title
403Only HR admins can add tasks

Example request

JavaScript
// From a page served by Bramble (uses the signed-in session)
const res = await fetch('/hr/api/checklists/42/tasks', {
  method: 'POST',
  credentials: 'include',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({"title":"Example title","assignee":"…","details":"string","due_date":"2026-11-12"}),
});
const data = await res.json();

#Tick or untick a task

POST/api/checklists/tasks/:tid/toggle
Address
https://<your-org>.brambleit.cloud/hr/api/checklists/tasks/:tid/toggle
Requires
Signed-in browser session (the sso_session / session_id cookies from Bramble sign-in).
Licence: HR.

Path parameters

NameTypeDescription
tidrequirednumber

Request body JSON

NameTypeDescription
donebooleantrue or false.

Response 200

FieldTypeDescription
okboolean
completeany
Example response
JSON
{
  "ok": true,
  "complete": null
}

Errors

StatusMessage
400This checklist was cancelled
404Task not found
403This task isn't yours to tick off

Example request

JavaScript
// From a page served by Bramble (uses the signed-in session)
const res = await fetch('/hr/api/checklists/tasks/12.5/toggle', {
  method: 'POST',
  credentials: 'include',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({"done":false}),
});
const data = await res.json();

#Delete a task

DELETE/api/checklists/tasks/:tid
Address
https://<your-org>.brambleit.cloud/hr/api/checklists/tasks/:tid
Requires
Signed-in browser session (the sso_session / session_id cookies from Bramble sign-in).
Licence: HR.

Path parameters

NameTypeDescription
tidrequirednumber

Response 200

FieldTypeDescription
okboolean
Example response
JSON
{
  "ok": true
}

Errors

StatusMessage
403Only HR admins can remove tasks
404Task not found

Example request

JavaScript
// From a page served by Bramble (uses the signed-in session)
const res = await fetch('/hr/api/checklists/tasks/12.5', {
  method: 'DELETE',
  credentials: 'include',
});
const data = await res.json();

#Cancel a checklist

DELETE/api/checklists/:id
Address
https://<your-org>.brambleit.cloud/hr/api/checklists/:id
Requires
Signed-in browser session (the sso_session / session_id cookies from Bramble sign-in).
Licence: HR.

Path parameters

NameTypeDescription
idrequiredinteger

Response 200

FieldTypeDescription
okboolean
Example response
JSON
{
  "ok": true
}

Errors

StatusMessage
403Only HR admins can cancel checklists

Example request

JavaScript
// From a page served by Bramble (uses the signed-in session)
const res = await fetch('/hr/api/checklists/42', {
  method: 'DELETE',
  credentials: 'include',
});
const data = await res.json();