Skip to content

The project’s requirements

GET
/v1/requirements
curl --request GET \
--url 'https://beta-api.plune.ai/v1/requirements?type=user_story&status=draft&category=functional&noPriority=true&noCategory=true&archived=true&cases=true' \
--header 'Authorization: Bearer <token>'

The live requirements in the order they were made, each with its coverage counted from the results of its cases. ?type=, ?status=, ?category=, ?priority= (the exact label, case-insensitive), ?key= (the exact key, case-insensitive) and ?q= (a part of the title or of the key, case-insensitive) narrow; ?archived=true adds the archived ones. ?from= and ?to= (ISO 8601 date-times with a zone, both ends included) count the coverage only over the runs that started in that period; a case with no result there is not run. ?cases=true puts the linked cases, each with its newest result and the run it is in, on every row: the traceability matrix reads that. Any member reads, a reader too.

type
string
Allowed values: user_story feature epic
status
string
Allowed values: draft active done
category
string
Allowed values: functional non-functional other
priority
string
<= 40 characters
noPriority
string
Allowed values: true false

true - only the requirements with no priority (“not set”).

noCategory
string
Allowed values: true false

true - only the requirements with no category (“not set”).

key
string
<= 40 characters
q
string
archived
string
Allowed values: true false
from
string format: date-time
to
string format: date-time
cases
string
Allowed values: true false

The requirements

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

The requirement’s short name (REQ-214), unique in the project, case-insensitive. Generated (REQ-<n>, per project, a number is never reused) or supplied. Never only digits, never an id.

string
/^[A-Za-z0-9._-]{1,40}$/
projectId
required
string
type
required
string
Allowed values: user_story feature epic
status
required

Where the requirement stands. Archiving is separate (archivedAt) and keeps the status.

string
Allowed values: draft active done
title
required
string
>= 1 characters <= 200 characters
description
required

Plain text, at most 16384 bytes.

string
nullable
priority
required

A free short label (Must-have, High), not an enum. null - not set.

string
nullable >= 1 characters <= 40 characters
acceptanceCriteria
required

Markdown text. null - not set.

string
nullable <= 20000 characters
category
required

Which kind of requirement it is. null - not set.

string
nullable
Allowed values: functional non-functional other
coverage
required

How the linked cases stand, counted from their RESULTS, never from a flag: each live case once, under the status of its newest result in a run that is not in the Bin (newest by when the run was created) — the status the run counters count it under, so a muted case’s failure is muted. A case with no result is notRun; a case in the Bin is not counted. total is the sum of the rest; «N of M cases passed» is passed of total.

object
total
required

M — the live cases linked to the requirement.

integer
passed
required

N — the cases whose newest result is passed.

integer
failed
required
integer
broken
required
integer
blocked
required
integer
skipped
required
integer
muted
required

Muted cases whose newest result failed or broke.

integer
notRun
required

Cases with no result in a run that is not in the Bin.

integer
automated
required

Of total, the cases of kind automated — the numerator of «9 of 14 cases are automated»; the denominator is total.

integer
cases

Only in the list asked with ?cases=true; always in the one requirement’s page.

Array<object>
object
id
required
string
title
required
string
suiteId
required
string
nullable
priority
required
string
latestStatus
required

The status the coverage counted the case under; null — no result yet.

string
nullable
Allowed values: passed failed broken blocked skipped muted
latestRunId
required

The run that result is in; null — no result yet.

string
nullable
archivedAt
required

Set while the requirement is archived: out of the default list and out of every coverage filter; its links stay.

string format: date-time
nullable
createdAt
required
string format: date-time
updatedAt
required
string format: date-time
Example
{
"requirements": [
{
"id": "6f1c2b3a-0000-4000-8000-0000000000f5",
"key": "REQ-214",
"projectId": "u-shop::default",
"type": "user_story",
"status": "active",
"title": "A buyer pays by card",
"description": "As a buyer I pay for the order by card, so that I do not wait for an invoice.",
"priority": "Must-have",
"acceptanceCriteria": "- the card is charged once\n- a declined card shows the bank reason",
"category": "functional",
"coverage": {
"total": 3,
"passed": 2,
"failed": 1,
"broken": 0,
"blocked": 0,
"skipped": 0,
"muted": 0,
"notRun": 0,
"automated": 0
},
"archivedAt": null,
"createdAt": "2026-09-16T09:12:04.151Z",
"updatedAt": "2026-09-16T09:12:04.151Z"
}
]
}

A type, a status, a category, noPriority, noCategory, archived or cases outside its words, or a from / to that is not an ISO 8601 date-time with a zone, or from later than to

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

No / invalid token or session