Categories & tags

Categories and tags for grouping work.

MethodPathSummary
GET/v1/app/project/projects/:id/categoriesList a project's work-package categories
POST/v1/app/project/projects/:id/categoriesCreate a work-package category
PATCH/v1/app/project/projects/:id/categories/:catIdUpdate a work-package category
DELETE/v1/app/project/projects/:id/categories/:catIdDelete a work-package category
GET/v1/app/project/projects/:id/tagsList a project's tags
POST/v1/app/project/projects/:id/tagsCreate a work-package tag
PATCH/v1/app/project/projects/:id/tags/:tagIdRename or recolor a tag
DELETE/v1/app/project/projects/:id/tags/:tagIdDelete a tag. Requires at least member role on the project

#List a project's work-package categories

GET/v1/app/project/projects/:id/categories

List a project's work-package categories. Requires at least viewer role on the project.

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

Path parameters

NameTypeDescription
idrequiredinteger

Response 200

FieldTypeDescription
categoriesarray of object
categories[].idinteger
categories[].project_idinteger
categories[].namestring
categories[].colorstring
categories[].created_atstring (date-time)
Example response
JSON
{
  "categories": [
    {
      "id": 42,
      "project_id": 7,
      "name": "Example name",
      "color": "#2563eb",
      "created_at": "2026-11-12T09:30:00.000Z"
    }
  ]
}

Example request

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

#Create a work-package category

POST/v1/app/project/projects/:id/categories

Create a work-package category. Requires at least member role on the project.

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

Path parameters

NameTypeDescription
idrequiredinteger

Request body JSON

NameTypeDescription
namerequiredstring
colorrequiredany

Response 201

FieldTypeDescription
categoryany
Example response
JSON
{
  "category": null
}

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/project/projects/42/categories' \
  -H "X-API-Key: $BRAMBLE_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"Example name","color":"…"}'

#Update a work-package category

PATCH/v1/app/project/projects/:id/categories/:catId

Update a work-package category. Requires at least member role on the project.

Address
https://<your-org>.brambleit.cloud/api/v1/app/project/projects/:id/categories/:catId
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: Projects.

Path parameters

NameTypeDescription
idrequiredinteger
catIdrequiredinteger

Request body JSON

NameTypeDescription
namestring
colorrequiredany

Response 200

FieldTypeDescription
categoryany
Example response
JSON
{
  "category": null
}

Errors

StatusMessage
400color must be a #rrggbb hex value

Example request

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

#Delete a work-package category

DELETE/v1/app/project/projects/:id/categories/:catId

Delete a work-package category. Requires at least member role on the project.

Address
https://<your-org>.brambleit.cloud/api/v1/app/project/projects/:id/categories/:catId
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: Projects.

Path parameters

NameTypeDescription
idrequiredinteger
catIdrequiredinteger

Response 200

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

Example request

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

#List a project's tags

GET/v1/app/project/projects/:id/tags

List a project's tags. Requires at least viewer role on the project.

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

Path parameters

NameTypeDescription
idrequiredinteger

Response 200

FieldTypeDescription
tagsarray of object
tags[].idinteger
tags[].project_idinteger
tags[].namestring
tags[].colorstring
tags[].created_atstring (date-time)
Example response
JSON
{
  "tags": [
    {
      "id": 42,
      "project_id": 7,
      "name": "Example name",
      "color": "#2563eb",
      "created_at": "2026-11-12T09:30:00.000Z"
    }
  ]
}

Example request

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

#Create a work-package tag

POST/v1/app/project/projects/:id/tags

Create a work-package tag. Requires at least member role on the project.

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

Path parameters

NameTypeDescription
idrequiredinteger

Request body JSON

NameTypeDescription
namerequiredstring
colorrequiredany

Response 201

FieldTypeDescription
tagany
Example response
JSON
{
  "tag": null
}

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/project/projects/42/tags' \
  -H "X-API-Key: $BRAMBLE_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"Example name","color":"…"}'

#Rename or recolor a tag

PATCH/v1/app/project/projects/:id/tags/:tagId

Rename or recolor a tag. Requires at least member role on the project.

Address
https://<your-org>.brambleit.cloud/api/v1/app/project/projects/:id/tags/:tagId
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: Projects.

Path parameters

NameTypeDescription
idrequiredinteger
tagIdrequiredinteger

Request body JSON

NameTypeDescription
namestring
colorrequiredany

Response 200

FieldTypeDescription
tagany
Example response
JSON
{
  "tag": null
}

Errors

StatusMessage
400color must be a #rrggbb hex value

Example request

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

#Delete a tag. Requires at least member role on the project

DELETE/v1/app/project/projects/:id/tags/:tagId

Delete a tag. Requires at least member role on the project. Also removes it from every work package it's attached to (no FK cascade — see the migration file's comment on why).

Address
https://<your-org>.brambleit.cloud/api/v1/app/project/projects/:id/tags/:tagId
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: Projects.

Path parameters

NameTypeDescription
idrequiredinteger
tagIdrequiredinteger

Response 200

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

Example request

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