Skip to main content

Kanban Boards

Browse workspaces, list boards, inspect board configuration, and retrieve tasks associated with a board.

Prerequisites

All endpoints on this page require a valid JWT token, API key, and tenant header. See Authentication for details.


List Workspaces

Retrieve a paginated list of kanban workspaces available to the authenticated user.

GET/apidev/v1/kanban/workspaces
PermissionAPICLI_KANBAN_READ
Rate Limit30 req/min (sliding window)
Cache30s

Request Headers

Every request to a protected endpoint requires these headers:

HeaderRequiredDescription
AuthorizationYesBearer token obtained from the Login endpoint. Format: Bearer <token>
X-API-KeyYesCompany integration key provided during onboarding. Format: gtk_xxx...
tenantYesYour company hostname (e.g., yourcompany.geotareas.com)
Content-TypeConditionalapplication/json — required for POST and PUT requests

Query Parameters

ParameterTypeRequiredDefaultConstraintsDescription
limitintegerNo25Min 1, Max 100Records per page
offsetintegerNo00Records to skip

Response

FieldTypeDescription
idstringWorkspace unique identifier (BigInt)
namestringWorkspace display name
descriptionstring | nullOptional description
boards_countintegerNumber of boards in this workspace
rolestringAuthenticated user's role in the workspace
created_atstringISO 8601 timestamp

Code Examples

curl -s -X GET "$TENANT_URL/apidev/v1/kanban/workspaces?limit=10" \
-H "Authorization: Bearer $TOKEN" \
-H "X-API-Key: $APIKEY" \
-H "tenant: $TENANT"

Example Response

{
"success": true,
"data": [
{
"id": "7284917284917284",
"name": "Operations",
"description": "Main operations workspace for field teams.",
"boards_count": 4,
"role": "admin",
"created_at": "2025-09-01T10:00:00"
}
],
"meta": {
"total": 3,
"limit": 10,
"offset": 0
}
}

Rate Limit Headers

Every response includes rate limit information in the headers:

HeaderDescription
X-RateLimit-LimitMaximum number of requests allowed in the current window
X-RateLimit-RemainingNumber of requests remaining in the current window
X-RateLimit-ResetUnix timestamp (seconds) when the current window resets
Retry-AfterSeconds to wait before retrying (only present on 429 responses)
X-Request-IdUnique request identifier for debugging and support tickets

List Boards

Retrieve a paginated list of kanban boards. Optionally filter by workspace or type.

GET/apidev/v1/kanban/boards
PermissionAPICLI_KANBAN_READ
Rate Limit30 req/min (sliding window)
Cache30s

Query Parameters

ParameterTypeRequiredDefaultConstraintsDescription
limitintegerNo25Min 1, Max 100Records per page
offsetintegerNo00Records to skip
workspace_idstringNoMax length 30Filter by workspace ID
typestringNotasks or customFilter by board type

Response

FieldTypeDescription
idstringBoard unique identifier (BigInt)
namestringBoard display name
descriptionstring | nullOptional description
typestringBoard type: tasks or custom
workspace_idstringParent workspace ID (BigInt)
workspace_namestringParent workspace name
is_defaultbooleanWhether this is the default board
column_countintegerNumber of columns configured
statusstringBoard status
created_atstringISO 8601 timestamp

Code Examples

curl -s -X GET "$TENANT_URL/apidev/v1/kanban/boards?workspace_id=7284917284917284&type=tasks&limit=10" \
-H "Authorization: Bearer $TOKEN" \
-H "X-API-Key: $APIKEY" \
-H "tenant: $TENANT"

Example Response

{
"success": true,
"data": [
{
"id": "8391728491728491",
"name": "Field Installations",
"description": "Track field installation tasks from scheduling to completion.",
"type": "tasks",
"workspace_id": "7284917284917284",
"workspace_name": "Operations",
"is_default": false,
"column_count": 5,
"status": "active",
"created_at": "2025-09-05T11:00:00"
}
],
"meta": {
"total": 4,
"limit": 10,
"offset": 0
}
}

Board Detail

Retrieve the full configuration for a single board, including columns and custom fields.

GET/apidev/v1/kanban/boards/{id}
PermissionAPICLI_KANBAN_READ
Rate Limit30 req/min (sliding window)
Cache30s

Path Parameters

ParameterTypeRequiredDescription
idstringYesBoard unique identifier (BigInt)

Response

Returns the same top-level fields as List Boards, plus:

FieldTypeDescription
columnsarrayOrdered list of columns (see below)
custom_fieldsarrayCustom field definitions (see below)

columns[]:

FieldTypeDescription
idstringColumn unique identifier (BigInt)
namestringColumn display name
colorstring | nullHex color code
orderintegerPosition on the board
status_codesstring[]Task status codes mapped to this column
wip_limitinteger | nullWork-in-progress limit (null = unlimited)

custom_fields[]:

FieldTypeDescription
idstringField unique identifier (BigInt)
namestringField display name
typestringField type (text, number, date, select)
optionsstring[] | nullAvailable options for select type

Code Examples

curl -s -X GET "$TENANT_URL/apidev/v1/kanban/boards/8391728491728491" \
-H "Authorization: Bearer $TOKEN" \
-H "X-API-Key: $APIKEY" \
-H "tenant: $TENANT"

Example Response

{
"success": true,
"data": {
"id": "8391728491728491",
"name": "Field Installations",
"description": "Track field installation tasks from scheduling to completion.",
"type": "tasks",
"workspace_id": "7284917284917284",
"workspace_name": "Operations",
"is_default": false,
"columns": [
{
"id": "9100000000000001",
"name": "Backlog",
"color": "#6B7280",
"order": 1,
"status_codes": ["SA"],
"wip_limit": null
},
{
"id": "9100000000000002",
"name": "In Progress",
"color": "#3B82F6",
"order": 2,
"status_codes": ["ASI", "ACE", "INI"],
"wip_limit": 10
},
{
"id": "9100000000000003",
"name": "Done",
"color": "#10B981",
"order": 3,
"status_codes": ["FIN"],
"wip_limit": null
}
],
"custom_fields": [
{
"id": "6200000000000001",
"name": "Region",
"type": "select",
"options": ["North", "South", "East", "West"]
}
]
},
"meta": {}
}

Board Tasks

Retrieve tasks grouped by column for a specific board.

GET/apidev/v1/kanban/boards/{id}/tasks
PermissionAPICLI_KANBAN_READ
Rate Limit30 req/min (sliding window)
Cache15s

Path Parameters

ParameterTypeRequiredDescription
idstringYesBoard unique identifier (BigInt)

Query Parameters

ParameterTypeRequiredDefaultConstraintsDescription
statusstringNoMax length 50Filter by task status code
searchstringNoMax length 120Search task title or number
driver_idstringNoMax length 30Filter by driver ID (BigInt)
client_idstringNoMax length 30Filter by client ID (BigInt)
prioritystringNoMax length 20Filter by priority level

Response

FieldTypeDescription
board_idstringBoard ID (BigInt)
columnsarrayColumns with their tasks (see below)
total_tasksintegerTotal tasks across all columns
timestampstringISO 8601 timestamp of the snapshot

columns[]:

FieldTypeDescription
idstringColumn ID (BigInt)
namestringColumn display name
tasksarrayTasks in this column (see below)
task_countintegerNumber of tasks in this column

columns[].tasks[]:

FieldTypeDescription
idstringTask unique identifier (BigInt)
numberstringTask display number
statusstringCurrent task status code
titlestringTask title
client_namestring | nullClient name
account_namestring | nullAccount name
driver_namestring | nullAssigned driver name
prioritystringPriority level
scheduled_atstring | nullScheduled date (ISO 8601)
created_atstringCreation timestamp (ISO 8601)
delay_minutesinteger | nullMinutes of delay (null if on time)

Code Examples

curl -s -X GET "$TENANT_URL/apidev/v1/kanban/boards/8391728491728491/tasks?status=INI" \
-H "Authorization: Bearer $TOKEN" \
-H "X-API-Key: $APIKEY" \
-H "tenant: $TENANT"

Example Response

{
"success": true,
"data": {
"board_id": "8391728491728491",
"columns": [
{
"id": "9100000000000002",
"name": "In Progress",
"tasks": [
{
"id": "5001847291847291",
"number": "T-2026-00142",
"status": "INI",
"title": "Install GPS device at warehouse #7",
"client_name": "Acme Corp",
"account_name": "Warehouse District 7",
"driver_name": "Carlos Mendoza",
"priority": "high",
"scheduled_at": "2026-03-25T18:00:00",
"created_at": "2026-03-10T09:00:00",
"delay_minutes": 45
}
],
"task_count": 1
}
],
"total_tasks": 47,
"timestamp": "2026-03-19T16:45:00"
},
"meta": {}
}

Errors

CodeHTTPDescription
BAD_REQUEST400Missing required headers
VALIDATION_ERROR400Invalid query parameters
UNAUTHORIZED401Invalid or expired JWT / API Key
FORBIDDEN403User lacks required permission
NOT_FOUND404Resource not found
RATE_LIMITED429Exceeded rate limit
INTERNAL_ERROR500Unexpected server error