Skip to content
Download OpenAPI description
Languages
Servers
https://api.kanbert.com/api/v1
Operations
Operations
Operations

Request

No specific scope required.

Security
http or oauth2
Query
sortstring

Available sorts are shortcode, title, updated_at, created_at, computed_fields.<alias>.
You can sort by multiple options by separating them with a comma. To sort in descending order, use - sign in front of the sort, for example: -title.

Example: sort=sort=-created_at,title
includestring

Available includes are team, guests, tags, client, client.primary_contact. You can include multiple options by separating them with a comma.

page[size]integer

The number of results that will be returned per page.

Default 30
page[cursor]string

The cursor to start the pagination from.

filterstring

Allowed filter fields (with allowed operators):

FieldTypeOperators
shortcodestringin, nin, notin, eq, ne, neq, contains, like, startswith, endswith, isnull, isnotnull, notnull
titlestringin, nin, notin, eq, ne, neq, contains, like, startswith, endswith, isnull, isnotnull, notnull
statusenum:running, closedeq, ne, neq, in, nin, notin, isnull, isnotnull, notnull
is_acquisitionbooleaneq, ne, neq
client.idid<ClientFullData>eq, ne, neq, in, nin, notin, isnull, isnotnull, notnull
client.namestringin, nin, notin, eq, ne, neq, contains, like, startswith, endswith, isnull, isnotnull, notnull
client.shortcodestringin, nin, notin, eq, ne, neq, contains, like, startswith, endswith, isnull, isnotnull, notnull
client.primary_contact_idid<UserFullData>eq, ne, neq, in, nin, notin, isnull, isnotnull, notnull
project_type.titlestringin, nin, notin, eq, ne, neq, contains, like, startswith, endswith, isnull, isnotnull, notnull
project_type.idideq, ne, neq, in, nin, notin, isnull, isnotnull, notnull
created_byid<UserData>eq, ne, neq, in, nin, notin, isnull, isnotnull, notnull
created_atdatetimeeq, ne, neq, lt, lte, le, gt, gte, ge, in, nin, notin, isnull, isnotnull, notnull
start_datedateeq, ne, neq, lt, lte, le, gt, gte, ge, in, nin, notin, isnull, isnotnull, notnull
end_datedateeq, ne, neq, lt, lte, le, gt, gte, ge, in, nin, notin, isnull, isnotnull, notnull
tagsRelation
- title (string)
any, none, count, all
teamRelation
- id (id)
- email (string)
- space.id (id)
- space.name (string)
- added_at (datetime)
any, none, count, all
guestsRelation
- id (id)
- email (string)
- added_at (datetime)
any, none, count, all
tasksRelation
- uri (string)
- title (string)
- parent_task.id (id)
- assignee.id (id)
- assignee.email (string)
- status (enum)
any, none, count, all

Filtering expression. Accepts either JSON (array/tree of conditions) or a readable string DSL.

You can check the full syntax at Docs Filtering section.

Special values:

  • me.id — current authenticated user id (usable on fields of type id). Example: id eq me.id
  • now — current date-time. Example: dueOn lt now
  • sow/eow — start/end of week. Examples: dueOn gt sow, dueOn lt eow
  • som/eom — start/end of month. Examples: dueOn gt som, dueOn lt eom
  • today — special date for today; with eq it expands to the whole day range. Example: dueOn eq today
  • today±Nd — relative day offset. Examples: today-30d, today+5d.
Example: filter=title contains "Acme" and (created_at >= "2024-01-01" or client.name contains "Corp")
computed_fields[alias]string

Dynamic computed relation fields (computed_fields[alias])

Declare ad-hoc aggregates per request using: computed_fields[<alias>] = relation.aggregate(args)

Syntax:

  • Count: relation.count() or relation.count(<where>)
  • Sum/Avg/Min/Max: relation.sum(<column>) or relation.sum(<column>, <where>)

Where is written using the same Filter DSL and is validated against the relation's allowed fields.

Use the prefix computed_fields. when referencing these aliases in filter or sort, e.g., filter=computed_fields.tasks_done gte 1 or sort=-computed_fields.tasks_done. Bare aliases are accepted for backward compatibility but deprecated.

Allowed relations for computed_fields (deny-all by default):

  • tasks (→ effort_sum): aggregates: count, sum, avg, min, max; coalesce default: 0

Example: ?computed_fields[tasks_done]=tasks.count(status%20eq%20%22Completed%22)&filter=computed_fields.tasks_done%20gt%200

Example: computed_fields[alias]=computed_fields[tasks_done]=tasks.count(status%20eq%20%22Completed%22)
curl -i -X GET \
  'https://api.kanbert.com/api/v1/projects?sort=sort%3D-created_at%2Ctitle&include=string&page%5Bsize%5D=30&page%5Bcursor%5D=string&filter=title+contains+%22Acme%22+and+%28created_at+%3E%3D+%222024-01-01%22+or+client.name+contains+%22Corp%22%29&computed_fields%5Balias%5D=computed_fields%5Btasks_done%5D%3Dtasks.count%28status%2520eq%2520%2522Completed%2522%29' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

The cursor paginated collection of ProjectData

Bodyapplication/json
dataArray of objects(ProjectData)required

The list of items

data[].​idstringrequired
data[].​external_idstring or nullrequired

Can be used to add an identifier to the project from an external system, must be unique

data[].​external_originstring or nullrequired

If originated from external system origin is added

data[].​titlestringrequired
data[].​shortcodestringrequired
data[].​po_numberstring or nullrequired
data[].​project_typeobject(ProjectTypeData)required
data[].​project_type.​idstringrequired
data[].​project_type.​titlestringrequired
data[].​project_type.​shortcodestringrequired
data[].​project_type.​colorstringrequired
data[].​project_type.​orderintegerrequired
data[].​project_type.​is_defaultbooleanrequired
data[].​statusstringrequired
data[].​is_acquisitionbooleanrequired
data[].​is_privatebooleanrequired
data[].​start_datestring or null(date)required
data[].​end_datestring or null(date)required
data[].​clientobject(ClientData)required
data[].​client.​idstringrequired
data[].​client.​external_idstring or nullrequired

Can be used to add an identifier to the client from an external system, must be unique

data[].​client.​external_originstring or nullrequired

If originated from external system origin is added

data[].​client.​namestringrequired
data[].​client.​shortcodestring or nullrequired
data[].​client.​primary_contactUserData (object) or nullrequired
Any of:
data[].​client.​primary_contact.​idstringrequired
data[].​client.​primary_contact.​first_namestringrequired
data[].​client.​primary_contact.​last_namestringrequired
data[].​client.​primary_contact.​emailstringrequired
data[].​client.​primary_contact.​typestring(UserType)required
Enum"user""guest""tax_advisor""integration"
data[].​client.​primary_contact.​spaceobject(SpaceData)required
data[].​client.​primary_contact.​space.​idstringrequired
data[].​client.​primary_contact.​space.​namestringrequired
data[].​client.​origin_spaceSpaceData (object) or nullrequired
Any of:

Shared space which the client is shared from, if null client is not shared

data[].​client.​origin_space.​idstringrequired
data[].​client.​origin_space.​namestringrequired
data[].​tagsArray of objects(ProjectTagData)
data[].​custom_fieldsobjectrequired

The key is the field name for your custom field, value type depends on the field type

data[].​custom_fields.​property name*string or boolean or integer or nulladditional property
Any of:
string
data[].​origin_spaceSpaceData (object) or nullrequired
Any of:

Shared space which the project is shared from, if null project is not shared

data[].​origin_space.​idstringrequired
data[].​origin_space.​namestringrequired
data[].​teamArray of objects(TeamMemberData)

Project team

data[].​guestsArray of objects(TeamMemberData)

Project guests

data[].​computed_fieldsobject
linksArray of stringsrequired
metaobjectrequired
meta.​pathstring or nullrequired

Base path for paginator generated URLs.

meta.​per_pageintegerrequired

Number of items shown per page.

meta.​next_cursorstring or nullrequired
meta.​next_cursor_urlstring or nullrequired
meta.​prev_cursorstring or nullrequired
meta.​prev_cursor_urlstring or nullrequired
Response
application/json
{ "data": [ { … } ], "links": [ "string" ], "meta": { "path": "string", "per_page": 0, "next_cursor": "string", "next_cursor_url": "string", "prev_cursor": "string", "prev_cursor_url": "string" } }

Request

No specific scope required.

Security
http or oauth2
Path
idstringrequired
Query
find_bystring

The field to search by

Default "id"
Enum"id""external_id""shortcode"
originstring

Used if find_by=external_id by default it will use the integration slug

includestring

Available includes are client, client.primaryContact. You can include multiple options by separating them with a comma.

curl -i -X GET \
  'https://api.kanbert.com/api/v1/projects/{id}?find_by=id&origin=string&include=string' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

ProjectData

Bodyapplication/json
idstringrequired
external_idstring or nullrequired

Can be used to add an identifier to the project from an external system, must be unique

external_originstring or nullrequired

If originated from external system origin is added

titlestringrequired
shortcodestringrequired
po_numberstring or nullrequired
project_typeobject(ProjectTypeData)required
project_type.​idstringrequired
project_type.​titlestringrequired
project_type.​shortcodestringrequired
project_type.​colorstringrequired
project_type.​orderintegerrequired
project_type.​is_defaultbooleanrequired
statusstringrequired
is_acquisitionbooleanrequired
is_privatebooleanrequired
start_datestring or null(date)required
end_datestring or null(date)required
clientobject(ClientData)required
client.​idstringrequired
client.​external_idstring or nullrequired

Can be used to add an identifier to the client from an external system, must be unique

client.​external_originstring or nullrequired

If originated from external system origin is added

client.​namestringrequired
client.​shortcodestring or nullrequired
client.​primary_contactUserData (object) or nullrequired
Any of:
client.​primary_contact.​idstringrequired
client.​primary_contact.​first_namestringrequired
client.​primary_contact.​last_namestringrequired
client.​primary_contact.​emailstringrequired
client.​primary_contact.​typestring(UserType)required
Enum"user""guest""tax_advisor""integration"
client.​primary_contact.​spaceobject(SpaceData)required
client.​primary_contact.​space.​idstringrequired
client.​primary_contact.​space.​namestringrequired
client.​origin_spaceSpaceData (object) or nullrequired
Any of:

Shared space which the client is shared from, if null client is not shared

client.​origin_space.​idstringrequired
client.​origin_space.​namestringrequired
tagsArray of objects(ProjectTagData)
custom_fieldsobjectrequired

The key is the field name for your custom field, value type depends on the field type

custom_fields.​property name*string or boolean or integer or nulladditional property
Any of:
string
origin_spaceSpaceData (object) or nullrequired
Any of:

Shared space which the project is shared from, if null project is not shared

origin_space.​idstringrequired
origin_space.​namestringrequired
teamArray of objects(TeamMemberData)

Project team

guestsArray of objects(TeamMemberData)

Project guests

computed_fieldsobject
Response
application/json
{ "id": "string", "external_id": "string", "external_origin": "string", "title": "string", "shortcode": "string", "po_number": "string", "project_type": { "id": "string", "title": "string", "shortcode": "string", "color": "string", "order": 0, "is_default": true }, "status": "string", "is_acquisition": true, "is_private": true, "start_date": "2019-08-24", "end_date": "2019-08-24", "client": { "id": "string", "external_id": "string", "external_origin": "string", "name": "string", "shortcode": "string", "primary_contact": { … }, "origin_space": { … } }, "tags": [ { … } ], "custom_fields": "['custom_field_1' => 'value', 'custom_field_2' => true]", "origin_space": { "id": "string", "name": "string" }, "team": [ { … } ], "guests": [ { … } ], "computed_fields": { "property1": 0, "property2": 0 } }

Request

No specific scope required.

Security
http or oauth2
Path
idstringrequired
Query
find_bystring

The field to search by

Default "id"
Enum"id""external_id""shortcode"
originstring

Used if find_by=external_id by default it will use the integration slug

page[size]integer

The number of results that will be returned per page.

Default 30
page[cursor]string

The cursor to start the pagination from.

filterstring

Allowed filter fields (with allowed operators):

FieldTypeOperators
emailstringin, nin, notin, eq, ne, neq, contains, like, startswith, endswith, isnull, isnotnull, notnull
space.idideq, ne, neq, in, nin, notin, isnull, isnotnull, notnull
space.namestringin, nin, notin, eq, ne, neq, contains, like, startswith, endswith, isnull, isnotnull, notnull
added_atdatetimeeq, ne, neq, lt, lte, le, gt, gte, ge, in, nin, notin, isnull, isnotnull, notnull

Filtering expression. Accepts either JSON (array/tree of conditions) or a readable string DSL.

You can check the full syntax at Docs Filtering section.

Special values:

  • me.id — current authenticated user id (usable on fields of type id). Example: id eq me.id
  • now — current date-time. Example: dueOn lt now
  • sow/eow — start/end of week. Examples: dueOn gt sow, dueOn lt eow
  • som/eom — start/end of month. Examples: dueOn gt som, dueOn lt eom
  • today — special date for today; with eq it expands to the whole day range. Example: dueOn eq today
  • today±Nd — relative day offset. Examples: today-30d, today+5d.
Example: filter=title contains "Acme" and (created_at >= "2024-01-01" or client.name contains "Corp")
sortstring

You can sort by multiple options by separating them with a comma. To sort in descending order, use - sign in front of the sort, for example: -title.

Example: sort=sort=-created_at,title
curl -i -X GET \
  'https://api.kanbert.com/api/v1/projects/{id}/team?find_by=id&origin=string&page%5Bsize%5D=30&page%5Bcursor%5D=string&filter=title+contains+%22Acme%22+and+%28created_at+%3E%3D+%222024-01-01%22+or+client.name+contains+%22Corp%22%29&sort=sort%3D-created_at%2Ctitle' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

The cursor paginated collection of DWI.Http.Data.Api.V1.UserData

Bodyapplication/json
dataArray of objects(UserData)required

The list of items

data[].​idstringrequired
data[].​first_namestringrequired
data[].​last_namestringrequired
data[].​emailstringrequired
data[].​typestring(UserType)required
Enum"user""guest""tax_advisor""integration"
data[].​spaceobject(SpaceData)required
data[].​space.​idstringrequired
data[].​space.​namestringrequired
linksArray of stringsrequired
metaobjectrequired
meta.​pathstring or nullrequired

Base path for paginator generated URLs.

meta.​per_pageintegerrequired

Number of items shown per page.

meta.​next_cursorstring or nullrequired
meta.​next_cursor_urlstring or nullrequired
meta.​prev_cursorstring or nullrequired
meta.​prev_cursor_urlstring or nullrequired
Response
application/json
{ "data": [ { … } ], "links": [ "string" ], "meta": { "path": "string", "per_page": 0, "next_cursor": "string", "next_cursor_url": "string", "prev_cursor": "string", "prev_cursor_url": "string" } }

Request

No specific scope required.

Security
http or oauth2
Path
idstringrequired
Query
find_bystring

The field to search by

Default "id"
Enum"id""external_id""shortcode"
originstring

Used if find_by=external_id by default it will use the integration slug

page[size]integer

The number of results that will be returned per page.

Default 30
page[cursor]string

The cursor to start the pagination from.

filterstring

Allowed filter fields (with allowed operators):

FieldTypeOperators
emailstringin, nin, notin, eq, ne, neq, contains, like, startswith, endswith, isnull, isnotnull, notnull
added_atdatetimeeq, ne, neq, lt, lte, le, gt, gte, ge, in, nin, notin, isnull, isnotnull, notnull

Filtering expression. Accepts either JSON (array/tree of conditions) or a readable string DSL.

You can check the full syntax at Docs Filtering section.

Special values:

  • me.id — current authenticated user id (usable on fields of type id). Example: id eq me.id
  • now — current date-time. Example: dueOn lt now
  • sow/eow — start/end of week. Examples: dueOn gt sow, dueOn lt eow
  • som/eom — start/end of month. Examples: dueOn gt som, dueOn lt eom
  • today — special date for today; with eq it expands to the whole day range. Example: dueOn eq today
  • today±Nd — relative day offset. Examples: today-30d, today+5d.
Example: filter=title contains "Acme" and (created_at >= "2024-01-01" or client.name contains "Corp")
sortstring

You can sort by multiple options by separating them with a comma. To sort in descending order, use - sign in front of the sort, for example: -title.

Example: sort=sort=-created_at,title
curl -i -X GET \
  'https://api.kanbert.com/api/v1/projects/{id}/guests?find_by=id&origin=string&page%5Bsize%5D=30&page%5Bcursor%5D=string&filter=title+contains+%22Acme%22+and+%28created_at+%3E%3D+%222024-01-01%22+or+client.name+contains+%22Corp%22%29&sort=sort%3D-created_at%2Ctitle' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

The cursor paginated collection of DWI.Http.Data.Api.V1.UserData

Bodyapplication/json
dataArray of objects(UserData)required

The list of items

data[].​idstringrequired
data[].​first_namestringrequired
data[].​last_namestringrequired
data[].​emailstringrequired
data[].​typestring(UserType)required
Enum"user""guest""tax_advisor""integration"
data[].​spaceobject(SpaceData)required
data[].​space.​idstringrequired
data[].​space.​namestringrequired
linksArray of stringsrequired
metaobjectrequired
meta.​pathstring or nullrequired

Base path for paginator generated URLs.

meta.​per_pageintegerrequired

Number of items shown per page.

meta.​next_cursorstring or nullrequired
meta.​next_cursor_urlstring or nullrequired
meta.​prev_cursorstring or nullrequired
meta.​prev_cursor_urlstring or nullrequired
Response
application/json
{ "data": [ { … } ], "links": [ "string" ], "meta": { "path": "string", "per_page": 0, "next_cursor": "string", "next_cursor_url": "string", "prev_cursor": "string", "prev_cursor_url": "string" } }

Request

Required scopes: task-management:read

Security
http or oauth2
Path
idstringrequired
Query
find_bystring

The field to search by

Default "id"
Enum"id""external_id""shortcode"
originstring

Used if find_by=external_id by default it will use the integration slug

page[size]integer

The number of results that will be returned per page.

Default 30
page[cursor]string

The cursor to start the pagination from.

filterstring

Allowed filter fields (with allowed operators):

FieldTypeOperators
titlestringin, nin, notin, eq, ne, neq, contains, like, startswith, endswith, isnull, isnotnull, notnull
po_numberstringin, nin, notin, eq, ne, neq, contains, like, startswith, endswith, isnull, isnotnull, notnull
start_datedateeq, ne, neq, lt, lte, le, gt, gte, ge, in, nin, notin, isnull, isnotnull, notnull
end_datedateeq, ne, neq, lt, lte, le, gt, gte, ge, in, nin, notin, isnull, isnotnull, notnull
created_atdatetimeeq, ne, neq, lt, lte, le, gt, gte, ge, in, nin, notin, isnull, isnotnull, notnull
group.idideq, ne, neq, in, nin, notin, isnull, isnotnull, notnull
group.titlestringin, nin, notin, eq, ne, neq, contains, like, startswith, endswith, isnull, isnotnull, notnull
type.idideq, ne, neq, in, nin, notin, isnull, isnotnull, notnull
type.titlestringin, nin, notin, eq, ne, neq, contains, like, startswith, endswith, isnull, isnotnull, notnull
tasksRelation
- uri (string)
- title (string)
- assignee.id (id)
- assignee.email (string)
- status (enum)
any, none, count, all

Filtering expression. Accepts either JSON (array/tree of conditions) or a readable string DSL.

You can check the full syntax at Docs Filtering section.

Special values:

  • me.id — current authenticated user id (usable on fields of type id). Example: id eq me.id
  • now — current date-time. Example: dueOn lt now
  • sow/eow — start/end of week. Examples: dueOn gt sow, dueOn lt eow
  • som/eom — start/end of month. Examples: dueOn gt som, dueOn lt eom
  • today — special date for today; with eq it expands to the whole day range. Example: dueOn eq today
  • today±Nd — relative day offset. Examples: today-30d, today+5d.
Example: filter=title contains "Acme" and (created_at >= "2024-01-01" or client.name contains "Corp")
computed_fields[alias]string

Dynamic computed relation fields (computed_fields[alias])

Declare ad-hoc aggregates per request using: computed_fields[<alias>] = relation.aggregate(args)

Syntax:

  • Count: relation.count() or relation.count(<where>)
  • Sum/Avg/Min/Max: relation.sum(<column>) or relation.sum(<column>, <where>)

Where is written using the same Filter DSL and is validated against the relation's allowed fields.

Use the prefix computed_fields. when referencing these aliases in filter or sort, e.g., filter=computed_fields.tasks_done gte 1 or sort=-computed_fields.tasks_done. Bare aliases are accepted for backward compatibility but deprecated.

Allowed relations for computed_fields (deny-all by default):

  • tasks (→ effort_sum): aggregates: count, sum, avg, min, max; coalesce default: 0

Example: ?computed_fields[tasks_done]=tasks.count(status%20eq%20%22Completed%22)&filter=computed_fields.tasks_done%20gt%200

Example: computed_fields[alias]=computed_fields[tasks_done]=tasks.count(status%20eq%20%22Completed%22)
sortstring

Available sorts are computed_fields.<alias>.
You can sort by multiple options by separating them with a comma. To sort in descending order, use - sign in front of the sort, for example: -title.

Example: sort=sort=-created_at,title
curl -i -X GET \
  'https://api.kanbert.com/api/v1/projects/{id}/phases?find_by=id&origin=string&page%5Bsize%5D=30&page%5Bcursor%5D=string&filter=title+contains+%22Acme%22+and+%28created_at+%3E%3D+%222024-01-01%22+or+client.name+contains+%22Corp%22%29&computed_fields%5Balias%5D=computed_fields%5Btasks_done%5D%3Dtasks.count%28status%2520eq%2520%2522Completed%2522%29&sort=sort%3D-created_at%2Ctitle' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

The cursor paginated collection of PhaseData

Bodyapplication/json
dataArray of objects(PhaseData)required

The list of items

data[].​idstringrequired
data[].​titlestringrequired
data[].​po_numberstring or nullrequired
data[].​groupPhaseGroupData (object) or nullrequired
Any of:
data[].​group.​idstringrequired
data[].​group.​titlestringrequired
data[].​typePhaseTypeData (object) or nullrequired
Any of:
data[].​type.​idstringrequired
data[].​type.​titlestringrequired
data[].​type.​colorstringrequired
data[].​dependency_phase_idstring or nullrequired
data[].​dependency_milestone_idstring or nullrequired
data[].​start_datestring or null(date)required
data[].​end_datestring or null(date)required
data[].​created_atstring or null(date-time)required
data[].​computed_fieldsobject
linksArray of stringsrequired
metaobjectrequired
meta.​pathstring or nullrequired

Base path for paginator generated URLs.

meta.​per_pageintegerrequired

Number of items shown per page.

meta.​next_cursorstring or nullrequired
meta.​next_cursor_urlstring or nullrequired
meta.​prev_cursorstring or nullrequired
meta.​prev_cursor_urlstring or nullrequired
Response
application/json
{ "data": [ { … } ], "links": [ "string" ], "meta": { "path": "string", "per_page": 0, "next_cursor": "string", "next_cursor_url": "string", "prev_cursor": "string", "prev_cursor_url": "string" } }

Request

Required scopes: task-management:read

Security
http or oauth2
Path
idstringrequired
Query
find_bystring

The field to search by

Default "id"
Enum"id""external_id""shortcode"
originstring

Used if find_by=external_id by default it will use the integration slug

page[size]integer

The number of results that will be returned per page.

Default 30
page[cursor]string

The cursor to start the pagination from.

filterstring

Allowed filter fields (with allowed operators):

FieldTypeOperators
titlestringin, nin, notin, eq, ne, neq, contains, like, startswith, endswith, isnull, isnotnull, notnull
po_numberstringin, nin, notin, eq, ne, neq, contains, like, startswith, endswith, isnull, isnotnull, notnull
datedateeq, ne, neq, lt, lte, le, gt, gte, ge, in, nin, notin, isnull, isnotnull, notnull
created_atdatetimeeq, ne, neq, lt, lte, le, gt, gte, ge, in, nin, notin, isnull, isnotnull, notnull
group.idideq, ne, neq, in, nin, notin, isnull, isnotnull, notnull
group.titlestringin, nin, notin, eq, ne, neq, contains, like, startswith, endswith, isnull, isnotnull, notnull
tasksRelation
- uri (string)
- title (string)
- assignee.id (id)
- assignee.email (string)
- status (enum)
any, none, count, all

Filtering expression. Accepts either JSON (array/tree of conditions) or a readable string DSL.

You can check the full syntax at Docs Filtering section.

Special values:

  • me.id — current authenticated user id (usable on fields of type id). Example: id eq me.id
  • now — current date-time. Example: dueOn lt now
  • sow/eow — start/end of week. Examples: dueOn gt sow, dueOn lt eow
  • som/eom — start/end of month. Examples: dueOn gt som, dueOn lt eom
  • today — special date for today; with eq it expands to the whole day range. Example: dueOn eq today
  • today±Nd — relative day offset. Examples: today-30d, today+5d.
Example: filter=title contains "Acme" and (created_at >= "2024-01-01" or client.name contains "Corp")
computed_fields[alias]string

Dynamic computed relation fields (computed_fields[alias])

Declare ad-hoc aggregates per request using: computed_fields[<alias>] = relation.aggregate(args)

Syntax:

  • Count: relation.count() or relation.count(<where>)
  • Sum/Avg/Min/Max: relation.sum(<column>) or relation.sum(<column>, <where>)

Where is written using the same Filter DSL and is validated against the relation's allowed fields.

Use the prefix computed_fields. when referencing these aliases in filter or sort, e.g., filter=computed_fields.tasks_done gte 1 or sort=-computed_fields.tasks_done. Bare aliases are accepted for backward compatibility but deprecated.

Allowed relations for computed_fields (deny-all by default):

  • tasks (→ effort_sum): aggregates: count, sum, avg, min, max; coalesce default: 0

Example: ?computed_fields[tasks_done]=tasks.count(status%20eq%20%22Completed%22)&filter=computed_fields.tasks_done%20gt%200

Example: computed_fields[alias]=computed_fields[tasks_done]=tasks.count(status%20eq%20%22Completed%22)
sortstring

Available sorts are computed_fields.<alias>.
You can sort by multiple options by separating them with a comma. To sort in descending order, use - sign in front of the sort, for example: -title.

Example: sort=sort=-created_at,title
curl -i -X GET \
  'https://api.kanbert.com/api/v1/projects/{id}/milestones?find_by=id&origin=string&page%5Bsize%5D=30&page%5Bcursor%5D=string&filter=title+contains+%22Acme%22+and+%28created_at+%3E%3D+%222024-01-01%22+or+client.name+contains+%22Corp%22%29&computed_fields%5Balias%5D=computed_fields%5Btasks_done%5D%3Dtasks.count%28status%2520eq%2520%2522Completed%2522%29&sort=sort%3D-created_at%2Ctitle' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

The cursor paginated collection of MilestoneData

Bodyapplication/json
dataArray of objects(MilestoneData)required

The list of items

data[].​idstringrequired
data[].​titlestringrequired
data[].​po_numberstring or nullrequired
data[].​groupPhaseGroupData (object) or nullrequired
Any of:
data[].​group.​idstringrequired
data[].​group.​titlestringrequired
data[].​dependency_phase_idstring or nullrequired
data[].​dependency_milestone_idstring or nullrequired
data[].​datestring(date)required
data[].​created_atstring or null(date-time)required
data[].​computed_fieldsobject
linksArray of stringsrequired
metaobjectrequired
meta.​pathstring or nullrequired

Base path for paginator generated URLs.

meta.​per_pageintegerrequired

Number of items shown per page.

meta.​next_cursorstring or nullrequired
meta.​next_cursor_urlstring or nullrequired
meta.​prev_cursorstring or nullrequired
meta.​prev_cursor_urlstring or nullrequired
Response
application/json
{ "data": [ { … } ], "links": [ "string" ], "meta": { "path": "string", "per_page": 0, "next_cursor": "string", "next_cursor_url": "string", "prev_cursor": "string", "prev_cursor_url": "string" } }

Request

Required scopes: task-management:read

Security
http or oauth2
Path
idstringrequired
Query
find_bystring

The field to search by

Default "id"
Enum"id""external_id""shortcode"
originstring

Used if find_by=external_id by default it will use the integration slug

page[size]integer

The number of results that will be returned per page.

Default 30
page[cursor]string

The cursor to start the pagination from.

filterstring

Allowed filter fields (with allowed operators):

FieldTypeOperators
titlestringin, nin, notin, eq, ne, neq, contains, like, startswith, endswith, isnull, isnotnull, notnull
po_numberstringin, nin, notin, eq, ne, neq, contains, like, startswith, endswith, isnull, isnotnull, notnull
created_atdatetimeeq, ne, neq, lt, lte, le, gt, gte, ge, in, nin, notin, isnull, isnotnull, notnull
tasksRelation
- uri (string)
- title (string)
- assignee.id (id)
- assignee.email (string)
- status (enum)
any, none, count, all

Filtering expression. Accepts either JSON (array/tree of conditions) or a readable string DSL.

You can check the full syntax at Docs Filtering section.

Special values:

  • me.id — current authenticated user id (usable on fields of type id). Example: id eq me.id
  • now — current date-time. Example: dueOn lt now
  • sow/eow — start/end of week. Examples: dueOn gt sow, dueOn lt eow
  • som/eom — start/end of month. Examples: dueOn gt som, dueOn lt eom
  • today — special date for today; with eq it expands to the whole day range. Example: dueOn eq today
  • today±Nd — relative day offset. Examples: today-30d, today+5d.
Example: filter=title contains "Acme" and (created_at >= "2024-01-01" or client.name contains "Corp")
computed_fields[alias]string

Dynamic computed relation fields (computed_fields[alias])

Declare ad-hoc aggregates per request using: computed_fields[<alias>] = relation.aggregate(args)

Syntax:

  • Count: relation.count() or relation.count(<where>)
  • Sum/Avg/Min/Max: relation.sum(<column>) or relation.sum(<column>, <where>)

Where is written using the same Filter DSL and is validated against the relation's allowed fields.

Use the prefix computed_fields. when referencing these aliases in filter or sort, e.g., filter=computed_fields.tasks_done gte 1 or sort=-computed_fields.tasks_done. Bare aliases are accepted for backward compatibility but deprecated.

Allowed relations for computed_fields (deny-all by default):

  • tasks (→ effort_sum): aggregates: count, sum, avg, min, max; coalesce default: 0

Example: ?computed_fields[tasks_done]=tasks.count(status%20eq%20%22Completed%22)&filter=computed_fields.tasks_done%20gt%200

Example: computed_fields[alias]=computed_fields[tasks_done]=tasks.count(status%20eq%20%22Completed%22)
sortstring

Available sorts are title, po_number, created_at, computed_fields.<alias>.
You can sort by multiple options by separating them with a comma. To sort in descending order, use - sign in front of the sort, for example: -title.

Example: sort=sort=-created_at,title
curl -i -X GET \
  'https://api.kanbert.com/api/v1/projects/{id}/epics?find_by=id&origin=string&page%5Bsize%5D=30&page%5Bcursor%5D=string&filter=title+contains+%22Acme%22+and+%28created_at+%3E%3D+%222024-01-01%22+or+client.name+contains+%22Corp%22%29&computed_fields%5Balias%5D=computed_fields%5Btasks_done%5D%3Dtasks.count%28status%2520eq%2520%2522Completed%2522%29&sort=sort%3D-created_at%2Ctitle' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

The cursor paginated collection of EpicData

Bodyapplication/json
dataArray of objects(EpicData)required

The list of items

data[].​idstringrequired
data[].​titlestringrequired
data[].​po_numberstring or nullrequired
data[].​computed_fieldsobject
linksArray of stringsrequired
metaobjectrequired
meta.​pathstring or nullrequired

Base path for paginator generated URLs.

meta.​per_pageintegerrequired

Number of items shown per page.

meta.​next_cursorstring or nullrequired
meta.​next_cursor_urlstring or nullrequired
meta.​prev_cursorstring or nullrequired
meta.​prev_cursor_urlstring or nullrequired
Response
application/json
{ "data": [ { … } ], "links": [ "string" ], "meta": { "path": "string", "per_page": 0, "next_cursor": "string", "next_cursor_url": "string", "prev_cursor": "string", "prev_cursor_url": "string" } }

Request

Required scopes: task-management:read

Security
http or oauth2
Path
idstringrequired
Query
find_bystring

The field to search by

Default "id"
Enum"id""external_id""shortcode"
originstring

Used if find_by=external_id by default it will use the integration slug

filterstring

Allowed filter fields (with allowed operators):

FieldTypeOperators
titlestringin, nin, notin, eq, ne, neq, contains, like, startswith, endswith, isnull, isnotnull, notnull
uristringin, nin, notin, eq, ne, neq, contains, like, startswith, endswith, isnull, isnotnull, notnull
sub_tasks_in_listenum:with, only, withouteq
due_datedateeq, ne, neq, lt, lte, le, gt, gte, ge, in, nin, notin, isnull, isnotnull, notnull
statusenum<TaskStatus>eq, ne, neq, in, nin, notin
project.idid<ProjectData>eq, ne, neq, in, nin, notin, isnull, isnotnull, notnull
project.external_idstringin, nin, notin, eq, ne, neq, contains, like, startswith, endswith, isnull, isnotnull, notnull
project.shortcodestringin, nin, notin, eq, ne, neq, contains, like, startswith, endswith, isnull, isnotnull, notnull
project.namestringin, nin, notin, eq, ne, neq, contains, like, startswith, endswith, isnull, isnotnull, notnull
project.statusenum:running, closedeq, ne, neq, in, nin, notin, isnull, isnotnull, notnull
client.idid<ClientFullData>eq, ne, neq, in, nin, notin, isnull, isnotnull, notnull
client.external_idstringin, nin, notin, eq, ne, neq, contains, like, startswith, endswith, isnull, isnotnull, notnull
client.namestringin, nin, notin, eq, ne, neq, contains, like, startswith, endswith, isnull, isnotnull, notnull
client.shortcodestringin, nin, notin, eq, ne, neq, contains, like, startswith, endswith, isnull, isnotnull, notnull
assignee.idid<UserFullData>eq, ne, neq, in, nin, notin, isnull, isnotnull, notnull
assignee.emailstringin, nin, notin, eq, ne, neq, contains, like, startswith, endswith, isnull, isnotnull, notnull
assignee.typeenum<UserType>eq, ne, neq, in, nin, notin, isnull, isnotnull, notnull
epic.idid<EpicData>eq, ne, neq, in, nin, notin, isnull, isnotnull, notnull
epic.titlestringin, nin, notin, eq, ne, neq, contains, like, startswith, endswith, isnull, isnotnull, notnull
phase.idid<PhaseData>eq, ne, neq, in, nin, notin, isnull, isnotnull, notnull
phase.titlestringin, nin, notin, eq, ne, neq, contains, like, startswith, endswith, isnull, isnotnull, notnull
phase.po_numberstringin, nin, notin, eq, ne, neq, contains, like, startswith, endswith, isnull, isnotnull, notnull
phase.start_datedateeq, ne, neq, lt, lte, le, gt, gte, ge, in, nin, notin, isnull, isnotnull, notnull
phase.end_datedateeq, ne, neq, lt, lte, le, gt, gte, ge, in, nin, notin, isnull, isnotnull, notnull
milestone.idid<MilestoneData>eq, ne, neq, in, nin, notin, isnull, isnotnull, notnull
milestone.titlestringin, nin, notin, eq, ne, neq, contains, like, startswith, endswith, isnull, isnotnull, notnull
milestone.po_numberstringin, nin, notin, eq, ne, neq, contains, like, startswith, endswith, isnull, isnotnull, notnull
milestone.datedateeq, ne, neq, lt, lte, le, gt, gte, ge, in, nin, notin, isnull, isnotnull, notnull
parent_task.idid<TaskData>eq, ne, neq, in, nin, notin, isnull, isnotnull, notnull
parent_task.titlestringin, nin, notin, eq, ne, neq, contains, like, startswith, endswith, isnull, isnotnull, notnull
parent_task.uristringin, nin, notin, eq, ne, neq, contains, like, startswith, endswith, isnull, isnotnull, notnull
parent_task.statusenum<TaskStatus>eq, ne, neq, in, nin, notin
sub_tasksRelation
- title (string)
- uri (string)
- status (enum)
any, none, count, all

Filtering expression. Accepts either JSON (array/tree of conditions) or a readable string DSL.

You can check the full syntax at Docs Filtering section.

Special values:

  • me.id — current authenticated user id (usable on fields of type id). Example: id eq me.id
  • now — current date-time. Example: dueOn lt now
  • sow/eow — start/end of week. Examples: dueOn gt sow, dueOn lt eow
  • som/eom — start/end of month. Examples: dueOn gt som, dueOn lt eom
  • today — special date for today; with eq it expands to the whole day range. Example: dueOn eq today
  • today±Nd — relative day offset. Examples: today-30d, today+5d.
Example: filter=title contains "Acme" and (created_at >= "2024-01-01" or client.name contains "Corp")
sortstring

You can sort by multiple options by separating them with a comma. To sort in descending order, use - sign in front of the sort, for example: -title.

Example: sort=sort=-created_at,title
curl -i -X GET \
  'https://api.kanbert.com/api/v1/projects/{id}/tasks?find_by=id&origin=string&filter=title+contains+%22Acme%22+and+%28created_at+%3E%3D+%222024-01-01%22+or+client.name+contains+%22Corp%22%29&sort=sort%3D-created_at%2Ctitle' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

The cursor paginated collection of TaskData

Bodyapplication/json
dataArray of objects(TaskData)required

The list of items

data[].​idstringrequired
data[].​project_idstringrequired
data[].​client_idstringrequired
data[].​parent_task_idstringrequired
data[].​external_idstring or nullrequired
data[].​external_originstring or nullrequired

If originated from external system origin is added

data[].​uristringrequired
data[].​titlestringrequired
data[].​descriptionstring or nullrequired
data[].​statusstring(TaskStatus)required
Backlog
New
In Todo
WIP
In progress
Completed
Approved
Closed
Task was archived
Enum"Backlog""New""WIP""Completed""Approved""Closed"
data[].​typestringrequired
data[].​estimated_hoursnumber or nullrequired
data[].​is_onholdbooleanrequired
data[].​is_publicbooleanrequired

If false, the task is only visible to the project team - not guest users

data[].​due_datestring or null(date)required
data[].​due_date_settingsobject(TaskDueDateSettingsData)required
data[].​due_date_settings.​is_hard_deadlinebooleanrequired
Default false
data[].​due_date_settings.​recurring_typeTaskDueDateRecurringType (string) or nullrequired
Any of:
string(TaskDueDateRecurringType)
Enum"daily""weekly""monthly"
data[].​due_date_settings.​recurring_intervalinteger or nullrequired

Integer offset if recurring_type = daily or NULL -> offset ignored
if recurring_type = weekly -> 1 = every Monday, 2 = every Tuesday, etc
if recurring_type = monthly -> 1 = every month, 2 = every 2 months, etc

data[].​assigneeUserData (object) or nullrequired
Any of:
data[].​assignee.​idstringrequired
data[].​assignee.​first_namestringrequired
data[].​assignee.​last_namestringrequired
data[].​assignee.​emailstringrequired
data[].​assignee.​typestring(UserType)required
Enum"user""guest""tax_advisor""integration"
data[].​assignee.​spaceobject(SpaceData)required
data[].​assignee.​space.​idstringrequired
data[].​assignee.​space.​namestringrequired
data[].​priorityOptionTaskPriorityOptionData (object) or nullrequired
Any of:
data[].​priorityOption.​idstringrequired
data[].​priorityOption.​labelstringrequired
data[].​phasePhaseData (object) or null
Any of:
data[].​milestoneMilestoneData (object) or null
Any of:
data[].​epicEpicData (object) or null
Any of:
data[].​parent_taskTaskData (object) or null
Any of:
object TaskData Recursive
data[].​attachementsArray of objects(FileData)required
Default []
data[].​attachements[].​idstringrequired
data[].​attachements[].​file_namestringrequired
data[].​attachements[].​mime_typestringrequired
data[].​attachements[].​sizeintegerrequired

File size in bytes

data[].​attachements[].​entity_idstringrequired

ID of the entity that the file belongs to

data[].​attachements[].​entity_typestringrequired

Type of the entity that the file belongs to

data[].​attachements[].​created_atstringrequired
data[].​watchersArray of objects(UserData)
data[].​sub_tasksArray of objects(TaskData)required
data[].​completed_atstring or null(date-time)required
data[].​closed_atstring or null(date-time)required
data[].​updated_atstring or null(date-time)required
data[].​created_atstring or null(date-time)required
data[].​list_sortingintegerrequired
linksArray of stringsrequired
metaobjectrequired
meta.​pathstring or nullrequired

Base path for paginator generated URLs.

meta.​per_pageintegerrequired

Number of items shown per page.

meta.​next_cursorstring or nullrequired
meta.​next_cursor_urlstring or nullrequired
meta.​prev_cursorstring or nullrequired
meta.​prev_cursor_urlstring or nullrequired
Response
application/json
{ "data": [ { … } ], "links": [ "string" ], "meta": { "path": "string", "per_page": 0, "next_cursor": "string", "next_cursor_url": "string", "prev_cursor": "string", "prev_cursor_url": "string" } }
Operations
Webhooks
Operations
Webhooks
Operations
Operations
Webhooks
Operations
Operations
Operations
Operations
Operations
Operations
Operations
Operations
Operations
Schemas