Appearance
kanban
23 endpoints.
GET /api/v1/kanban/boards
List Boards
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
include_archived | query | no | boolean |
200 — Successful Response
json
{
"type": "array",
"items": {
"properties": {
"id": {
"type": "string",
"title": "Id"
},
"name": {
"type": "string",
"title": "Name"
},
"color": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Color"
},
"position": {
"type": "integer",
"title": "Position"
},
"archived": {
"type": "boolean",
"title": "Archived"
},
"card_count": {
"type": "integer",
"title": "Card Count"
},
"created_at": {
"type": "string",
"format": "date-time",
"title": "Created At"
},
"assigned_to": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Assigned To"
},
"assigned_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Assigned Name"
},
"project_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Project Id"
},
"project_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Project Name"
}
},
"type": "object",
"required": [
"id",
"name",
"color",
"position",
"archived",
"card_count",
"created_at"
],
"title": "BoardSummary"
},
"title": "Response List Boards Api V1 Kanban Boards Get"
}422 — Validation Error
json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
]
},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}POST /api/v1/kanban/boards
Create Board
Request body
json
{
"properties": {
"name": {
"type": "string",
"maxLength": 255,
"minLength": 1,
"title": "Name"
},
"color": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Color"
}
},
"type": "object",
"required": [
"name"
],
"title": "BoardCreate"
}201 — Successful Response
json
{
"properties": {
"id": {
"type": "string",
"title": "Id"
},
"name": {
"type": "string",
"title": "Name"
},
"color": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Color"
},
"position": {
"type": "integer",
"title": "Position"
},
"archived": {
"type": "boolean",
"title": "Archived"
},
"card_count": {
"type": "integer",
"title": "Card Count"
},
"created_at": {
"type": "string",
"format": "date-time",
"title": "Created At"
},
"assigned_to": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Assigned To"
},
"assigned_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Assigned Name"
},
"project_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Project Id"
},
"project_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Project Name"
},
"columns": {
"items": {
"properties": {
"id": {
"type": "string",
"title": "Id"
},
"name": {
"type": "string",
"title": "Name"
},
"color": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Color"
},
"position": {
"type": "integer",
"title": "Position"
},
"cards": {
"items": {
"properties": {
"id": {
"type": "string",
"title": "Id"
},
"column_id": {
"type": "string",
"title": "Column Id"
},
"title": {
"type": "string",
"title": "Title"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Description"
},
"recurrence": {
"type": "string",
"title": "Recurrence"
},
"priority": {
"type": "string",
"title": "Priority"
},
"status": {
"type": "string",
"title": "Status"
},
"position": {
"type": "integer",
"title": "Position"
},
"total_seconds": {
"type": "integer",
"title": "Total Seconds"
},
"running": {
"type": "boolean",
"title": "Running"
},
"running_since": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Running Since"
},
"created_at": {
"type": "string",
"format": "date-time",
"title": "Created At"
}
},
"type": "object",
"required": [
"id",
"column_id",
"title",
"description",
"recurrence",
"priority",
"status",
"position",
"total_seconds",
"running",
"running_since",
"created_at"
],
"title": "CardResponse"
},
"type": "array",
"title": "Cards",
"default": []
}
},
"type": "object",
"required": [
"id",
"name",
"color",
"position"
],
"title": "ColumnResponse"
},
"type": "array",
"title": "Columns",
"default": []
}
},
"type": "object",
"required": [
"id",
"name",
"color",
"position",
"archived",
"card_count",
"created_at"
],
"title": "BoardDetail"
}422 — Validation Error
json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
]
},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}GET /api/v1/kanban/boards/{board_id}
Get Board
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
board_id | path | yes | string |
200 — Successful Response
json
{
"properties": {
"id": {
"type": "string",
"title": "Id"
},
"name": {
"type": "string",
"title": "Name"
},
"color": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Color"
},
"position": {
"type": "integer",
"title": "Position"
},
"archived": {
"type": "boolean",
"title": "Archived"
},
"card_count": {
"type": "integer",
"title": "Card Count"
},
"created_at": {
"type": "string",
"format": "date-time",
"title": "Created At"
},
"assigned_to": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Assigned To"
},
"assigned_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Assigned Name"
},
"project_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Project Id"
},
"project_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Project Name"
},
"columns": {
"items": {
"properties": {
"id": {
"type": "string",
"title": "Id"
},
"name": {
"type": "string",
"title": "Name"
},
"color": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Color"
},
"position": {
"type": "integer",
"title": "Position"
},
"cards": {
"items": {
"properties": {
"id": {
"type": "string",
"title": "Id"
},
"column_id": {
"type": "string",
"title": "Column Id"
},
"title": {
"type": "string",
"title": "Title"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Description"
},
"recurrence": {
"type": "string",
"title": "Recurrence"
},
"priority": {
"type": "string",
"title": "Priority"
},
"status": {
"type": "string",
"title": "Status"
},
"position": {
"type": "integer",
"title": "Position"
},
"total_seconds": {
"type": "integer",
"title": "Total Seconds"
},
"running": {
"type": "boolean",
"title": "Running"
},
"running_since": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Running Since"
},
"created_at": {
"type": "string",
"format": "date-time",
"title": "Created At"
}
},
"type": "object",
"required": [
"id",
"column_id",
"title",
"description",
"recurrence",
"priority",
"status",
"position",
"total_seconds",
"running",
"running_since",
"created_at"
],
"title": "CardResponse"
},
"type": "array",
"title": "Cards",
"default": []
}
},
"type": "object",
"required": [
"id",
"name",
"color",
"position"
],
"title": "ColumnResponse"
},
"type": "array",
"title": "Columns",
"default": []
}
},
"type": "object",
"required": [
"id",
"name",
"color",
"position",
"archived",
"card_count",
"created_at"
],
"title": "BoardDetail"
}422 — Validation Error
json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
]
},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}PATCH /api/v1/kanban/boards/{board_id}
Update Board
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
board_id | path | yes | string |
Request body
json
{
"properties": {
"name": {
"anyOf": [
{
"type": "string",
"maxLength": 255,
"minLength": 1
},
{
"type": "null"
}
],
"title": "Name"
},
"color": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Color"
},
"position": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Position"
},
"archived": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Archived"
},
"assigned_to": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Assigned To"
},
"project_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Project Id"
}
},
"type": "object",
"title": "BoardUpdate"
}200 — Successful Response
json
{
"properties": {
"id": {
"type": "string",
"title": "Id"
},
"name": {
"type": "string",
"title": "Name"
},
"color": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Color"
},
"position": {
"type": "integer",
"title": "Position"
},
"archived": {
"type": "boolean",
"title": "Archived"
},
"card_count": {
"type": "integer",
"title": "Card Count"
},
"created_at": {
"type": "string",
"format": "date-time",
"title": "Created At"
},
"assigned_to": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Assigned To"
},
"assigned_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Assigned Name"
},
"project_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Project Id"
},
"project_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Project Name"
}
},
"type": "object",
"required": [
"id",
"name",
"color",
"position",
"archived",
"card_count",
"created_at"
],
"title": "BoardSummary"
}422 — Validation Error
json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
]
},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}DELETE /api/v1/kanban/boards/{board_id}
Delete Board
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
board_id | path | yes | string |
204 — Successful Response
422 — Validation Error
json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
]
},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}POST /api/v1/kanban/boards/{board_id}/columns
Create Column
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
board_id | path | yes | string |
Request body
json
{
"properties": {
"name": {
"type": "string",
"maxLength": 255,
"minLength": 1,
"title": "Name"
},
"color": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Color"
}
},
"type": "object",
"required": [
"name"
],
"title": "ColumnCreate"
}201 — Successful Response
json
{
"properties": {
"id": {
"type": "string",
"title": "Id"
},
"name": {
"type": "string",
"title": "Name"
},
"color": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Color"
},
"position": {
"type": "integer",
"title": "Position"
},
"cards": {
"items": {
"properties": {
"id": {
"type": "string",
"title": "Id"
},
"column_id": {
"type": "string",
"title": "Column Id"
},
"title": {
"type": "string",
"title": "Title"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Description"
},
"recurrence": {
"type": "string",
"title": "Recurrence"
},
"priority": {
"type": "string",
"title": "Priority"
},
"status": {
"type": "string",
"title": "Status"
},
"position": {
"type": "integer",
"title": "Position"
},
"total_seconds": {
"type": "integer",
"title": "Total Seconds"
},
"running": {
"type": "boolean",
"title": "Running"
},
"running_since": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Running Since"
},
"created_at": {
"type": "string",
"format": "date-time",
"title": "Created At"
}
},
"type": "object",
"required": [
"id",
"column_id",
"title",
"description",
"recurrence",
"priority",
"status",
"position",
"total_seconds",
"running",
"running_since",
"created_at"
],
"title": "CardResponse"
},
"type": "array",
"title": "Cards",
"default": []
}
},
"type": "object",
"required": [
"id",
"name",
"color",
"position"
],
"title": "ColumnResponse"
}422 — Validation Error
json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
]
},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}PATCH /api/v1/kanban/columns/{column_id}
Update Column
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
column_id | path | yes | string |
Request body
json
{
"properties": {
"name": {
"anyOf": [
{
"type": "string",
"maxLength": 255,
"minLength": 1
},
{
"type": "null"
}
],
"title": "Name"
},
"color": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Color"
},
"position": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Position"
}
},
"type": "object",
"title": "ColumnUpdate"
}200 — Successful Response
json
{
"properties": {
"id": {
"type": "string",
"title": "Id"
},
"name": {
"type": "string",
"title": "Name"
},
"color": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Color"
},
"position": {
"type": "integer",
"title": "Position"
},
"cards": {
"items": {
"properties": {
"id": {
"type": "string",
"title": "Id"
},
"column_id": {
"type": "string",
"title": "Column Id"
},
"title": {
"type": "string",
"title": "Title"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Description"
},
"recurrence": {
"type": "string",
"title": "Recurrence"
},
"priority": {
"type": "string",
"title": "Priority"
},
"status": {
"type": "string",
"title": "Status"
},
"position": {
"type": "integer",
"title": "Position"
},
"total_seconds": {
"type": "integer",
"title": "Total Seconds"
},
"running": {
"type": "boolean",
"title": "Running"
},
"running_since": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Running Since"
},
"created_at": {
"type": "string",
"format": "date-time",
"title": "Created At"
}
},
"type": "object",
"required": [
"id",
"column_id",
"title",
"description",
"recurrence",
"priority",
"status",
"position",
"total_seconds",
"running",
"running_since",
"created_at"
],
"title": "CardResponse"
},
"type": "array",
"title": "Cards",
"default": []
}
},
"type": "object",
"required": [
"id",
"name",
"color",
"position"
],
"title": "ColumnResponse"
}422 — Validation Error
json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
]
},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}DELETE /api/v1/kanban/columns/{column_id}
Delete Column
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
column_id | path | yes | string |
204 — Successful Response
422 — Validation Error
json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
]
},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}POST /api/v1/kanban/columns/{column_id}/cards
Create Card
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
column_id | path | yes | string |
Request body
json
{
"properties": {
"title": {
"type": "string",
"maxLength": 512,
"minLength": 1,
"title": "Title"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Description"
},
"recurrence": {
"type": "string",
"title": "Recurrence",
"default": "none"
},
"priority": {
"type": "string",
"title": "Priority",
"default": "medium"
}
},
"type": "object",
"required": [
"title"
],
"title": "CardCreate"
}201 — Successful Response
json
{
"properties": {
"id": {
"type": "string",
"title": "Id"
},
"column_id": {
"type": "string",
"title": "Column Id"
},
"title": {
"type": "string",
"title": "Title"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Description"
},
"recurrence": {
"type": "string",
"title": "Recurrence"
},
"priority": {
"type": "string",
"title": "Priority"
},
"status": {
"type": "string",
"title": "Status"
},
"position": {
"type": "integer",
"title": "Position"
},
"total_seconds": {
"type": "integer",
"title": "Total Seconds"
},
"running": {
"type": "boolean",
"title": "Running"
},
"running_since": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Running Since"
},
"created_at": {
"type": "string",
"format": "date-time",
"title": "Created At"
}
},
"type": "object",
"required": [
"id",
"column_id",
"title",
"description",
"recurrence",
"priority",
"status",
"position",
"total_seconds",
"running",
"running_since",
"created_at"
],
"title": "CardResponse"
}422 — Validation Error
json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
]
},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}PATCH /api/v1/kanban/cards/{card_id}
Update Card
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
card_id | path | yes | string |
Request body
json
{
"properties": {
"title": {
"anyOf": [
{
"type": "string",
"maxLength": 512,
"minLength": 1
},
{
"type": "null"
}
],
"title": "Title"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Description"
},
"recurrence": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Recurrence"
},
"priority": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Priority"
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Status"
}
},
"type": "object",
"title": "CardUpdate"
}200 — Successful Response
json
{
"properties": {
"id": {
"type": "string",
"title": "Id"
},
"column_id": {
"type": "string",
"title": "Column Id"
},
"title": {
"type": "string",
"title": "Title"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Description"
},
"recurrence": {
"type": "string",
"title": "Recurrence"
},
"priority": {
"type": "string",
"title": "Priority"
},
"status": {
"type": "string",
"title": "Status"
},
"position": {
"type": "integer",
"title": "Position"
},
"total_seconds": {
"type": "integer",
"title": "Total Seconds"
},
"running": {
"type": "boolean",
"title": "Running"
},
"running_since": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Running Since"
},
"created_at": {
"type": "string",
"format": "date-time",
"title": "Created At"
}
},
"type": "object",
"required": [
"id",
"column_id",
"title",
"description",
"recurrence",
"priority",
"status",
"position",
"total_seconds",
"running",
"running_since",
"created_at"
],
"title": "CardResponse"
}422 — Validation Error
json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
]
},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}DELETE /api/v1/kanban/cards/{card_id}
Delete Card
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
card_id | path | yes | string |
204 — Successful Response
422 — Validation Error
json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
]
},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}POST /api/v1/kanban/cards/{card_id}/move
Move Card
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
card_id | path | yes | string |
Request body
json
{
"properties": {
"column_id": {
"type": "string",
"title": "Column Id"
},
"position": {
"type": "integer",
"title": "Position",
"default": 0
}
},
"type": "object",
"required": [
"column_id"
],
"title": "CardMove"
}200 — Successful Response
json
{
"properties": {
"id": {
"type": "string",
"title": "Id"
},
"column_id": {
"type": "string",
"title": "Column Id"
},
"title": {
"type": "string",
"title": "Title"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Description"
},
"recurrence": {
"type": "string",
"title": "Recurrence"
},
"priority": {
"type": "string",
"title": "Priority"
},
"status": {
"type": "string",
"title": "Status"
},
"position": {
"type": "integer",
"title": "Position"
},
"total_seconds": {
"type": "integer",
"title": "Total Seconds"
},
"running": {
"type": "boolean",
"title": "Running"
},
"running_since": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Running Since"
},
"created_at": {
"type": "string",
"format": "date-time",
"title": "Created At"
}
},
"type": "object",
"required": [
"id",
"column_id",
"title",
"description",
"recurrence",
"priority",
"status",
"position",
"total_seconds",
"running",
"running_since",
"created_at"
],
"title": "CardResponse"
}422 — Validation Error
json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
]
},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}POST /api/v1/kanban/cards/{card_id}/start
Start Card
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
card_id | path | yes | string |
200 — Successful Response
json
{
"properties": {
"id": {
"type": "string",
"title": "Id"
},
"column_id": {
"type": "string",
"title": "Column Id"
},
"title": {
"type": "string",
"title": "Title"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Description"
},
"recurrence": {
"type": "string",
"title": "Recurrence"
},
"priority": {
"type": "string",
"title": "Priority"
},
"status": {
"type": "string",
"title": "Status"
},
"position": {
"type": "integer",
"title": "Position"
},
"total_seconds": {
"type": "integer",
"title": "Total Seconds"
},
"running": {
"type": "boolean",
"title": "Running"
},
"running_since": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Running Since"
},
"created_at": {
"type": "string",
"format": "date-time",
"title": "Created At"
}
},
"type": "object",
"required": [
"id",
"column_id",
"title",
"description",
"recurrence",
"priority",
"status",
"position",
"total_seconds",
"running",
"running_since",
"created_at"
],
"title": "CardResponse"
}422 — Validation Error
json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
]
},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}POST /api/v1/kanban/cards/{card_id}/stop
Stop Card
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
card_id | path | yes | string |
200 — Successful Response
json
{
"properties": {
"id": {
"type": "string",
"title": "Id"
},
"column_id": {
"type": "string",
"title": "Column Id"
},
"title": {
"type": "string",
"title": "Title"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Description"
},
"recurrence": {
"type": "string",
"title": "Recurrence"
},
"priority": {
"type": "string",
"title": "Priority"
},
"status": {
"type": "string",
"title": "Status"
},
"position": {
"type": "integer",
"title": "Position"
},
"total_seconds": {
"type": "integer",
"title": "Total Seconds"
},
"running": {
"type": "boolean",
"title": "Running"
},
"running_since": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Running Since"
},
"created_at": {
"type": "string",
"format": "date-time",
"title": "Created At"
}
},
"type": "object",
"required": [
"id",
"column_id",
"title",
"description",
"recurrence",
"priority",
"status",
"position",
"total_seconds",
"running",
"running_since",
"created_at"
],
"title": "CardResponse"
}422 — Validation Error
json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
]
},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}POST /api/v1/kanban/cards/{card_id}/done
Done Card
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
card_id | path | yes | string |
200 — Successful Response
json
{
"properties": {
"id": {
"type": "string",
"title": "Id"
},
"column_id": {
"type": "string",
"title": "Column Id"
},
"title": {
"type": "string",
"title": "Title"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Description"
},
"recurrence": {
"type": "string",
"title": "Recurrence"
},
"priority": {
"type": "string",
"title": "Priority"
},
"status": {
"type": "string",
"title": "Status"
},
"position": {
"type": "integer",
"title": "Position"
},
"total_seconds": {
"type": "integer",
"title": "Total Seconds"
},
"running": {
"type": "boolean",
"title": "Running"
},
"running_since": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Running Since"
},
"created_at": {
"type": "string",
"format": "date-time",
"title": "Created At"
}
},
"type": "object",
"required": [
"id",
"column_id",
"title",
"description",
"recurrence",
"priority",
"status",
"position",
"total_seconds",
"running",
"running_since",
"created_at"
],
"title": "CardResponse"
}422 — Validation Error
json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
]
},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}GET /api/v1/kanban/track/status
Track Status
200 — Successful Response
json
{
"properties": {
"board_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Board Id"
},
"running": {
"items": {
"properties": {
"card_id": {
"type": "string",
"title": "Card Id"
},
"title": {
"type": "string",
"title": "Title"
},
"started_at": {
"type": "string",
"format": "date-time",
"title": "Started At"
}
},
"type": "object",
"required": [
"card_id",
"title",
"started_at"
],
"title": "TrackedTimer"
},
"type": "array",
"title": "Running",
"default": []
}
},
"type": "object",
"title": "TrackStatusResponse"
}POST /api/v1/kanban/track/start
Track Start
Request body
json
{
"properties": {
"title": {
"type": "string",
"maxLength": 512,
"minLength": 1,
"title": "Title"
}
},
"type": "object",
"required": [
"title"
],
"title": "TrackRequest",
"description": "Start/stop tracking against a dashboard stat card. ``title`` is the\nkanban card title the time books to (e.g. \"CRM: Phone Calls\")."
}200 — Successful Response
json
{
"properties": {
"board_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Board Id"
},
"running": {
"items": {
"properties": {
"card_id": {
"type": "string",
"title": "Card Id"
},
"title": {
"type": "string",
"title": "Title"
},
"started_at": {
"type": "string",
"format": "date-time",
"title": "Started At"
}
},
"type": "object",
"required": [
"card_id",
"title",
"started_at"
],
"title": "TrackedTimer"
},
"type": "array",
"title": "Running",
"default": []
}
},
"type": "object",
"title": "TrackStatusResponse"
}422 — Validation Error
json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
]
},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}POST /api/v1/kanban/track/stop
Track Stop
Request body
json
{
"properties": {
"title": {
"type": "string",
"maxLength": 512,
"minLength": 1,
"title": "Title"
}
},
"type": "object",
"required": [
"title"
],
"title": "TrackRequest",
"description": "Start/stop tracking against a dashboard stat card. ``title`` is the\nkanban card title the time books to (e.g. \"CRM: Phone Calls\")."
}200 — Successful Response
json
{
"properties": {
"board_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Board Id"
},
"running": {
"items": {
"properties": {
"card_id": {
"type": "string",
"title": "Card Id"
},
"title": {
"type": "string",
"title": "Title"
},
"started_at": {
"type": "string",
"format": "date-time",
"title": "Started At"
}
},
"type": "object",
"required": [
"card_id",
"title",
"started_at"
],
"title": "TrackedTimer"
},
"type": "array",
"title": "Running",
"default": []
}
},
"type": "object",
"title": "TrackStatusResponse"
}422 — Validation Error
json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
]
},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}GET /api/v1/kanban/tasks
List Tasks
Every open (non-done) tasklist card of the tenant in one flat list — the ERP dashboard's Tasks panel, where task timers are started/stopped. include_done=true adds the completed ones too (the panel's "Show done" toggle); the panel sorts them below the open ones. Skips archived boards and the auto-created "Dashboard" tracking board: its cards mirror stat cards that carry their own play buttons. Like the board list, non-superusers only get cards from boards assigned to them.
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
include_done | query | no | boolean |
200 — Successful Response
json
{
"type": "array",
"items": {
"properties": {
"id": {
"type": "string",
"title": "Id"
},
"column_id": {
"type": "string",
"title": "Column Id"
},
"title": {
"type": "string",
"title": "Title"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Description"
},
"recurrence": {
"type": "string",
"title": "Recurrence"
},
"priority": {
"type": "string",
"title": "Priority"
},
"status": {
"type": "string",
"title": "Status"
},
"position": {
"type": "integer",
"title": "Position"
},
"total_seconds": {
"type": "integer",
"title": "Total Seconds"
},
"running": {
"type": "boolean",
"title": "Running"
},
"running_since": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Running Since"
},
"created_at": {
"type": "string",
"format": "date-time",
"title": "Created At"
},
"board_id": {
"type": "string",
"title": "Board Id"
},
"board_name": {
"type": "string",
"title": "Board Name"
},
"board_assigned_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Board Assigned Name"
},
"board_project_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Board Project Name"
},
"column_name": {
"type": "string",
"title": "Column Name"
}
},
"type": "object",
"required": [
"id",
"column_id",
"title",
"description",
"recurrence",
"priority",
"status",
"position",
"total_seconds",
"running",
"running_since",
"created_at",
"board_id",
"board_name",
"column_name"
],
"title": "TaskItem",
"description": "A card plus its board/column context — the ERP dashboard's Tasks panel\nlists every open task across all tasklists in one flat feed, and its\nStart/Stop buttons are where task timers are driven from."
},
"title": "Response List Tasks Api V1 Kanban Tasks Get"
}422 — Validation Error
json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
]
},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}GET /api/v1/kanban/projects
List Projects
The tenant's projects (id + name + status), for the Tasklists page's board→project picker. Full project management lives on /g/projects.
200 — Successful Response
json
{
"items": {
"properties": {
"id": {
"type": "string",
"title": "Id"
},
"name": {
"type": "string",
"title": "Name"
},
"status": {
"type": "string",
"title": "Status"
}
},
"type": "object",
"required": [
"id",
"name",
"status"
],
"title": "ProjectOption",
"description": "A Project Management project, as the Tasklists board→project picker\nneeds it (full management lives on the /g/projects grid)."
},
"type": "array",
"title": "Response List Projects Api V1 Kanban Projects Get"
}GET /api/v1/kanban/boards/{board_id}/time-report
Time Report
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
board_id | path | yes | string |
200 — Successful Response
json
{
"properties": {
"total_seconds": {
"type": "integer",
"title": "Total Seconds"
},
"rows": {
"items": {
"properties": {
"user_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "User Id"
},
"user_name": {
"type": "string",
"title": "User Name"
},
"seconds": {
"type": "integer",
"title": "Seconds"
}
},
"type": "object",
"required": [
"user_id",
"user_name",
"seconds"
],
"title": "TimeReportRow"
},
"type": "array",
"title": "Rows"
},
"running": {
"items": {
"properties": {
"id": {
"type": "string",
"title": "Id"
},
"user_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "User Id"
},
"user_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "User Name"
},
"started_at": {
"type": "string",
"format": "date-time",
"title": "Started At"
},
"ended_at": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Ended At"
},
"seconds": {
"type": "integer",
"title": "Seconds"
}
},
"type": "object",
"required": [
"id",
"user_id",
"started_at",
"ended_at",
"seconds"
],
"title": "TimeEntryResponse"
},
"type": "array",
"title": "Running"
}
},
"type": "object",
"required": [
"total_seconds",
"rows",
"running"
],
"title": "TimeReportResponse"
}422 — Validation Error
json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
]
},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}GET /api/v1/kanban/time-report/detailed
Tenant Timesheet
The tenant's single timesheet — every board's tracked time (dashboard card timers and tasklist timers) in one per-user/day report.
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
date_from | query | no | ||
date_to | query | no |
200 — Successful Response
json
{
"properties": {
"from_date": {
"type": "string",
"title": "From Date"
},
"to_date": {
"type": "string",
"title": "To Date"
},
"groups": {
"items": {
"properties": {
"user_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "User Id"
},
"user_name": {
"type": "string",
"title": "User Name"
},
"date": {
"type": "string",
"title": "Date"
},
"total_seconds": {
"type": "integer",
"title": "Total Seconds"
},
"tasks": {
"items": {
"properties": {
"card_id": {
"type": "string",
"title": "Card Id"
},
"title": {
"type": "string",
"title": "Title"
},
"seconds": {
"type": "integer",
"title": "Seconds"
},
"status": {
"type": "string",
"title": "Status"
},
"status_label": {
"type": "string",
"title": "Status Label"
},
"board_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Board Name"
}
},
"type": "object",
"required": [
"card_id",
"title",
"seconds",
"status",
"status_label"
],
"title": "DetailedTask"
},
"type": "array",
"title": "Tasks"
}
},
"type": "object",
"required": [
"user_id",
"user_name",
"date",
"total_seconds",
"tasks"
],
"title": "DetailedGroup"
},
"type": "array",
"title": "Groups"
},
"grand_total_seconds": {
"type": "integer",
"title": "Grand Total Seconds"
}
},
"type": "object",
"required": [
"from_date",
"to_date",
"groups",
"grand_total_seconds"
],
"title": "DetailedReportResponse"
}422 — Validation Error
json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
]
},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}GET /api/v1/kanban/boards/{board_id}/time-report/detailed
Detailed Time Report
Same breakdown scoped to one board (kept for API compatibility — the UI's dialogs now open the tenant-wide timesheet above).
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
board_id | path | yes | string | |
date_from | query | no | ||
date_to | query | no |
200 — Successful Response
json
{
"properties": {
"from_date": {
"type": "string",
"title": "From Date"
},
"to_date": {
"type": "string",
"title": "To Date"
},
"groups": {
"items": {
"properties": {
"user_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "User Id"
},
"user_name": {
"type": "string",
"title": "User Name"
},
"date": {
"type": "string",
"title": "Date"
},
"total_seconds": {
"type": "integer",
"title": "Total Seconds"
},
"tasks": {
"items": {
"properties": {
"card_id": {
"type": "string",
"title": "Card Id"
},
"title": {
"type": "string",
"title": "Title"
},
"seconds": {
"type": "integer",
"title": "Seconds"
},
"status": {
"type": "string",
"title": "Status"
},
"status_label": {
"type": "string",
"title": "Status Label"
},
"board_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Board Name"
}
},
"type": "object",
"required": [
"card_id",
"title",
"seconds",
"status",
"status_label"
],
"title": "DetailedTask"
},
"type": "array",
"title": "Tasks"
}
},
"type": "object",
"required": [
"user_id",
"user_name",
"date",
"total_seconds",
"tasks"
],
"title": "DetailedGroup"
},
"type": "array",
"title": "Groups"
},
"grand_total_seconds": {
"type": "integer",
"title": "Grand Total Seconds"
}
},
"type": "object",
"required": [
"from_date",
"to_date",
"groups",
"grand_total_seconds"
],
"title": "DetailedReportResponse"
}422 — Validation Error
json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
]
},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}