Skip to content

The five status counters of one run

GET
/v1/runs/{id}/summary
curl --request GET \
--url https://beta-api.plune.ai/v1/runs/example/summary \
--header 'Authorization: Bearer <token>'

Every status appears, including the ones at zero. “unmapped” counts results whose raw status the project map does not cover TODAY — the stored status of a result never changes, but whether the map has a hole in it does. “discovered” counts the tests this run turned up that have no case here yet and are still pending in the review queue: on a project’s FIRST run every result is diverted there instead of being written, so five zeros beside a non-zero “discovered” is a healthy first run, not an empty one. “waiting” counts the same pending tests in the whole project’s queue, whichever run found them: a later run that sends the same tests finds them already there, so its own “discovered” is zero while “waiting” is not. “counts.muted” sits beside the five: A failed or broken result of a muted case is counted as muted, not as a failure; a finished run never changes (#1247).

id
required
string

Counters, the results nobody has mapped, and the tests still waiting in review

Media type application/json
object
counts
required

Live, off the run’s results. muted holds the failures of muted cases, which are in no other counter. A failed or broken result of a muted case is counted as muted, not as a failure; a finished run never changes (#1247).

object
passed
integer
failed
integer
broken
integer
blocked
integer
skipped
integer
muted
integer
unmapped
required
integer
discovered
required
integer
waiting
integer
hasBody
required

Whether GET /v1/runs/{id} has a CLI RunResult for this run (#1761). false for a CI import, a Cairn ingest or a lifecycle run: that route answers 404 for them by design, so a client reads this and does not ask.

boolean
withDefect
required

How many results of the run carry at least one defect link (#1064) - a result once, however many links it has. The «· 1 with a defect» of the run line.

integer
subStatuses
required

The sub-statuses the run’s results carry (#1231) — each name under its status, with how many — what the run report’s filter offers. In the order of the statuses, then by name; [] for none.

Array<object>
object
status
required
string
Allowed values: passed failed broken blocked skipped
name
required
string
count
required
integer
>= 1
run

The run’s own facts (D5) — present for a run the lifecycle opened, absent for one plune sync uploaded whole.

object
kind
string
Allowed values: automated manual mixed eval
statusEvent
string
Allowed values: launched finished terminated rerun scheduled
running

Whether the run is under way — launched and rerun; false once it is finished or terminated, and for a scheduled run that waits for Launch (#1233).

boolean
externalKey
string
nullable
title
string
nullable
environment
string
nullable
labels
Array<string>
description

What the run is for (#1232), under its tags on the report; null when nobody wrote one.

string
nullable
custom

The values of the project’s custom fields (#1764); absent while the run has none.

object
combinations

The combinations the run was launched with (#1251), which byCombination and a result’s combination count in; absent for a run with none.

Array<object>

One combination of configuration values (#1251, ADR 0070 §2): a value of each chosen group, the groups in their order. Names are frozen at launch: a rename later changes no past run.

object
values
required
Array<object>
object
fieldId
required

The group (a field with role: configuration); null with optionId for a value CI named that is not in the list.

string
nullable
optionId
required

The value (an option of the group); null for a value CI named that is not in Settings → Configurations — «not in the list», kept as it was sent.

string
nullable
group
required

The name of the group at launch.

string
label
required

The label of the value at launch.

string
startedAt
string format: date-time
finishedAt
string format: date-time
nullable
terminateReason
string
nullable
createdBy

Who launched it (B8-team T3) — «Launched by …» on the run page; null for a run from before.

string
nullable
assignees

The launch’s copy of who runs what, testCaseId → userId (B8-team T4) — the avatar on each «To run» row and what «Mine» keeps; null when the launch made no copy.

object
key
additional properties
string
ciUrl

The CI run that produced the report — meta.ciUrl as the first shard declared it, the only source of the link in the run page header; null when the run has none, or holds anything but an http or https address.

string format: uri
nullable /^[Hh][Tt][Tt][Pp][Ss]?:///
branch

The branch the run was made on — meta.branch; null when the run holds none, or an empty value.

string
nullable
sha

The commit — meta.sha, in full as the shard sent it (the run page shows the first seven characters); null when the run holds none, or an empty value.

string
nullable
runner

The tool that reported the run — playwright, or the report format plune run import read — not the machine of the CI; meta.runner, null when the run holds none.

string
nullable
planQuery

The plan’s collections as they stood at launch — meta.planQuery (#1274); null for a run of no plan or launched before it.

Array<string>
nullable
planSelected

How many cases those collections selected at launch — meta.planSelected (#1274 AC-04); null for a run of no plan or launched before it was kept.

integer
nullable
planId

The plan the run was launched from — meta.planId (D33); null for a run of no plan. With externalKey it makes the command the run page offers (#1233): PLUNE_RUN=<externalKey> npx playwright test --grep "$(plune plan grep <planId>)".

string
nullable
notRun

Expected and never reported — beside run, for the same runs.

Array<string>
group

The run group of a launch on several environments the run is one of (#1252) — «Part of group · 3 environments» and a link to GET /v1/run-groups/{id}; null for a run of its own. Beside run, for the same runs.

object
id
required
string
size
required

How many runs the group holds, the ones in the Bin too.

integer
>= 1
awaitingRetest

Cases a retest reset (POST /v1/runs/{id}/retest, #1767) that wait for a new result — beside run, for the same runs. They are in no counter above, not in notRun, and the run cannot finish while any are listed. [] for none.

Array<string>
byCombination

Only for a run with configurations (#1251, ADR 0070 §4): the counts again per combination, in the order of the run’s combinations. notRun and awaitingRetest are by the pair (case, combination): a combination nobody reported has empty counts, total 0 and every expected case in notRun — none of it is counted as skipped. The run’s own notRun is then the cases with a result in no combination, its awaitingRetest the cases waiting in any one.

Array<object>
object
counts
required

One entry per status that occurred in this combination; an absent key means zero.

object
key
additional properties
integer
total
required
integer
notRun
required

Expected cases with no current result in this combination.

Array<string>
awaitingRetest

Cases a retest reset that wait for a new result in this combination; absent for none.

Array<string>
caseCounts

Only beside byCombination (#1251): the cases that have a result, by the worst of their combinations — the «4 of 120 cases failed» of the report. A case in the Bin is not counted.

object
key
additional properties
integer
Example
{
"counts": {
"passed": 1,
"failed": 1,
"broken": 0,
"blocked": 0,
"skipped": 0,
"muted": 0
},
"unmapped": 0,
"discovered": 0,
"hasBody": false,
"withDefect": 1,
"subStatuses": [
{
"status": "failed",
"name": "Product bug",
"count": 1
}
],
"run": {
"kind": "automated",
"statusEvent": "finished",
"running": false,
"externalKey": "gh-35003177826",
"title": "plune · 2026-09-16 09:12 · ci",
"environment": "staging",
"labels": [
"plune",
"vitest",
"ci"
],
"description": null,
"startedAt": "2026-09-16T09:12:04.151Z",
"finishedAt": "2026-09-16T09:12:09.082Z",
"terminateReason": null,
"createdBy": "u-shop",
"assignees": null,
"ciUrl": "https://github.com/plune-ai/plune/actions/runs/35003177826",
"branch": "master",
"sha": "3e31591",
"runner": "playwright",
"planId": null
},
"notRun": [],
"group": null,
"awaitingRetest": []
}

No such run, or not yours

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