Update DORA API to return consistent structure when interval=all
Background
By default, the DORA REST APIs return data that looks like this:
[
{ "date": "2021-03-01", "value": 3 },
{ "date": "2021-03-02", "value": 6 },
{ "date": "2021-03-03", "value": 0 },
{ "date": "2021-03-04", "value": 0 },
{ "date": "2021-03-05", "value": 0 },
{ "date": "2021-03-06", "value": 0 },
{ "date": "2021-03-07", "value": 0 },
{ "date": "2021-03-08", "value": 4 }
]
This is true if the optional interval
param is daily
, monthly
, or omitted entirely.
However, if the interval
param is all
, the data looks like this:
260
Proposal
Update the DORA REST API to return the same data structure regardless of the interval
param's value.
So, using the example above, instead of this:
260
The data should look something like this:
[
{ "date": "2021-03-01", "value": 260 }
]
Why
The inconsistent structure makes it harder to consume this data. For example, a frontend using this API would need to implement two code paths - one for interval=all
and one for all other cases.
Additionally, the current format makes it difficult to reimplement this API in GraphQL (currently in-progress in !64961 (merged)), since GraphQL enforces consistent return types.
The older, now-deprecated version of this API followed this proposed pattern; when interval=all
, it returned data like this:
[
{
"value": 260,
"from": "2021-03-01",
"to": "2021-03-29"
}
]
which matched the shape of interval=daily
and interval=monthly
.
Additional details
In the case of interval=all
, the date
field isn't very useful, so it probably makes sense to just return the date of the very first data point in the calculation.