Availability
How much of a period each device was reachable. These are the figures behind the availability table in the service report.
Downtime is the total of recorded outages, counting only minutes inside the period. An outage that started before the period, or is still open, adds only the minutes that fall inside it. If the period runs past today, it stops at the current time instead of counting hours that haven't happened yet.
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 period in minutes.
availabilityis calculated against this number.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": ""
}
}