Ticket Counts
How many tickets were opened and resolved over a period, how many are still open, and how long they took to resolve. Use it for a dashboard or a monthly report instead of counting the rows from /v1/tickets.
opened, resolved and cancelled count what happened inside the period: a ticket opened in March and resolved in April counts as opened in March and as resolved in April. open and overdue describe the backlog at the end of the period, or right now while the period is still running.
Ticket counts GET /v1/ticket_counts
Returns one summary for the period, the same figures broken down by severity, category, source and workspace, and a count for every day.
Query parameters
fromdateFirst day of the period,
YYYY-MM-DDin Philippine time. Omit bothfromandtofor the current calendar month.todateLast day of the period, inclusive. The range must be 366 days or less.
severitystringminor,majororcritical. Repeat the parameter or pass a comma separated list. Multiple values mean any of them.categorystringno_service,topup,suggestionorgeneral. Same list rules asseverity.sourcestringmanual,alertorsystem. Same list rules asseverity.tagstringRestrict to tickets that carry any of these tags, e.g.
offline. Same list rules asseverity.siteCodestringRestrict to tickets about devices at one or more sites. Same as on
/v1/tickets.gatewayIdstringRestrict to tickets about one or more devices. Same as on
/v1/tickets.workspaceIdstringScope to a single workspace. Must be one returned by
GET /v1/workspaces. An id outside your token's set returns403.
An unknown severity or category value returns 400 rather than zeros, so a typo can't look like "no tickets".
Response object
fromdateFirst day of the period.
todateLast day of the period, inclusive.
openedintegerTickets created during the period.
resolvedintegerTickets resolved during the period, whenever they were opened.
cancelledintegerTickets cancelled during the period.
openintegerTickets not yet resolved, closed or cancelled at the end of the period, or now while it is still running. Includes tickets opened before the period.
overdueintegerThe
opentickets that were past their due time at that moment.medianResolveMinutesnumberMedian minutes from opening to resolution, over the tickets resolved during the period.
nullwhen none were.meanResolveMinutesnumberAverage minutes from opening to resolution, over the same tickets.
nullwhen none were.bySeverityobject[]The figures above for each severity:
keyisminor,majororcritical. All three are always listed.byCategoryobject[]The same for each category:
no_service,topup,suggestion,general, andnonefor tickets opened without one. All of them are always listed.bySourceobject[]The same for
manual,alertandsystem.byWorkspaceobject[]The same for each workspace with a ticket in the result:
keyis its id andnameits name.daysobject[]One entry per day of the period, oldest first:
day(YYYY-MM-DD) and the ticketsopenedandresolvedthat day.
- cURL
- JavaScript
- Go
- PHP
curl "https://polaris.revlv.com/v1/ticket_counts?from=2026-09-01&to=2026-09-30" \
-H "Authorization: Bearer {token}"
const res = await fetch(
'https://polaris.revlv.com/v1/ticket_counts?from=2026-09-01&to=2026-09-30',
{ headers: { 'Authorization': 'Bearer {token}' } },
);
const { data } = await res.json();
req, _ := http.NewRequest("GET",
"https://polaris.revlv.com/v1/ticket_counts?from=2026-09-01&to=2026-09-30", nil)
req.Header.Add("Authorization", "Bearer {token}")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
$response = $client->get('https://polaris.revlv.com/v1/ticket_counts', [
'headers' => ['Authorization' => 'Bearer {token}'],
'query' => ['from' => '2026-09-01', 'to' => '2026-09-30'],
]);
echo $response->getBody();
{
"data": {
"from": "2026-09-01",
"to": "2026-09-30",
"opened": 42,
"resolved": 38,
"cancelled": 1,
"open": 9,
"overdue": 2,
"medianResolveMinutes": 312,
"meanResolveMinutes": 655,
"bySeverity": [
{ "key": "minor", "opened": 25, "resolved": 24, "cancelled": 1, "open": 3, "overdue": 0, "medianResolveMinutes": 280, "meanResolveMinutes": 410 },
{ "key": "major", "opened": 15, "resolved": 12, "cancelled": 0, "open": 5, "overdue": 2, "medianResolveMinutes": 390, "meanResolveMinutes": 1020 },
{ "key": "critical", "opened": 2, "resolved": 2, "cancelled": 0, "open": 1, "overdue": 0, "medianResolveMinutes": 95, "meanResolveMinutes": 95 }
],
"byCategory": [
{ "key": "no_service", "opened": 31, "resolved": 29, "cancelled": 0, "open": 6, "overdue": 2, "medianResolveMinutes": 330, "meanResolveMinutes": 720 },
{ "key": "topup", "opened": 8, "resolved": 8, "cancelled": 0, "open": 1, "overdue": 0, "medianResolveMinutes": 240, "meanResolveMinutes": 300 },
{ "key": "suggestion", "opened": 1, "resolved": 0, "cancelled": 1, "open": 1, "overdue": 0, "medianResolveMinutes": null, "meanResolveMinutes": null },
{ "key": "general", "opened": 2, "resolved": 1, "cancelled": 0, "open": 1, "overdue": 0, "medianResolveMinutes": 610, "meanResolveMinutes": 610 },
{ "key": "none", "opened": 0, "resolved": 0, "cancelled": 0, "open": 0, "overdue": 0, "medianResolveMinutes": null, "meanResolveMinutes": null }
],
"bySource": [
{ "key": "manual", "opened": 12, "resolved": 10, "cancelled": 1, "open": 3, "overdue": 0, "medianResolveMinutes": 420, "meanResolveMinutes": 600 },
{ "key": "alert", "opened": 30, "resolved": 28, "cancelled": 0, "open": 6, "overdue": 2, "medianResolveMinutes": 300, "meanResolveMinutes": 675 },
{ "key": "system", "opened": 0, "resolved": 0, "cancelled": 0, "open": 0, "overdue": 0, "medianResolveMinutes": null, "meanResolveMinutes": null }
],
"byWorkspace": [
{ "key": "3f6b1c2e-8a4d-4f7a-9c1e-2b5d7e9f0a11", "name": "DICT Region IV-A", "opened": 42, "resolved": 38, "cancelled": 1, "open": 9, "overdue": 2, "medianResolveMinutes": 312, "meanResolveMinutes": 655 }
],
"days": [
{ "day": "2026-09-01", "opened": 2, "resolved": 1 },
{ "day": "2026-09-02", "opened": 0, "resolved": 2 }
]
}
}