Licences
The licence packages the organisation has, how many seats are used, and which licensed apps the organisation actually uses (which decides what shows in the launcher). Assign a licence to a person with PATCH /v1/admin/user/licenses.
| Method | Path | Summary |
|---|---|---|
| GET | /v1/admin/tenant/licenses | List licence packages and seats |
| GET | /v1/admin/tenant/apps-in-use | Which licensed apps are in use |
| PATCH | /v1/admin/tenant/apps-in-use/:applicationId | Mark an app as used or not |
| POST | /v1/admin/tenant/license | Get a licence package |
#List licence packages and seats
/v1/admin/tenant/licensesList the tenant's acquired license packages, with seat usage and RMM grace-period status. Requires the GLOBAL_ADMIN role. Each package includes assigned seat count and the applications it grants. Also returns a separate rmm object describing RMM license/grace-period state (see services/rmmLicenseEnforcement.js).
- Address
https://<your-org>.brambleit.cloud/api/v1/admin/tenant/licenses- Requires
- Signed-in session,
X-API-Key, or a Bramble app access token (Authorization: Bearer).
Response 200
| Field | Type | Description |
|---|---|---|
licenses | array of object | |
licenses[].id | integer | |
licenses[].tenant_id | integer | |
licenses[].package_id | integer | |
licenses[].seats | integer | |
licenses[].expires_at | string (date-time), or null | |
licenses[].acquired_at | string (date-time) | |
licenses[].is_active | boolean | |
licenses[].package_name | string | |
licenses[].package_description | string, or null | |
licenses[].assigned_users | any | |
licenses[].applications | any | |
rmm | any |
Example response
{
"licenses": [
{
"id": 42,
"tenant_id": 1,
"package_id": 7,
"seats": 1,
"expires_at": "2026-11-12T09:30:00.000Z",
"acquired_at": "2026-11-12T09:30:00.000Z",
"is_active": true,
"package_name": "Example package name",
"package_description": "string",
"assigned_users": null,
"applications": null
}
],
"rmm": null
}Example request
curl -X GET 'https://<your-org>.brambleit.cloud/api/v1/admin/tenant/licenses' \
-H "X-API-Key: $BRAMBLE_KEY"const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/admin/tenant/licenses', {
method: 'GET',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY },
});
const data = await res.json();import os, requests
r = requests.get(
"https://<your-org>.brambleit.cloud/api/v1/admin/tenant/licenses",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
)
r.raise_for_status()
data = r.json()$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
Invoke-RestMethod -Method GET -Uri 'https://<your-org>.brambleit.cloud/api/v1/admin/tenant/licenses' -Headers $headers#Which licensed apps are in use
/v1/admin/tenant/apps-in-useWhich licensed apps this organisation uses. Apps switched off leave the launcher, Hub and search for everyone; they stay licensed and reachable.
- Address
https://<your-org>.brambleit.cloud/api/v1/admin/tenant/apps-in-use- Requires
- Signed-in session,
X-API-Key, or a Bramble app access token (Authorization: Bearer).
Role:GLOBAL_ADMIN.
Response 200
| Field | Type | Description |
|---|---|---|
success | boolean |
Example response
{
"success": true,
"…await require(\"../servic": "…"
}Example request
curl -X GET 'https://<your-org>.brambleit.cloud/api/v1/admin/tenant/apps-in-use' \
-H "X-API-Key: $BRAMBLE_KEY"const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/admin/tenant/apps-in-use', {
method: 'GET',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY },
});
const data = await res.json();import os, requests
r = requests.get(
"https://<your-org>.brambleit.cloud/api/v1/admin/tenant/apps-in-use",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
)
r.raise_for_status()
data = r.json()$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
Invoke-RestMethod -Method GET -Uri 'https://<your-org>.brambleit.cloud/api/v1/admin/tenant/apps-in-use' -Headers $headers#Mark an app as used or not
/v1/admin/tenant/apps-in-use/:applicationId- Address
https://<your-org>.brambleit.cloud/api/v1/admin/tenant/apps-in-use/:applicationId- Requires
- Signed-in session,
X-API-Key, or a Bramble app access token (Authorization: Bearer).
Role:GLOBAL_ADMIN.
Path parameters
| Name | Type | Description |
|---|---|---|
applicationIdrequired | number |
Request body JSON
| Name | Type | Description |
|---|---|---|
in_use | any | true shows the app in everyone's launcher; false hides it. |
Response 200
| Field | Type | Description |
|---|---|---|
success | boolean | |
app | any |
Example response
{
"success": true,
"app": null
}Errors
| Status | Message |
|---|---|
| 400 | in_use must be true or false |
Example request
curl -X PATCH 'https://<your-org>.brambleit.cloud/api/v1/admin/tenant/apps-in-use/12.5' \
-H "X-API-Key: $BRAMBLE_KEY" \
-H "Content-Type: application/json" \
-d '{"in_use":"…"}'const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/admin/tenant/apps-in-use/12.5', {
method: 'PATCH',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY, 'Content-Type': 'application/json' },
body: JSON.stringify({"in_use":"…"}),
});
const data = await res.json();import os, requests
r = requests.patch(
"https://<your-org>.brambleit.cloud/api/v1/admin/tenant/apps-in-use/12.5",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
json={"in_use":"…"},
)
r.raise_for_status()
data = r.json()$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
$body = '{"in_use":"…"}'
Invoke-RestMethod -Method PATCH -Uri 'https://<your-org>.brambleit.cloud/api/v1/admin/tenant/apps-in-use/12.5' -Headers $headers -ContentType 'application/json' -Body $body#Get a licence package
/v1/admin/tenant/licenseOne package with who it's assigned to. (A POST because it takes tenant_package_id in the body.)
- Address
https://<your-org>.brambleit.cloud/api/v1/admin/tenant/license- Requires
- Signed-in session,
X-API-Key, or a Bramble app access token (Authorization: Bearer).
Role:GLOBAL_ADMIN.
Request body JSON
| Name | Type | Description |
|---|---|---|
tenant_package_idrequired | integer |
Response 200
| Field | Type | Description |
|---|---|---|
license | object | |
license.assigned_users | array of object | |
license.assigned_users[].id | integer | |
license.assigned_users[].email | string | |
license.assigned_users[].first_name | string, or null | |
license.assigned_users[].last_name | string, or null | |
license.assigned_users[].display_name | string, or null | |
license.assigned_users[].status | boolean |
Example response
{
"license": {
"…pkg": "…",
"assigned_users": [
{
"id": 42,
"email": "alex@example.com",
"first_name": "Alex",
"last_name": "Morgan",
"display_name": "Example display name",
"status": false
}
]
}
}Errors
| Status | Message |
|---|---|
| 400 | tenant_package_id is required |
| 404 | Package not found |
Example request
curl -X POST 'https://<your-org>.brambleit.cloud/api/v1/admin/tenant/license' \
-H "X-API-Key: $BRAMBLE_KEY" \
-H "Content-Type: application/json" \
-d '{"tenant_package_id":7}'const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/admin/tenant/license', {
method: 'POST',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY, 'Content-Type': 'application/json' },
body: JSON.stringify({"tenant_package_id":7}),
});
const data = await res.json();import os, requests
r = requests.post(
"https://<your-org>.brambleit.cloud/api/v1/admin/tenant/license",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
json={"tenant_package_id":7},
)
r.raise_for_status()
data = r.json()$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
$body = '{"tenant_package_id":7}'
Invoke-RestMethod -Method POST -Uri 'https://<your-org>.brambleit.cloud/api/v1/admin/tenant/license' -Headers $headers -ContentType 'application/json' -Body $bodyWas this page helpful?
Thanks for your feedback.