Skip to content

One test across the runs it appeared in

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

Grouped by signature, not by test case id: the same case run with different params is a different test, and a history that mixed them would put a green and a red side by side with nothing to explain the difference. The rows are read like a run’s results: each carries failure and a sanitized errorContext.

id
required
string

The signature and its results, newest first

Media type application/json
object
signature
required
string
history
required
Array<object>

One stored result, as every reader returns it — a run’s results, a test’s history, a corrected mark.

object
errorContext

Returned sanitized — no colour codes, no credentials — whether it was stored before the rules existed or after.

string
nullable
errorContextMeta

What the platform removed before storing — written whenever something was, even without text; null when nothing ever was.

object
redacted
required

Values replaced by a marker, in the text and in every string of failure, each once. The headline counts only when there is no text — otherwise it repeats a line of it.

integer
truncated
required

Whether the TEXT was cut to 256 KB. A shortened field of failure carries its own ….

boolean
failure

What the reporter said about the failed attempt, or null.

object
headline
string
<= 300 characters
steps
Array<string>
<= 20 items
stepsOmitted

How many steps between the outer and the inner ones were left out. Absent when none were.

integer
>= 1
location
object
file
required

From the repository root in posix form, the way a case’s specRef names it. A path of the machine is refused: absolute, with a drive or a scheme, from a home (~), or climbing out with ...

string
>= 1 characters /^(?![A-Za-z][A-Za-z0-9+.-]*:)(?![\\/~])(?!(?:.*[\\/])?\.\.(?:[\\/]|$)).+$/
line
required
integer
>= 1
column
integer
>= 1
file
string
<= 1000 characters
artifacts
Array
<= 50 items
object
name
required

As the runner named it — screenshot, trace, error-context.

string
>= 1 characters
contentType
string
>= 1 characters
name
string
<= 200 characters
contentType
string
<= 100 characters
artifactsOmitted

How many artifacts past the listed ones there are — all reachable through ciUrl.

integer
>= 1
ciUrl
string format: uri
/^[Hh][Tt][Tt][Pp][Ss]?:///
files

Files uploaded to this result — screenshots, and text (JSON, plain text, logs) — oldest first (ADR 0040) — present on a run’s results list, and only when there is one. The bytes are GET /v1/files/{id}.

Array<object>

A file of a result, everything but its bytes (ADR 0040).

object
id
required
string
name
required

The last segment of the name it was uploaded with, cleaned of credentials as a text is.

string
contentType
required

A log is text/plain.

string
Allowed values: image/png image/jpeg image/webp application/json text/plain
size
required

Bytes as kept: a picture at most 2 MiB; a text at most 512 KiB, and counted after its credentials are cleaned, so it can differ from what was sent.

integer
key
additional properties
any
Example
{
"history": [
{
"files": [
{
"contentType": "image/png"
}
]
}
]
}

No / invalid token or session

Not found or not yours

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