Skip to content

The project’s bugs

GET
/v1/bugs
curl --request GET \
--url 'https://beta-api.plune.ai/v1/bugs?state=open&sort=newest&deleted=true&canBeClosed=true&limit=50&offset=0' \
--header 'Authorization: Bearer <token>'

The live bugs of the project, newest first by default. ?state= (open, closed, all - the default), ?caseId= (bugs linked to that case), ?createdBy= (a user id), ?q= (a bug number - BUG-12, bug-12 or 12 - or a part of the title, case-insensitive) narrow; ?sort= is newest, oldest or updated (the last change first). ?canBeClosed=true keeps the bugs that can be closed - open, with a live case, every live case with N green runs in a row, not put off for this series by «Wait more» (streak.canBeClosed) - and false every other one (#2163). ?deleted=true lists what is in the Bin instead, for the owner who brings a bug back (403 for anyone else). ?limit= (1 to 200, default 50) and ?offset= page it; total counts every match. Anyone in the project reads the live ones, a reader too. A project that has not turned the section on lists none of them (what is in the Bin is listed regardless).

state
string
Allowed values: open closed all
caseId
string
createdBy
string
q
string
sort
string
Allowed values: newest oldest updated
deleted
string
Allowed values: true false
canBeClosed
string
Allowed values: true false
limit
integer
default: 50 >= 1 <= 200
offset
integer
0
X-Plune-Project
string

Which of your projects to act in — an id from GET /v1/projects. Absent, your default project. A project you are not a member of answers 404, the same as one that does not exist. Ignored under a bearer token, which is bound to the project it was minted in.

The bugs

Media type application/json
object
bugs
required
Array<object>
object
id
required
string format: uuid
key
required

The bug’s name for people (BUG-12): the project’s own number, handed out in order, never reused and never changed.

string
/^BUG-[0-9]+$/
number
required
integer
>= 1
source
required

Whose truth the row is. plune is a bug of the project’s own; jira (a mirror of a Jira ticket, #1069) is not written by this version.

string
Allowed values: plune jira
title
required
string
>= 1 characters <= 200 characters
state
required
string
Allowed values: open closed
createdBy
required

The author’s user id, to be named from GET /v1/members; null when the account is gone.

string
nullable
caseCount
required

The live cases linked to the bug.

integer
commentCount
required
integer
createdAt
required
string format: date-time
updatedAt
required
string format: date-time
streak
required

«Passed X of N» (#1067, ADR 0057 §4). A linked case counts its green runs in a row while the bug is open: passed adds one, failed or broken resets, blocked, skipped and a muted result neither add nor reset; a run is one verdict, as the run itself counts the case - its latest result in each combination (a retry that passed is a pass), then the worst of the combinations; green counts once every combination of the run has a result, red at once (a failure in any combination); only a run newer than the one last counted and made after the case was linked counts, and with an environment in the rule only a run on it.

object
passed
required

The smallest streak among the live linked cases; 0 with none.

integer
n
required

N of the project rule (bugs.close.n of the settings).

integer
>= 1 <= 5
canBeClosed
required

The bug is open, has a live case, and every live case has N in a row - and nobody put it off for this series (POST /v1/bugs/{id}/wait, #2163). Under the rule after_n the bug then closes itself, unless flaky.

boolean
flaky
required

A live linked case is flaky: the streak is weak proof, and the rule after_n only tells, it does not close.

boolean
autoClosed
required

Closed by its streak (the rule after_n), not by a person (#1067). A person’s close or reopen sets it back to false.

boolean
reopenedByRegression
required

Open again because a linked case failed after its streak closed it - the list’s badge of a regression (#2163). A person’s move clears it.

boolean
total
required

Every bug the filters match, not the page.

integer
Example
{
"bugs": [
{
"id": "6f1c2b3a-0000-4000-8000-0000000000f6",
"key": "BUG-12",
"number": 12,
"source": "plune",
"title": "The cart loses an item after a coupon is applied",
"state": "open",
"createdBy": "6f1c2b3a-0000-4000-8000-0000000000a2",
"caseCount": 1,
"commentCount": 2,
"createdAt": "2026-09-16T09:12:04.151Z",
"updatedAt": "2026-09-16T09:12:04.151Z",
"streak": {
"passed": 2,
"n": 3,
"canBeClosed": false,
"flaky": false
},
"autoClosed": false,
"reopenedByRegression": false
}
],
"total": 1
}

A state, sort, deleted or canBeClosed outside its words

Media type application/json
object
error
required
string
Example generated
{
"error": "example"
}

No / invalid token or session

?deleted=true asked by someone who is not an owner of the project