Spaces

Top-level areas of the wiki.

MethodPathSummary
GET/v1/app/kb/spacesSpaces (role-based visibility) GET all spaces (role-based visibility)
GET/v1/app/kb/spaces/slug/:slugBy slug
GET/v1/app/kb/spaces/:space_idSpace (checks ACL)
POST/v1/app/kb/spacesCREATE space - Shared spaces: global admin only - Personal spaces: any tenant user, limited to one per user
PUT/v1/app/kb/spaces/:space_idUPDATE space (need manage permission)
DELETE/v1/app/kb/spaces/:space_idSpace (need manage permission)
GET/v1/app/kb/spaces/:space_id/collectionsCollections in a space (requires read on space)
POST/v1/app/kb/spaces/:space_id/collectionsCREATE collection in a space (need write/manage space)
POST/v1/app/kb/spaces/:space_id/bannerSpace banner
DELETE/v1/app/kb/spaces/:space_id/bannerRemove a space's banner

#Spaces (role-based visibility) GET all spaces (role-based visibility)

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

Response 200

FieldTypeDescription
spacesarray of object
spaces[].idinteger
spaces[].tenant_idinteger
spaces[].namestring
spaces[].slugstring
spaces[].descriptionstring, or null
spaces[].color_hexstring, or null
spaces[].icon_emojistring, or null
spaces[].is_internal_onlyboolean
spaces[].owner_user_idinteger, or null
spaces[].created_byinteger
spaces[].created_atstring (date-time)
spaces[].updated_atstring (date-time)
spaces[].archived_atstring (date-time), or null
spaces[].space_typestring: "shared" | "personal"
spaces[].banner_image_idinteger, or null
spaces[].article_countboolean
spaces[].collection_countboolean
Example response
JSON
{
  "spaces": [
    {
      "id": 42,
      "tenant_id": 1,
      "name": "Example name",
      "slug": "example",
      "description": "string",
      "color_hex": "#2563eb",
      "icon_emoji": "string",
      "is_internal_only": true,
      "owner_user_id": 7,
      "created_by": 1,
      "created_at": "2026-11-12T09:30:00.000Z",
      "updated_at": "2026-11-12T09:30:00.000Z",
      "archived_at": "2026-11-12T09:30:00.000Z",
      "space_type": "shared",
      "banner_image_id": 7,
      "article_count": false,
      "collection_count": false
    }
  ]
}

Errors

StatusMessage
404User not found

Example request

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

#By slug

GET/v1/app/kb/spaces/slug/:slug
Address
https://<your-org>.brambleit.cloud/api/v1/app/kb/spaces/slug/:slug
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: WiKi.

Path parameters

NameTypeDescription
slugrequiredstring

Response 200

FieldTypeDescription
spaceany
Example response
JSON
{
  "space": null
}

Errors

StatusMessage
404User not found
404Space not found
403No access to this space

Example request

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

#Space (checks ACL)

GET/v1/app/kb/spaces/:space_id
Address
https://<your-org>.brambleit.cloud/api/v1/app/kb/spaces/:space_id
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: WiKi.

Path parameters

NameTypeDescription
space_idrequiredinteger

Response 200

FieldTypeDescription
spaceany
Example response
JSON
{
  "space": null
}

Errors

StatusMessage
404User not found
404Space not found
403No access to this space

Example request

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

#CREATE space - Shared spaces: global admin only - Personal spaces: any tenant user, limited to one per user

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

Request body JSON

NameTypeDescription
namerequiredstring
slugrequiredstring
descriptionstring
color_hexany
icon_emojiany
is_internal_onlyboolean
space_typestring

Response 201

FieldTypeDescription
spaceany
Example response
JSON
{
  "space": null
}

Errors

StatusMessage
400Missing required fields: name, slug
400Only global admins can create shared spaces.
404User not found
403Only global admins can create shared spaces.
409You already have a personal space.
409A space with that slug already exists in your organisation.

Example request

Bash
curl -X POST 'https://<your-org>.brambleit.cloud/api/v1/app/kb/spaces' \
  -H "X-API-Key: $BRAMBLE_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"Example name","slug":"example","description":"string","color_hex":"…","icon_emoji":"…","is_internal_only":true,"space_type":"string"}'

#UPDATE space (need manage permission)

PUT/v1/app/kb/spaces/:space_id
Address
https://<your-org>.brambleit.cloud/api/v1/app/kb/spaces/:space_id
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: WiKi.

Path parameters

NameTypeDescription
space_idrequiredinteger

Request body JSON

NameTypeDescription
namestring
slugstring
descriptionstring
color_hexany
icon_emojiany
is_internal_onlyboolean

Response 200

FieldTypeDescription
spaceany
Example response
JSON
{
  "space": null
}

Errors

StatusMessage
404User not found
404Space not found
403No manage permission on space
409A space with that slug already exists in your organisation.

Example request

Bash
curl -X PUT 'https://<your-org>.brambleit.cloud/api/v1/app/kb/spaces/7' \
  -H "X-API-Key: $BRAMBLE_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"Example name","slug":"example","description":"string","color_hex":"…","icon_emoji":"…","is_internal_only":true}'

#Space (need manage permission)

DELETE/v1/app/kb/spaces/:space_id
Address
https://<your-org>.brambleit.cloud/api/v1/app/kb/spaces/:space_id
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: WiKi.

Path parameters

NameTypeDescription
space_idrequiredinteger

Response 200

FieldTypeDescription
messagestring
Example response
JSON
{
  "message": "Saved"
}

Errors

StatusMessage
404User not found
404Space not found
403No manage permission on space

Example request

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

#Collections in a space (requires read on space)

GET/v1/app/kb/spaces/:space_id/collections
Address
https://<your-org>.brambleit.cloud/api/v1/app/kb/spaces/:space_id/collections
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: WiKi.

Path parameters

NameTypeDescription
space_idrequiredinteger

Response 200

FieldTypeDescription
collectionsarray of object
collections[].idinteger
collections[].tenant_idinteger
collections[].space_idinteger
collections[].namestring
collections[].slugstring
collections[].descriptionstring, or null
collections[].sort_orderinteger
collections[].created_byinteger
collections[].created_atstring (date-time)
collections[].updated_atstring (date-time)
collections[].archived_atstring (date-time), or null
collections[].icon_emojiany
collections[].color_hexany
collections[].banner_image_idinteger, or null
collections[].logo_image_idinteger, or null
collections[].article_countboolean
Example response
JSON
{
  "collections": [
    {
      "id": 42,
      "tenant_id": 1,
      "space_id": 7,
      "name": "Example name",
      "slug": "example",
      "description": "string",
      "sort_order": 1,
      "created_by": 1,
      "created_at": "2026-11-12T09:30:00.000Z",
      "updated_at": "2026-11-12T09:30:00.000Z",
      "archived_at": "2026-11-12T09:30:00.000Z",
      "icon_emoji": null,
      "color_hex": null,
      "banner_image_id": 7,
      "logo_image_id": 7,
      "article_count": false
    }
  ]
}

Errors

StatusMessage
404User not found
404Space not found
403No access to this space

Example request

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

#CREATE collection in a space (need write/manage space)

POST/v1/app/kb/spaces/:space_id/collections
Address
https://<your-org>.brambleit.cloud/api/v1/app/kb/spaces/:space_id/collections
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: WiKi.

Path parameters

NameTypeDescription
space_idrequiredinteger

Request body JSON

NameTypeDescription
namerequiredstring
slugrequiredstring
descriptionstring
sort_orderinteger
icon_emojiany
color_hexany

Response 201

FieldTypeDescription
collectionany
Example response
JSON
{
  "collection": null
}

Errors

StatusMessage
400Missing required fields: name, slug
404User not found
404Space not found
403No write permission on space
409A collection with that slug already exists in your organisation.

Example request

Bash
curl -X POST 'https://<your-org>.brambleit.cloud/api/v1/app/kb/spaces/7/collections' \
  -H "X-API-Key: $BRAMBLE_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"Example name","slug":"example","description":"string","sort_order":1,"icon_emoji":"…","color_hex":"…"}'

#Space banner

POST/v1/app/kb/spaces/:space_id/banner
Address
https://<your-org>.brambleit.cloud/api/v1/app/kb/spaces/:space_id/banner
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: WiKi.

Path parameters

NameTypeDescription
space_idrequiredinteger

Example request

Bash
curl -X POST 'https://<your-org>.brambleit.cloud/api/v1/app/kb/spaces/7/banner' \
  -H "X-API-Key: $BRAMBLE_KEY"

#Remove a space's banner

DELETE/v1/app/kb/spaces/:space_id/banner
Address
https://<your-org>.brambleit.cloud/api/v1/app/kb/spaces/:space_id/banner
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: WiKi.

Path parameters

NameTypeDescription
space_idrequiredinteger

Example request

Bash
curl -X DELETE 'https://<your-org>.brambleit.cloud/api/v1/app/kb/spaces/7/banner' \
  -H "X-API-Key: $BRAMBLE_KEY"