Skip to content

The project’s test plans

GET
/v1/plans
curl --request GET \
--url https://beta-api.plune.ai/v1/plans \
--header 'Authorization: Bearer <token>'

Every plan, ordered case-insensitively by title, each with how many cases it collects right now — resolved on the way out, so the count is today’s, not the count at the last edit.

The plans

Media type application/json
object
plans
required
Array
object
id
required
string format: uuid
projectId
required
string
title
required

Unique within the project.

string
>= 1 characters <= 200 characters
description
required

Up to 16 384 bytes.

string
nullable
kind
required

Who executes it and which cases it may collect: manual takes manual cases, automated automated ones, mixed both. Evals belong to no plan.

string
Allowed values: manual automated mixed
asManual
required

The one exception to the strict mapping: a manual plan that also takes automated cases, to be walked by a person.

boolean
collections
required

Each item is a case filter in its query-string form (suiteId=…&tag=…&priority=…&priorityMin=…&type=…&state=…&q=…, ADR 0001) — AND between its dimensions, OR within one, OR between collections. Written back canonical, so two spellings of one filter are one string. An empty string is every case.

Array<string>
>= 1 items <= 20 items
createdAt
required
string format: date-time
updatedAt
required
string format: date-time
count
required

How many cases the plan collects right now, by its kind’s rule.

integer
Example
{
"plans": [
{
"id": "6f1c2b3a-0000-4000-8000-0000000000f3",
"projectId": "u-shop::default",
"title": "Release regression",
"description": "Everything under checkout, plus every critical case wherever it lives.",
"kind": "mixed",
"asManual": false,
"collections": [
"suiteId=6f1c2b3a-0000-4000-8000-0000000000a1",
"priority=critical"
],
"createdAt": "2026-09-16T09:12:04.151Z",
"updatedAt": "2026-09-16T09:12:04.151Z",
"count": 12
}
]
}

No / invalid token or session