Availability
The share of a period each device was reachable — the figures behind the service report's availability table.
Downtime is summed from recorded outages and clipped to the window, so an outage that opened before the period, or has not closed yet, contributes only the minutes inside it. A period running past the present stops at now rather than counting hours that have not happened.
availability is a fraction between 0 and 1: multiply by 100 for the percentage the report prints.
Availability per device GET /v1/availability
Returns one row per device, whether or not it had any outages.
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 92 days or less.
deviceTypestringRestrict to one kind of device, e.g.
Access Point,Gateway,Terminal. MatchesdeviceTypeon/v1/devices.workspaceIdstringScope to a single workspace. Must be one returned by
GET /v1/workspaces. An id outside your token's set returns403.pageSizeintegerRows per page, 1–5000. Defaults to 500.
pageTokenstringnextPageTokenfrom the previous response.
Response object
siteCodestringSite the device belongs to.
deviceNamestringDisplay name of the device.
gatewayIdstringUnique identifier of the device.
deviceTypestringAccess Point,Gateway,Terminal, and so on.availabilitynumberFraction of the window the device was reachable, 0 to 1.
downMinutesnumberMinutes lost inside the window.
windowMinutesnumberLength of the window in minutes — the denominator behind
availability.outagesintegerNumber of separate outages that overlapped the window.
- cURL
- JavaScript
- Go
- PHP
curl "https://polaris.revlv.com/v1/availability?from=2026-04-01&to=2026-04-30&deviceType=Access%20Point" \
-H "Authorization: Bearer {token}"
const res = await fetch(
'https://polaris.revlv.com/v1/availability?from=2026-04-01&to=2026-04-30',
{ headers: { 'Authorization': 'Bearer {token}' } },
);
const { data } = await res.json();
req, _ := http.NewRequest("GET",
"https://polaris.revlv.com/v1/availability?from=2026-04-01&to=2026-04-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/availability', [
'headers' => ['Authorization' => 'Bearer {token}'],
'query' => ['from' => '2026-04-01', 'to' => '2026-04-30'],
]);
echo $response->getBody();
{
"data": [
{
"siteCode": "PH1-2026-549",
"deviceName": "AP1_Inside of Barangay Hall Office",
"gatewayId": "G1TA2FM00455A",
"deviceType": "Access Point",
"availability": 0.977625,
"downMinutes": 966.62,
"windowMinutes": 43200,
"outages": 3
},
{
"siteCode": "PH1-2026-549",
"deviceName": "AP2_Left Wing of KALIPI Association Building",
"gatewayId": "G1U0471012564",
"deviceType": "Access Point",
"availability": 0.977622,
"downMinutes": 966.75,
"windowMinutes": 43200,
"outages": 3
}
],
"pageInfo": {
"hasNextPage": false,
"nextPageToken": ""
}
}