/api/boardRole: ViewerWorkspace
The complete board of ONE workspace, in a single payload.
Carries tenants, columns, projects, epics, labels, templates, cards, links and the settings. Cards come as a flat list rather than nested by column: each card carries the columnId it belongs to.
Query parameters
Request
curl -s "http://localhost:3000/api/board?tenant=cmsp4djx60002p801o7ybpkv7" \
-H "Authorization: Bearer $TOKEN"const response = await fetch(
`http://localhost:3000/api/board?tenant=${tenantId}`,
{ headers: { Authorization: `Bearer ${token}` } },
);
const board = await response.json();
// An id out of reach falls back to the account's first workspace; see `tenantId`.
const ativo = board.tenantId;Response200
{
"tenants": [
{ "id": "cmsp4djx60002p801o7ybpkv7", "name": "Pessoal", "color": "amber", "position": 0, "cardCount": 12, "projectCount": 2 }
],
"tenantId": "cmsp4djx60002p801o7ybpkv7",
"columns": [
{ "id": "cmttg1vdl000tlf01uuqhz8ad", "projectId": null, "name": "A fazer", "accent": "stone", "position": 0, "done": false }
],
"projects": [
{ "id": "cmttg1vjy000zlf015g097nhi", "name": "Integrações", "description": null, "color": "sky", "position": 0 }
],
"epics": [
{ "id": "cmttg1vs50015lf010l6k38uq", "projectId": "cmttg1vjy000zlf015g097nhi", "name": "Onboarding", "description": null, "color": "amber", "status": "ACTIVE", "locked": false, "dueAt": "2026-10-31T23:59:00.000Z", "dueAtZone": "America/Sao_Paulo", "position": 0 }
],
"tags": [{ "id": "cmttg1vnk0011lf01q0eswms5", "name": "api", "color": "mint" }],
"templates": [],
"cards": [],
"relations": [],
"settings": {
"allowCrossProjectLinks": false,
"epicsEnabled": true,
"columnScope": "TENANT",
"uploadMode": "ALL"
// … the remaining ApiSettings fields; see GET /api/settings
}
}Error responses
Whoever is a member of no workspace gets an empty payload, not a 403: it is a state of the account, not a failure. Comments and history stay outside this payload.