Collections
Groups of articles within a space.
| Method | Path | Summary |
|---|---|---|
| GET | /v1/app/kb/collections/slug/:slug | By slug |
| GET | /v1/app/kb/collections/:collection_id | Collection (check ACL on collection) |
| PUT | /v1/app/kb/collections/:collection_id | UPDATE collection (need manage on collection or space) |
| DELETE | /v1/app/kb/collections/:collection_id | Collection |
| GET | /v1/app/kb/collections/:collection_id/articles | In a collection (read on space or collection) |
| POST | /v1/app/kb/collections/:collection_id/articles | CREATE article in a collection (write on collection/space) |
| POST | /v1/app/kb/collections/:collection_id/banner | Collection banner |
| DELETE | /v1/app/kb/collections/:collection_id/banner | Remove a collection's banner |
| POST | /v1/app/kb/collections/:collection_id/logo | Collection logo |
| DELETE | /v1/app/kb/collections/:collection_id/logo | Remove a collection's logo |
#By slug
GET
/v1/app/kb/collections/slug/:slug- Address
https://<your-org>.brambleit.cloud/api/v1/app/kb/collections/slug/:slug- Requires
- Signed-in session,
X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: WiKi.
Path parameters
| Name | Type | Description |
|---|---|---|
slugrequired | string |
Response 200
| Field | Type | Description |
|---|---|---|
collection | any |
Example response
JSON
{
"collection": null
}Errors
| Status | Message |
|---|---|
| 404 | User not found |
| 404 | Collection not found |
| 403 | No access to this collection |
Example request
Bash
curl -X GET 'https://<your-org>.brambleit.cloud/api/v1/app/kb/collections/slug/example' \
-H "X-API-Key: $BRAMBLE_KEY"JavaScript
const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/app/kb/collections/slug/example', {
method: 'GET',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY },
});
const data = await res.json();Python
import os, requests
r = requests.get(
"https://<your-org>.brambleit.cloud/api/v1/app/kb/collections/slug/example",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
)
r.raise_for_status()
data = r.json()PowerShell
$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
Invoke-RestMethod -Method GET -Uri 'https://<your-org>.brambleit.cloud/api/v1/app/kb/collections/slug/example' -Headers $headers#Collection (check ACL on collection)
GET
/v1/app/kb/collections/:collection_id- Address
https://<your-org>.brambleit.cloud/api/v1/app/kb/collections/:collection_id- Requires
- Signed-in session,
X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: WiKi.
Path parameters
| Name | Type | Description |
|---|---|---|
collection_idrequired | integer |
Response 200
| Field | Type | Description |
|---|---|---|
collection | any |
Example response
JSON
{
"collection": null
}Errors
| Status | Message |
|---|---|
| 404 | User not found |
| 404 | Collection not found |
| 403 | No access to this collection |
Example request
Bash
curl -X GET 'https://<your-org>.brambleit.cloud/api/v1/app/kb/collections/7' \
-H "X-API-Key: $BRAMBLE_KEY"JavaScript
const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/app/kb/collections/7', {
method: 'GET',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY },
});
const data = await res.json();Python
import os, requests
r = requests.get(
"https://<your-org>.brambleit.cloud/api/v1/app/kb/collections/7",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
)
r.raise_for_status()
data = r.json()PowerShell
$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
Invoke-RestMethod -Method GET -Uri 'https://<your-org>.brambleit.cloud/api/v1/app/kb/collections/7' -Headers $headers#UPDATE collection (need manage on collection or space)
PUT
/v1/app/kb/collections/:collection_id- Address
https://<your-org>.brambleit.cloud/api/v1/app/kb/collections/:collection_id- Requires
- Signed-in session,
X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: WiKi.
Path parameters
| Name | Type | Description |
|---|---|---|
collection_idrequired | integer |
Request body JSON
| Name | Type | Description |
|---|---|---|
name | string | |
slug | string | |
description | string | |
sort_order | integer | |
icon_emoji | any | |
color_hex | any |
Response 200
| Field | Type | Description |
|---|---|---|
collection | any |
Example response
JSON
{
"collection": null
}Errors
| Status | Message |
|---|---|
| 404 | User not found |
| 404 | Collection not found |
| 403 | No manage permission on collection |
| 409 | A collection with that slug already exists in your organisation. |
Example request
Bash
curl -X PUT 'https://<your-org>.brambleit.cloud/api/v1/app/kb/collections/7' \
-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":"…"}'JavaScript
const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/app/kb/collections/7', {
method: 'PUT',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY, 'Content-Type': 'application/json' },
body: JSON.stringify({"name":"Example name","slug":"example","description":"string","sort_order":1,"icon_emoji":"…","color_hex":"…"}),
});
const data = await res.json();Python
import os, requests
r = requests.put(
"https://<your-org>.brambleit.cloud/api/v1/app/kb/collections/7",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
json={"name":"Example name","slug":"example","description":"string","sort_order":1,"icon_emoji":"…","color_hex":"…"},
)
r.raise_for_status()
data = r.json()PowerShell
$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
$body = '{"name":"Example name","slug":"example","description":"string","sort_order":1,"icon_emoji":"…","color_hex":"…"}'
Invoke-RestMethod -Method PUT -Uri 'https://<your-org>.brambleit.cloud/api/v1/app/kb/collections/7' -Headers $headers -ContentType 'application/json' -Body $body#Collection
DELETE
/v1/app/kb/collections/:collection_id- Address
https://<your-org>.brambleit.cloud/api/v1/app/kb/collections/:collection_id- Requires
- Signed-in session,
X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: WiKi.
Path parameters
| Name | Type | Description |
|---|---|---|
collection_idrequired | integer |
Response 200
| Field | Type | Description |
|---|---|---|
message | string |
Example response
JSON
{
"message": "Saved"
}Errors
| Status | Message |
|---|---|
| 404 | User not found |
| 404 | Collection not found |
| 403 | No manage permission on collection |
Example request
Bash
curl -X DELETE 'https://<your-org>.brambleit.cloud/api/v1/app/kb/collections/7' \
-H "X-API-Key: $BRAMBLE_KEY"JavaScript
const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/app/kb/collections/7', {
method: 'DELETE',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY },
});
const data = await res.json();Python
import os, requests
r = requests.delete(
"https://<your-org>.brambleit.cloud/api/v1/app/kb/collections/7",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
)
r.raise_for_status()
data = r.json()PowerShell
$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
Invoke-RestMethod -Method DELETE -Uri 'https://<your-org>.brambleit.cloud/api/v1/app/kb/collections/7' -Headers $headers#In a collection (read on space or collection)
GET
/v1/app/kb/collections/:collection_id/articles- Address
https://<your-org>.brambleit.cloud/api/v1/app/kb/collections/:collection_id/articles- Requires
- Signed-in session,
X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: WiKi.
Path parameters
| Name | Type | Description |
|---|---|---|
collection_idrequired | integer |
Response 200
| Field | Type | Description |
|---|---|---|
articles | array of object | |
articles[].id | integer | |
articles[].tenant_id | integer | |
articles[].space_id | integer | |
articles[].collection_id | integer, or null | |
articles[].title | string | |
articles[].slug | string | |
articles[].status | string: "draft" | "published" | "archived" | |
articles[].review_interval_days | integer, or null | |
articles[].next_review_at | string (date-time), or null | |
articles[].owner_user_id | integer, or null | |
articles[].created_by | integer | |
articles[].created_at | string (date-time) | |
articles[].updated_by | integer | |
articles[].updated_at | string (date-time) | |
articles[].published_at | string (date-time), or null | |
articles[].archived_at | string (date-time), or null | |
articles[].view_count | integer |
Example response
JSON
{
"articles": [
{
"id": 42,
"tenant_id": 1,
"space_id": 7,
"collection_id": 7,
"title": "Example title",
"slug": "example",
"status": "draft",
"review_interval_days": 1,
"next_review_at": "2026-11-12T09:30:00.000Z",
"owner_user_id": 7,
"created_by": 1,
"created_at": "2026-11-12T09:30:00.000Z",
"updated_by": 1,
"updated_at": "2026-11-12T09:30:00.000Z",
"published_at": "2026-11-12T09:30:00.000Z",
"archived_at": "2026-11-12T09:30:00.000Z",
"view_count": 3
}
]
}Errors
| Status | Message |
|---|---|
| 404 | User not found |
| 404 | Collection not found |
| 403 | No access to this collection |
Example request
Bash
curl -X GET 'https://<your-org>.brambleit.cloud/api/v1/app/kb/collections/7/articles' \
-H "X-API-Key: $BRAMBLE_KEY"JavaScript
const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/app/kb/collections/7/articles', {
method: 'GET',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY },
});
const data = await res.json();Python
import os, requests
r = requests.get(
"https://<your-org>.brambleit.cloud/api/v1/app/kb/collections/7/articles",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
)
r.raise_for_status()
data = r.json()PowerShell
$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
Invoke-RestMethod -Method GET -Uri 'https://<your-org>.brambleit.cloud/api/v1/app/kb/collections/7/articles' -Headers $headers#CREATE article in a collection (write on collection/space)
POST
/v1/app/kb/collections/:collection_id/articles- Address
https://<your-org>.brambleit.cloud/api/v1/app/kb/collections/:collection_id/articles- Requires
- Signed-in session,
X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: WiKi.
Path parameters
| Name | Type | Description |
|---|---|---|
collection_idrequired | integer |
Request body JSON
| Name | Type | Description |
|---|---|---|
titlerequired | string | |
slugrequired | string | |
status | string | |
review_interval_days | integer | |
owner_user_id | integer |
Response 201
| Field | Type | Description |
|---|---|---|
article | any |
Example response
JSON
{
"article": null
}Errors
| Status | Message |
|---|---|
| 400 | Missing required fields: title, slug |
| 404 | User not found |
| 404 | Collection not found |
| 403 | No write permission in this collection |
| 409 | An article with that title already exists in this collection. |
| 409 | An article with that slug already exists. Try a different title. |
Example request
Bash
curl -X POST 'https://<your-org>.brambleit.cloud/api/v1/app/kb/collections/7/articles' \
-H "X-API-Key: $BRAMBLE_KEY" \
-H "Content-Type: application/json" \
-d '{"title":"Example title","slug":"example","status":"active","review_interval_days":1,"owner_user_id":7}'JavaScript
const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/app/kb/collections/7/articles', {
method: 'POST',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY, 'Content-Type': 'application/json' },
body: JSON.stringify({"title":"Example title","slug":"example","status":"active","review_interval_days":1,"owner_user_id":7}),
});
const data = await res.json();Python
import os, requests
r = requests.post(
"https://<your-org>.brambleit.cloud/api/v1/app/kb/collections/7/articles",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
json={"title":"Example title","slug":"example","status":"active","review_interval_days":1,"owner_user_id":7},
)
r.raise_for_status()
data = r.json()PowerShell
$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
$body = '{"title":"Example title","slug":"example","status":"active","review_interval_days":1,"owner_user_id":7}'
Invoke-RestMethod -Method POST -Uri 'https://<your-org>.brambleit.cloud/api/v1/app/kb/collections/7/articles' -Headers $headers -ContentType 'application/json' -Body $body#Collection banner
POST
/v1/app/kb/collections/:collection_id/banner- Address
https://<your-org>.brambleit.cloud/api/v1/app/kb/collections/:collection_id/banner- Requires
- Signed-in session,
X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: WiKi.
Path parameters
| Name | Type | Description |
|---|---|---|
collection_idrequired | integer |
Example request
Bash
curl -X POST 'https://<your-org>.brambleit.cloud/api/v1/app/kb/collections/7/banner' \
-H "X-API-Key: $BRAMBLE_KEY"JavaScript
const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/app/kb/collections/7/banner', {
method: 'POST',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY },
});
const data = await res.json();Python
import os, requests
r = requests.post(
"https://<your-org>.brambleit.cloud/api/v1/app/kb/collections/7/banner",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
)
r.raise_for_status()
data = r.json()PowerShell
$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
Invoke-RestMethod -Method POST -Uri 'https://<your-org>.brambleit.cloud/api/v1/app/kb/collections/7/banner' -Headers $headers#Remove a collection's banner
DELETE
/v1/app/kb/collections/:collection_id/banner- Address
https://<your-org>.brambleit.cloud/api/v1/app/kb/collections/:collection_id/banner- Requires
- Signed-in session,
X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: WiKi.
Path parameters
| Name | Type | Description |
|---|---|---|
collection_idrequired | integer |
Example request
Bash
curl -X DELETE 'https://<your-org>.brambleit.cloud/api/v1/app/kb/collections/7/banner' \
-H "X-API-Key: $BRAMBLE_KEY"JavaScript
const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/app/kb/collections/7/banner', {
method: 'DELETE',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY },
});
const data = await res.json();Python
import os, requests
r = requests.delete(
"https://<your-org>.brambleit.cloud/api/v1/app/kb/collections/7/banner",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
)
r.raise_for_status()
data = r.json()PowerShell
$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
Invoke-RestMethod -Method DELETE -Uri 'https://<your-org>.brambleit.cloud/api/v1/app/kb/collections/7/banner' -Headers $headers#Collection logo
POST
/v1/app/kb/collections/:collection_id/logo- Address
https://<your-org>.brambleit.cloud/api/v1/app/kb/collections/:collection_id/logo- Requires
- Signed-in session,
X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: WiKi.
Path parameters
| Name | Type | Description |
|---|---|---|
collection_idrequired | integer |
Example request
Bash
curl -X POST 'https://<your-org>.brambleit.cloud/api/v1/app/kb/collections/7/logo' \
-H "X-API-Key: $BRAMBLE_KEY"JavaScript
const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/app/kb/collections/7/logo', {
method: 'POST',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY },
});
const data = await res.json();Python
import os, requests
r = requests.post(
"https://<your-org>.brambleit.cloud/api/v1/app/kb/collections/7/logo",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
)
r.raise_for_status()
data = r.json()PowerShell
$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
Invoke-RestMethod -Method POST -Uri 'https://<your-org>.brambleit.cloud/api/v1/app/kb/collections/7/logo' -Headers $headers#Remove a collection's logo
DELETE
/v1/app/kb/collections/:collection_id/logo- Address
https://<your-org>.brambleit.cloud/api/v1/app/kb/collections/:collection_id/logo- Requires
- Signed-in session,
X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: WiKi.
Path parameters
| Name | Type | Description |
|---|---|---|
collection_idrequired | integer |
Example request
Bash
curl -X DELETE 'https://<your-org>.brambleit.cloud/api/v1/app/kb/collections/7/logo' \
-H "X-API-Key: $BRAMBLE_KEY"JavaScript
const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/app/kb/collections/7/logo', {
method: 'DELETE',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY },
});
const data = await res.json();Python
import os, requests
r = requests.delete(
"https://<your-org>.brambleit.cloud/api/v1/app/kb/collections/7/logo",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
)
r.raise_for_status()
data = r.json()PowerShell
$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
Invoke-RestMethod -Method DELETE -Uri 'https://<your-org>.brambleit.cloud/api/v1/app/kb/collections/7/logo' -Headers $headersWas this page helpful?
Thanks for your feedback.