Lists & tasks

Lists, their members, and the tasks in them.

MethodPathSummary
GET/v1/app/todo/listsList the caller's ToDo lists
POST/v1/app/todo/listsCreate a list. Creator becomes the list's owner
PATCH/v1/app/todo/lists/:idUpdate a list's name, icon, color or position
DELETE/v1/app/todo/lists/:idDelete a list. Requires owner role on the list
GET/v1/app/todo/lists/:id/membersList a list's owner and members
GET/v1/app/todo/lists/:id/available-usersList tenant staff users not already on the list
POST/v1/app/todo/lists/:id/membersAdd a member to a list
PATCH/v1/app/todo/lists/:id/members/:userIdChange a member's role
DELETE/v1/app/todo/lists/:id/members/:userIdRemove a member from a list
GET/v1/app/todo/lists/:id/tasksList a list's (non-deleted) tasks
POST/v1/app/todo/lists/:id/tasksAdd a task to a list
PATCH/v1/app/todo/lists/:id/tasks/:taskIdUpdate a task's fields
PATCH/v1/app/todo/lists/:id/tasks/:taskId/moveMove a task between status columns or reorder it within one
DELETE/v1/app/todo/lists/:id/tasks/:taskIdSoft-delete a task. Requires editor or owner role on the list

#List the caller's ToDo lists

GET/v1/app/todo/lists

List the caller's ToDo lists. Returns lists the caller owns or is a member of (via todo_list_members), each annotated with my_role, task_count and open_count.

Address
https://<your-org>.brambleit.cloud/api/v1/app/todo/lists
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: To Do.

Response 200

FieldTypeDescription
listsarray of any
Example response
JSON
{
  "lists": []
}

Example request

Bash
curl -X GET 'https://<your-org>.brambleit.cloud/api/v1/app/todo/lists' \
  -H "X-API-Key: $BRAMBLE_KEY"

#Create a list. Creator becomes the list's owner

POST/v1/app/todo/lists
Address
https://<your-org>.brambleit.cloud/api/v1/app/todo/lists
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: To Do.

Request body JSON

NameTypeDescription
namerequiredstring
iconany
colorrequiredany

Response 201

FieldTypeDescription
listobject
list.my_rolestring
Example response
JSON
{
  "list": {
    "…rows[0]": "…",
    "my_role": "string"
  }
}

Errors

StatusMessage
400name is required
400color must be a #rrggbb hex value

Example request

Bash
curl -X POST 'https://<your-org>.brambleit.cloud/api/v1/app/todo/lists' \
  -H "X-API-Key: $BRAMBLE_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"Example name","icon":"…","color":"…"}'

#Update a list's name, icon, color or position

PATCH/v1/app/todo/lists/:id

Update a list's name, icon, color or position. Requires editor or owner role on the list (see todo_list_members).

Address
https://<your-org>.brambleit.cloud/api/v1/app/todo/lists/:id
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: To Do.

Path parameters

NameTypeDescription
idrequiredinteger

Request body JSON

NameTypeDescription
namestring
iconany
colorrequiredany
positioninteger

Response 200

FieldTypeDescription
listarray of any
Example response
JSON
{
  "list": []
}

Errors

StatusMessage
400color must be a #rrggbb hex value

Example request

Bash
curl -X PATCH 'https://<your-org>.brambleit.cloud/api/v1/app/todo/lists/42' \
  -H "X-API-Key: $BRAMBLE_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"Example name","icon":"…","color":"…","position":1}'

#Delete a list. Requires owner role on the list

DELETE/v1/app/todo/lists/:id
Address
https://<your-org>.brambleit.cloud/api/v1/app/todo/lists/:id
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: To Do.

Path parameters

NameTypeDescription
idrequiredinteger

Response 200

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

Example request

Bash
curl -X DELETE 'https://<your-org>.brambleit.cloud/api/v1/app/todo/lists/42' \
  -H "X-API-Key: $BRAMBLE_KEY"

#List a list's owner and members

GET/v1/app/todo/lists/:id/members

List a list's owner and members. Requires at least viewer role on the list.

Address
https://<your-org>.brambleit.cloud/api/v1/app/todo/lists/:id/members
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: To Do.

Path parameters

NameTypeDescription
idrequiredinteger

Response 200

FieldTypeDescription
ownerany
membersarray of any
Example response
JSON
{
  "owner": null,
  "members": []
}

Example request

Bash
curl -X GET 'https://<your-org>.brambleit.cloud/api/v1/app/todo/lists/42/members' \
  -H "X-API-Key: $BRAMBLE_KEY"

#List tenant staff users not already on the list

GET/v1/app/todo/lists/:id/available-users

List tenant staff users not already on the list. Requires editor or owner role on the list. Used to populate the "add member" picker.

Address
https://<your-org>.brambleit.cloud/api/v1/app/todo/lists/:id/available-users
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: To Do.

Path parameters

NameTypeDescription
idrequiredinteger

Response 200

FieldTypeDescription
usersarray of any
Example response
JSON
{
  "users": []
}

Example request

Bash
curl -X GET 'https://<your-org>.brambleit.cloud/api/v1/app/todo/lists/42/available-users' \
  -H "X-API-Key: $BRAMBLE_KEY"

#Add a member to a list

POST/v1/app/todo/lists/:id/members

Add a member to a list. Requires editor or owner role on the list. Target user must be an active staff user in the caller's tenant.

Address
https://<your-org>.brambleit.cloud/api/v1/app/todo/lists/:id/members
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: To Do.

Path parameters

NameTypeDescription
idrequiredinteger

Request body JSON

NameTypeDescription
user_idrequiredinteger
rolestring: "viewer" | "editor"

Response 201

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

Errors

StatusMessage
400user_id is required
400Invalid role
404User not found in your organisation

Example request

Bash
curl -X POST 'https://<your-org>.brambleit.cloud/api/v1/app/todo/lists/42/members' \
  -H "X-API-Key: $BRAMBLE_KEY" \
  -H "Content-Type: application/json" \
  -d '{"user_id":7,"role":"viewer"}'

#Change a member's role

PATCH/v1/app/todo/lists/:id/members/:userId

Change a member's role. Requires owner role on the list.

Address
https://<your-org>.brambleit.cloud/api/v1/app/todo/lists/:id/members/:userId
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: To Do.

Path parameters

NameTypeDescription
idrequiredinteger
userIdrequiredinteger

Request body JSON

NameTypeDescription
rolestring: "viewer" | "editor"

Response 200

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

Errors

StatusMessage
400Invalid role

Example request

Bash
curl -X PATCH 'https://<your-org>.brambleit.cloud/api/v1/app/todo/lists/42/members/1' \
  -H "X-API-Key: $BRAMBLE_KEY" \
  -H "Content-Type: application/json" \
  -d '{"role":"viewer"}'

#Remove a member from a list

DELETE/v1/app/todo/lists/:id/members/:userId

Remove a member from a list. A caller removing themselves only needs viewer role; removing another member requires owner role.

Address
https://<your-org>.brambleit.cloud/api/v1/app/todo/lists/:id/members/:userId
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: To Do.

Path parameters

NameTypeDescription
idrequiredinteger
userIdrequiredinteger

Response 200

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

Example request

Bash
curl -X DELETE 'https://<your-org>.brambleit.cloud/api/v1/app/todo/lists/42/members/1' \
  -H "X-API-Key: $BRAMBLE_KEY"

#List a list's (non-deleted) tasks

GET/v1/app/todo/lists/:id/tasks

List a list's (non-deleted) tasks. Requires at least viewer role on the list.

Address
https://<your-org>.brambleit.cloud/api/v1/app/todo/lists/:id/tasks
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: To Do.

Path parameters

NameTypeDescription
idrequiredinteger

Response 200

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

Example request

Bash
curl -X GET 'https://<your-org>.brambleit.cloud/api/v1/app/todo/lists/42/tasks' \
  -H "X-API-Key: $BRAMBLE_KEY"

#Add a task to a list

POST/v1/app/todo/lists/:id/tasks
Address
https://<your-org>.brambleit.cloud/api/v1/app/todo/lists/:id/tasks
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: To Do.

Path parameters

NameTypeDescription
idrequiredinteger

Request body JSON

NameTypeDescription
titlerequiredstringWhat needs doing.
notesarray of anyMore detail.
statusstringIts status.
priorityanyIts priority.
due_datestring (date)When it's due (YYYY-MM-DD).
recurrenceanyHow it repeats.

Response 201

FieldTypeDescription
taskany
Example response
JSON
{
  "task": null
}

Errors

StatusMessage
400title is required
400Invalid status
400Invalid priority
400Invalid recurrence

Example request

Bash
curl -X POST 'https://<your-org>.brambleit.cloud/api/v1/app/todo/lists/42/tasks' \
  -H "X-API-Key: $BRAMBLE_KEY" \
  -H "Content-Type: application/json" \
  -d '{"title":"Example title","notes":[],"status":"active","priority":"…","due_date":"2026-11-12","recurrence":"…"}'

#Update a task's fields

PATCH/v1/app/todo/lists/:id/tasks/:taskId

Update a task's fields. Requires editor or owner role on the list. Setting status to done also stamps completed_at; any other status clears it. At least one field must be provided.

Address
https://<your-org>.brambleit.cloud/api/v1/app/todo/lists/:id/tasks/:taskId
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: To Do.

Path parameters

NameTypeDescription
idrequiredinteger
taskIdrequiredinteger

Request body JSON

NameTypeDescription
titlestring
notesarray of any
statusstring
priorityany
due_datestring (date)
recurrenceany

Response 200

FieldTypeDescription
taskany
Example response
JSON
{
  "task": null
}

Errors

StatusMessage
400Invalid status
400Invalid priority
400Invalid recurrence
400No fields to update

Example request

Bash
curl -X PATCH 'https://<your-org>.brambleit.cloud/api/v1/app/todo/lists/42/tasks/1' \
  -H "X-API-Key: $BRAMBLE_KEY" \
  -H "Content-Type: application/json" \
  -d '{"title":"Example title","notes":[],"status":"active","priority":"…","due_date":"2026-11-12","recurrence":"…"}'

#Move a task between status columns or reorder it within one

PATCH/v1/app/todo/lists/:id/tasks/:taskId/move

Move a task between status columns or reorder it within one. Requires editor or owner role on the list. Used for drag-and-drop. Setting status to done also stamps completed_at; any other status clears it.

Address
https://<your-org>.brambleit.cloud/api/v1/app/todo/lists/:id/tasks/:taskId/move
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: To Do.

Path parameters

NameTypeDescription
idrequiredinteger
taskIdrequiredinteger

Request body JSON

NameTypeDescription
statusstring
positionrequiredinteger

Response 200

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

Errors

StatusMessage
400status and position are required

Example request

Bash
curl -X PATCH 'https://<your-org>.brambleit.cloud/api/v1/app/todo/lists/42/tasks/1/move' \
  -H "X-API-Key: $BRAMBLE_KEY" \
  -H "Content-Type: application/json" \
  -d '{"status":"active","position":1}'

#Soft-delete a task. Requires editor or owner role on the list

DELETE/v1/app/todo/lists/:id/tasks/:taskId

Soft-delete a task. Requires editor or owner role on the list. Sets deleted_at rather than removing the row.

Address
https://<your-org>.brambleit.cloud/api/v1/app/todo/lists/:id/tasks/:taskId
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: To Do.

Path parameters

NameTypeDescription
idrequiredinteger
taskIdrequiredinteger

Response 200

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

Example request

Bash
curl -X DELETE 'https://<your-org>.brambleit.cloud/api/v1/app/todo/lists/42/tasks/1' \
  -H "X-API-Key: $BRAMBLE_KEY"