BizKitHub
DocsAPI ReferenceIssue/bff/issue/list
getIssueAdmin BFF

/bff/issue/list

Returns a paginated list of issues for the organisation. Supports filtering by project, status category, assignee, reporter, and spam status. The default order is smart — a scrum-backlog composite that surfaces in-progress work first, then waiting, then new, and finally done, breaking ties by priority (higher first) and last activity (fresher first). Clients can override via orderBy=field:direction.

IssuegetBffIssueList

Parameters

14 query

Query parameters

· 14
projectCodestringOptional

Filter by project key (e.g. "PROJ").

ExamplePROJ
statusCategoryIdnumberOptional

Filter by status category id.

Example1
statusCategoryCodestringOptional

Filter by canonical status bucket — new, progress, waiting, done. Preferred over statusCategoryId. Admin-facing sentinels: active (everything except done — the operator default) and all (no status filter, used when searching history).

Exampleactive
statusIdnumberOptional

Filter by a specific status id (a custom org status inside a category).

Example42
assigneeIdnumberOptional

Filter by assignee contact ID.

Example10
unassignedbooleanOptional

When true, restrict to issues with no primary assignee. Takes precedence over assigneeId when both are supplied.

Examplefalse
assigneeFilter"me" | "unassigned"Optional

Convenience shortcut used by the admin grid: me resolves to the caller's own contact id (server-side lookup, no client round-trip), unassigned maps to unassigned=true. Ignored when assigneeId or unassigned is set explicitly.

reporterIdnumberOptional

Filter by reporter contact ID.

Example5
prioritynumberOptional

Filter by priority (1=low..5=blocker). Rows with a NULL priority column are treated as 2 (the display fallback), matching what the operator sees in the grid.

Range: 15
Example3
isSpambooleanOptional

Filter by spam status.

Examplefalse
contactExternalIdstringOptional

Restrict to issues where a specific contact has any recorded interaction — reporter, assignee, commenter, watcher or mentioned. Value is the 16-char shop__contact.external_id. Used by the "Úkoly" tab on the contact detail; callers filtering by role instead should keep using reporterId / assigneeId.

Example1JfEq22KdM3B456i
orderBystringOptional

Sort key in field:direction format (matches the admin DataGrid wire contract). Supported fields: smart (composite scrum-backlog order — progress > waiting > new > done, then priority DESC, then last-activity DESC — DEFAULT when omitted), insertedDate, updatedDate, priority, status, subject, issueKey. Unknown fields silently fall back to smart. Direction is ignored for smart (it is a fixed composite).

Examplesmart:asc
pagenumberOptional

Page number (1-based).

Default: 1
Example1
limitnumberOptional

Items per page.

Default: 50
Example50

Response schema

1 status code documented

200Success
itemsobject[]Required
Each array item:
idstringRequired

Issue key (e.g. "PROJ-123"), used as public identifier.

internalIdnumberRequired

Internal numeric ID.

issueKeystringRequired

Issue key.

subjectstringRequired

Issue subject/title.

prioritynumberRequired

Priority number (1=low, 2=normal, 3=high, 4=critical, 5=blocker).

priorityLabelstringRequired

Human-readable priority label.

typeobjectRequired
idnumberRequired

Issue type ID (pm__issue_type.id).

codestringRequired

Stable slug (story, epic, task, sub_task, bug, …). Admin resolves the localized label from its dictionary.

iconstring | nullRequired
One of 2:
Variant 1
string

Lucide icon name to render alongside the subject.

Variant 2
null
statusobjectRequired
idnumberRequired

Status ID.

labelstringRequired

Status display label (localized to the viewing organisation).

categoryIdnumberRequired

Status category ID (1=new, 2=progress, 3=waiting, 4=done).

categoryCodestringRequired

Status category code.

assigneeobject | nullRequired
One of 2:
Variant 1
idnumberRequired

Contact ID.

externalIdstring | nullRequired
One of 2:
Variant 1
string

Public contact identifier used in admin URLs (/contact/{externalId}) and in /bff/contact/detail?customerId=.... null for legacy rows that predate the external-id backfill; the UI should render the name without a link in that case.

Variant 2
null
namestringRequired

Full name.

emailstring | nullRequired
One of 2:
Variant 1
string

Contact e-mail. null for phone-only contacts (no e-mail registered) and for contacts anonymised via GDPR. UI should fall back to name or the contact ID.

Variant 2
null
Variant 2
null
reporterobject | nullRequired
One of 2:
Variant 1
idnumberRequired

Contact ID.

externalIdstring | nullRequired
One of 2:
Variant 1
string

Public contact identifier used in admin URLs (/contact/{externalId}) and in /bff/contact/detail?customerId=.... null for legacy rows that predate the external-id backfill; the UI should render the name without a link in that case.

Variant 2
null
namestringRequired

Full name.

emailstring | nullRequired
One of 2:
Variant 1
string

Contact e-mail. null for phone-only contacts (no e-mail registered) and for contacts anonymised via GDPR. UI should fall back to name or the contact ID.

Variant 2
null
Variant 2
null
isSpamboolean | nullRequired
One of 2:
Variant 1
boolean

Spam classification. Null = not yet classified.

Variant 2
null
commentsCountnumberRequired

Total comments on the issue across all author kinds. Zero when there are none — the UI should hide the badge for 0 rather than render "0".

hasAttachmentsbooleanRequired

True when the issue has at least one file attached via pm__issue_attachment. Excludes the source-e-mail relation (brj__emailer_received_email.issue_id) — the paperclip icon in the grid must only reflect real file attachments, not the virtual pointer to the inbound mail that lifted the ticket.

isStalebooleanRequired

True when the issue sits in progress or waiting and has not moved in 7+ days (no updated_date bump, no comment). Never true for new or done. Meant as a soft nudge in the grid — not a hard alert.

insertedDateDate | string | string | numberRequired

When the issue was created.

One of 4:
Variant 1
Date

When the issue was created.

Variant 2
stringdate-time
Variant 3
stringdate
Variant 4
number
updatedDateDate | string | string | number | nullRequired
One of 2:
Variant 1
Date | string | string | number

Last update timestamp.

One of 4:
Variant 1
Date

Last update timestamp.

Variant 2
stringdate-time
Variant 3
stringdate
Variant 4
number
Variant 2
null
ipstring | nullRequired

Reporter IP as captured at ticket creation (brj__geo_ip.ip via pm__issue.geo_id). null for tickets created without request-time context (cron, mail pipeline, manual admin entry). Rendered in the grid as an external anchor to https://vikitron.com/<ip>; admin hides the value for 127.0.0.1.

One of 2:
Variant 1
string
Variant 2
null
itemCountnumberRequired

Total matching issues (for pagination).

Response example

application/json
{
  "items": [
    {
      "id": "example_id",
      "internalId": 0,
      "issueKey": "example_issueKey",
      "subject": "example_subject",
      "priority": 0,
      "priorityLabel": "example_priorityLabel",
      "type": {
        "id": 0,
        "code": "example_code"
      },
      "status": {
        "id": 0,
        "label": "example_label",
        "categoryId": 0,
        "categoryCode": "example_categoryCode"
      },
      "commentsCount": 0,
      "hasAttachments": false,
      "isStale": false
    }
  ],
  "itemCount": 0
}

Request example

GET /bff/issue/list

get
curl -X GET "https://api.bizkithub.com/bff/issue/list?projectCode=PROJ&statusCategoryId=1&statusCategoryCode=active&statusId=42&assigneeId=10&unassigned=false&reporterId=5&priority=3&isSpam=false&contactExternalId=1JfEq22KdM3B456i&orderBy=smart%3Aasc&page=1&limit=50" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY"

Need an API key?

All BizKitHub public API endpoints require authentication via API key.

Get API Key