Skip to content

The numbers of a saved widget

GET
/v1/widgets/{id}/data
curl --request GET \
--url 'https://beta-api.plune.ai/v1/widgets/example/data?from=2026-04-15T12%3A00%3A00Z&to=2026-04-15T12%3A00%3A00Z' \
--header 'Authorization: Bearer <token>'

The widget’s recipe asked of the data for a period: one shared time axis for every block, series capped at 50 (a table at 500 rows) with truncated and the codes in notMeasured, groups past 20 folded into «Other», a denominator on every block. The cost is checked before any query (400 widget_too_expensive); a block that runs out of time (5 s) is reported as block_timeout and the others are answered. A recipe that no longer matches the catalogue is a 422 config_stale.

id
required
string
from
required
string format: date-time
to
required
string format: date-time
tz
string

The numbers

Media type application/json

The numbers of a widget. Every block shares one time axis; every block carries its denominator.

object
render
required
string
Allowed values: bar line donut table
bucket
required
string
Allowed values: day week month
from
required
string format: date-time
to
required
string format: date-time
axis
required

The start of each bucket, as a calendar date in the reader’s zone; at most 366.

Array<string>
series
required

At most 50 (blocks x groups x segment values), the biggest first when cut; empty for a table.

Array<object>
object
block
required
integer
entity
required
string
Allowed values: case run_result run requirement
group
required

null: no value of the grouped property, or no Group by.

string
nullable
segment
required
string
nullable
total
required

Over the whole period: what a donut slice or a table row shows.

number
nullable
points
required
Array<object>
object
t
required
string
v
required
number
nullable
rows

A table’s rows, at most 500.

Array<object>
object
block
required
integer
entity
required
string
group
required
string
nullable
segment
required
string
nullable
value
required
number
nullable
denominators
required

A6: per block, how many objects of the entity the project has in the period BEFORE the filters (denominator) and after them (matched). null for a block that ran out of time.

Array<object>
object
block
required
integer
entity
required
string
denominator
required
integer
nullable
matched
required
integer
nullable
truncated
required

Series or rows were dropped to hold the caps.

boolean
notMeasured
required

What could not be measured or shown whole, as codes: truncated_series, truncated_rows, folded_groups, block_timeout.

Array<object>
object
code
required
string
Allowed values: truncated_series truncated_rows folded_groups block_timeout
block
integer
params
object
key
additional properties
number
Example
{
"render": "line",
"bucket": "day",
"from": "2026-10-01T00:00:00.000Z",
"to": "2026-10-03T23:59:59.000Z",
"axis": [
"2026-10-01",
"2026-10-02",
"2026-10-03"
],
"series": [
{
"block": 0,
"entity": "run",
"group": null,
"segment": "nightly",
"total": 2,
"points": [
{
"t": "2026-10-01",
"v": 1
},
{
"t": "2026-10-02",
"v": 1
},
{
"t": "2026-10-03",
"v": 0
}
]
},
{
"block": 1,
"entity": "run_result",
"group": null,
"segment": "nightly",
"total": 3,
"points": [
{
"t": "2026-10-01",
"v": 0
},
{
"t": "2026-10-02",
"v": 3
},
{
"t": "2026-10-03",
"v": 0
}
]
}
],
"denominators": [
{
"block": 0,
"entity": "run",
"denominator": 5,
"matched": 2
},
{
"block": 1,
"entity": "run_result",
"denominator": 120,
"matched": 3
}
],
"truncated": false,
"notMeasured": []
}

A missing or malformed window, a window over 366 points, or over the cost budget

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

No / invalid token or session

No such widget in the project

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

The stored recipe no longer matches the catalogue

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

Rate-limited: the per-route throttle, or the per-minute request limit of the plan an API token counts by (#1442; the body names the plan, #2092). Retry-After carries the seconds until the window rolls over.

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

Seconds until the window rolls over