Cnmaestro 1.6.1 RESTful API
Cnmaestro 1.6.1 RESTful API
This document, Cambium products, and 3rd Party software products described in this document may
include or describe copyrighted Cambium and other 3rd Party supplied computer programs stored in
semiconductor memories or other media. Laws in the United States and other countries preserve for
Cambium, its licensors, and other 3rd Party supplied software certain exclusive rights for copyrighted
material, including the exclusive right to copy, reproduce in any form, distribute and make derivative
works of the copyrighted material. Accordingly, any copyrighted material of Cambium, its licensors, or
the 3rd Party software supplied material contained in the Cambium products described in this
document may not be copied, reproduced, reverse engineered, distributed, merged or modified in any
manner without the express written permission of Cambium. Furthermore, the purchase of Cambium
products shall not be deemed to grant either directly or by implication, estoppel, or otherwise, any
license under the copyrights, patents or patent applications of Cambium or other 3rd Party supplied
software, except for the normal non-exclusive, royalty free license to use that arises by operation of
law in the sale of a product.
Restrictions
Software and documentation are copyrighted materials. Making unauthorized copies is prohibited by
law. No part of the software or documentation may be reproduced, transmitted, transcribed, stored in
a retrieval system, or translated into any language or computer language, in any form or by any
means, without prior written permission of Cambium.
License Agreements
The software described in this document is the property of Cambium and its licensors. It is furnished
by express license agreement only and may be used only in accordance with the terms of such an
agreement.
3.2 Architecture
A basic OAuth2 API session is presented below. The client retrieves an Access Token to start the
session. It sends API requests until the Access Token times out, at which point the token can be
regenerated.
cnMaestro
Application
On-Premises
A session is created by sending the Client Id and Client Secret to the cnMaestro server. These are
generated in the cnMaestro UI and stored with the application. The Client Id defines the cnMaestro
account and application, and the Client Secret is a private string mapped to the specific application.
The Client Secret should be stored securely.
If the session is established successfully, an Access Token is returned along with an Expiration
string. The Access Token is used to authenticate the session. The Expiration is the interval, in
seconds, in which the Access Token remains valid. If the Access Token expires, a new session needs
to be created.
With the Access Token, the application can make cnMaestro API calls. The token is sent in an
Authentication header on each API request. Details are provided later in this document.
If a token expires, an expiration error message is returned to the client. The client can then generate a
new token using the Client Id and Client Secret. Tokens will expire immediately if the Client API
account that created them is deleted. The default expiration time for a token is 3600 seconds (1 hour).
This is configurable in the UI.
Each client supports a single Access Token or multiple Access Tokens. Multiple Access Tokens
allows concurrent access.
If only one Access Token is enabled at a time, whenever a new Access Token is generated from the
Client Id and Client Secret, the previous Token will immediately expire.
If multiple access tokens are supported, then many clients can concurrently access the API. If another
Access Token is created, the previous will remain valid until their original expiration.
Request Rate Limiting is not enabled in the On-Premises version of cnMaestro. It is up to the
application owner to make sure requests do not overtax the system.
5 API Session
5.1 Introduction
The cnMaestro API leverages the Client Credentials section of the OAuth 2.0 Authorization
Framework (RFC 6749). An API Session can be created using any modern programming language.
The examples below highlight how messages are encoded and responses returned.
Note
The steps below are for the On-Premises release of cnMaestro.
In the body of the POST the parameter grant_type must be set to client_credentials.
grant_type=client_credentials
Alternatively, instead of using the Authorization header, the credentials can be passed within the
body of the POST:
grant_type=client_credentials&client_id=s6BhdRkqt3&client_secret=7Fjfp0ZBr1KtDRbn
fVdmIw
The response returned from cnMaestro includes the access_token that should be used in
subsequent requests. The expires_in field defines how many seconds the token is valid.
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Cache-Control: no-store
Pragma: no-cache
{
"access_token":"2YotnFZFEjr1zCsicMWpAA",
"token_type":"bearer",
"expires_in":3600
}
If there is an error, an HTTP 400 (Bad Request) error code is returned along with one of the following
error messages:
Message Details
invalid_request Required parameter is missing from the request.
invalid_client Client authentication failed.
unauthorized_client The client is not authorized to use the grant type sent.
unsupported_grant_type The grant type is not supported.
{
"error":"invalid_request"
GET https://bdo300asdsd3.cloud.cambiumnetworks.com/api/v1/inventory/device
Accept: application/json
Authorization: Bearer ACCESS_TOKEN
6 API Details
6.1 HTTP Protocol
6.1.1 HTTP Response Codes
The following response codes are supported in cnMaestro and may be returned through the HTTP
protocol.
Header Details
Used in every API request to send the Access Token.
Authorization
Example: Authorization: Bearer <Access-Token>
Accept Set to application/json
Content-Type Set to application/json
The format for cnMaestro path and parameters are the following:
/api/{version}/{resource}/{resource_id}?{parameter}={value}&{parameter}={value}
/api/{version}/{resource}/{sub-resource}?{parameter}={value}&{parameter}={value}
For example – read the statistics for MAC, Type, and IP on all devices:
/api/v1/devices/statistics?fields=mac,type,ip_wan
Version
Resource
Context Details
alarms Current active alarms.
alarms/history Historical alarms, including active alarms.
devices Devices, including ePMP, PMP, and WiFi.
events Historical events.
networks Configured networks.
sites Configured WiFi sites.
towers Configured Fixed Wireless towers.
Sub-Resources
Sub-Resources apply to top-level resources. They provide a different view of the resource data, or a
filtered collection based upon the resource. They include:
Context Details
alarms Alarms mapped to the top-level resource.
alarms/history Historical alarms mapped to the top-level resource.
clients Wireless LAN clients mapped to the top-level resource.
devices Devices mapped to the top-level resource.
events Events mapped to the top-level resource.
mesh/peers Wireless LAN mesh peers mapped to the top-level resource.
operations Operations available to the top-level resource
performance Performance data for the top-level resource.
statistics Statistics for the top-level resource.
6.2.2 Responses
Successful Response
In a successful HTTP 200 response, data is returned using the following structure. The actual payload
is presented in JSON format. The request URL is:
/api/v1/devices?fields=mac,type&limit=5
Error Response
Error responses return a message and an error cause. If the start_time and stop_time are mandatory
query parameters and some once missed to provide them in the url will give the following error
response with message and cause.
{
"error": {
"cause": "Missing required property: stop_time \n Missing required property:
start_time",
"level": "error",
"message": "OBJECT_MISSING_REQUIRED_PROPERTY"
}
}
6.3 Parameters
Most APIs can be modified to filter the data and limit the number of entries returned. The parameter
options are listed below. The specific fields, and the appropriate values, vary for each API.
Field selection is supported through the optional “fields” parameter, which can specify the specific
data to return from the server. If this parameter is missing, all available fields will be returned.
Parameter Details
fields Define exactly what fields should be returned in a request. The names are
provided as a comma-separated list.
Example: To retrieve name, type and location information for all devices.
6.3.2 Filtering
A subset of fields support filtering. These are defined as query parameters for a particular resource,
and they are listed along with the API specification. Some of the standard filtering parameters are
below:
Field Details
network (Devices) Configured Network name.
severity (Alarms, Events) Alarm or Event severity (critical, major, minor, notice).
site (Devices) Configured Site name.
state (Alarms) Alarm state (active, cleared).
status (Devices) Device status [online, offline, onboarding]
tower (Devices) Configured Tower name.
(Devices) Device type [epmp, pmp, wifi-enterprise, wifi-home, wifi] (wifi
type
includes wifi-home and wifi-enterprise).
Events, Alarms, and Performance data can be filtered by date and time using ISO 8601 format.
The parameters are below. If they are not specified, then the start or stop times will be open-ended.
Parameter Details
start_time Inclusive start time of interval.
stop_time Inclusive stop time of interval.
6.3.4 Sorting
Sorting is supported on a selected subset of fields within certain requests. sort is used to specify
sorting columns. The sort order is ascending unless the path name is prefixed with a ‘-‘, in which case
it would be descending.
Parameter Details
sort Used to get the records in the order of the given attribute.
6.3.5 Pagination
The limit and offset query parameters are used to paginate responses.
Parameter Details
limit Maximum number of records to be returned from the server.
offset Starting index to retrieve the data.
When clients try to access a resource type without pagination, the server will return the first 100
entries that match the filter criteria. The response will always carry a metadata to convey total count
and current offset and limit. Maximum number of results at any point is 100 even though limit provided
as more than 100.
Parameter Details
limit Current setting for the limit.
offset Starting index for the records returned in the response (begins at 0).
total Total number of records that can be retrieved.
7 Access API
7.1 token (basic request)
POST /api/v1/access/token
Generate an Access Token using the Client Id and Client Password created in the cnMaestro UI. The
token can be leveraged for API calls through the expiration time. Only one token is supported for each
Client Id at any given time.
Headers
Header Value
Accept (optional) application/json
Authorization Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW
Content-Type application/x-www-form-urlencoded
The client_id and client_secret are encoded and sent in the Authorization header. The
encoding is:
BASE64(client_id:client_secret)
Body
grant_type=client_credentials
7.1.2 Response
Body
Name Details
access_token Access token to return with each API request.
expires_in Time in seconds that the API session will remain active.
token_type This will always be bearer.
{
"access_token":"2YotnFZFEjr1zCsicMWpAA",
"token_type":"bearer",
"expires_in":3600
}
7.1.3 Example
Request
curl https://10.110.134.12/api/v1/access/token \
-X POST -k \
-u 8YKCxq72qpjnYmXQ:pcX5BmdJ2f4QLM5RfgsS4jOtxAdTRF \
-d grant_type=client_credentials
Response
{"access_token":"d587538f445d30eb2d48e1b7f7a6c9657d32068e","token_type":"
bearer","expires_in":86400}
POST /api/v1/access/token
An alternative form is supported in which the client_id and client_secret are sent in the body,
rather than the Authorization header.
Headers
Header Value
Accept (optional) application/json
Content-Type application/x-www-form-urlencoded
Body
grant_type=client_credentials&client_id=s6BhdRkqt3&client_secret=7Fjfp0ZBr1KtDRbn
fVdmIw
7.2.2 Response
Body
Name Details
access_token Access token to return with each API request.
expires_in Time in seconds that the API session will remain active.
token_type This will always be bearer.
{
"access_token":"2YotnFZFEjr1zCsicMWpAA",
"token_type":"bearer",
"expires_in":3600
}
7.2.3 Example
Request
curl https://10.110.134.12/api/v1/access/token \
-X POST -k \
-d grant_type=client_credentials \
-d client_id=8YKCxq72qpjnYmXQ \
-d client_secret=pcX5BmdJ2f4QLM5RfgsS4jOtxAdTRF
Response
{"access_token":"ee4e077cf457196eb4d27cf6f02686dc07763059","token_type":"
bearer","expires_in":86400}
7.3 validateToken
GET /api/v1/access/validate_token
Verify an Access Token is valid and return the time remaining before it expires.
7.3.1 Request
HTTP Headers
Header Value
Accept (optional) application/json
Authorization Bearer <ACCESS_TOKEN>
Body
Name Details
expires_in Time in seconds that the API session will remain active.
{
'expires_in': 86399
}
7.3.3 Example
Request
curl https://10.110.134.12/api/v1/access/validate_token \
-X GET -k \
-H "Authorization: Bearer ee4e077cf457196eb4d27cf6f02686dc07763059"
Response
{"expires_in":85643}
8 Devices API
8.1 Overview
GET /api/v1/devices
8.1.1 Request
HTTP Headers
Header Value
Accept (optional) application/json
Authorization Bearer <ACCESS_TOKEN>
Parameters
Header Value
fields Select JSON fields to be returned.
limit, offset Pagination functionality.
network Network filter (text name of the network).
status Device status filter [online, offline, onboarding]
site Site filter (text name of the site).
sort Sort fields [mac, name, registration_date]
tower Tower filter (text name of the tower).
type Type of the device [epmp, pmp, wifi-home, wifi-enterprise, wifi]
8.1.2 Response
Body
8.1.3 Example
Request
curl https://10.110.134.12/api/v1/devices \
-X GET -k \
-H "Authorization: Bearer ee4e077cf457196eb4d27cf6f02686dc07763059"
Response
{
"paging": {
"offset": 0,
"limit": 100,
"total": 2
},
"data": [
{
"ap_group": "automation1",
"config": {
"sync_reason": "Device's mapped profile updated",
"sync_status": false,
"variables": {
"VLAN_1_MODE": "static",
"VLAN_1_IP": "10.110.212.105",
"VLAN_1_MASK": "255.255.255.0",
"DEFAULT_GW": "10.110.212.254",
"DNS_SERVER_1": "10.110.12.110",
"DNS_SERVER_2": "10.110.12.111",
"DISPLAY_NAME": "400-105"
}
},
"hardware_version": "Dual-Band Indoor Omni 802.11ac",
"ip": "10.110.212.105",
"location": {
"coordinates": [
78.486671,
17.385044
],
"type": "Point"
},
"mac": "00:04:56:AC:42:5A",
The table below list all operations currently supported and their device types.
POST /api/v1/devices/{MAC}/reboot
8.3 Sub-Resources
The following sub-resources can be applied to Devices URLs.
9 Networks API
9.1 Overview
GET /api/v1/networks
9.1.1 Request
HTTP Headers
Header Value
Accept (optional) application/json
Authorization Bearer <ACCESS_TOKEN>
Parameters
Header Value
fields Select JSON fields to be returned.
limit, offset Pagination functionality.
Note
The Network ID may be replaced with the Network Name as long as the name is unique in the
system. If the name is not unique, an HTTP error code 422 (Unprocessable Entity) will be returned.
9.1.2 Response
Body
Name Details
id Identifier of the network.
name Name of the network.
Request
curl https://10.110.134.12/api/v1/networks \
-X GET -k \
-H "Authorization: Bearer ee4e077cf457196eb4d27cf6f02686dc07763059"
Response
{
"paging": {
"offset": 0,
"limit": 100,
"total": 4
},
"data": [
{
"id": "TEST_AUTOMATION_NETWORK",
"name": "TEST_AUTOMATION_NETWORK"
},
{
"id": "default",
"name": "default"
},
{
"id": "Automation",
"name": "Automation"
},
{
"id": "test_net_1",
"name": "test_net_1"
}
]
}
9.2 Sub-Resources
The following sub-resources can be applied to Network URLs.
10 Sites API
10.1 Overview
GET /api/v1/networks/{NID}/sites
10.1.1 Request
HTTP Headers
Header Value
Accept (optional) application/json
Authorization Bearer <ACCESS_TOKEN>
Parameters
Note
The Site ID may be replaced with the Site Name as long as the name is unique in the system. If the
name is not unique, an HTTP error code 422 (Unprocessable Entity) will be returned.
10.1.2 Response
Body
Name Details
id Identifier of the site.
location Location of the site.
name Name of the site.
network Network to which the site belongs.
10.2 Sub-Resources
The following sub-resources can be applied to Site URLs.
11 Towers API
11.1 Overview
GET /api/v1/networks/{NID}/towers
11.1.1 Request
HTTP Headers
Header Value
Accept (optional) application/json
Authorization Bearer <ACCESS_TOKEN>
Parameters
Header Value
fields Select JSON fields to be returned.
limit, offset Pagination functionality.
Note
The Tower ID may be replaced with the Tower Name as long as the name is unique in the system.
If the name is not unique, an HTTP error code 422 (Unprocessable Entity) will be returned.
Body
Name Details
id Identifier of the tower.
location Location of the tower.
name Name of the tower.
network Network to which the tower belongs.
11.2 Sub-Resources
The following sub-resources can be applied to Tower URLs.
12 Statistics API
12.1.1 Overview
GET /api/v1/devices/statistics
GET /api/v1/devices/{MAC}/statistics
Retrieve statistics data from a resource (currently only devices are supported). Statistics parameters
can be used in tandem with parameters available for the resource.
12.1.2 Request
HTTP Headers
Header Value
Accept (optional) application/json
Authorization Bearer <ACCESS_TOKEN>
Parameters
Header Value
fields Select JSON fields to be returned.
limit, offset Pagination functionality.
12.1.3 Response
Body
13 Performance API
13.1.1 Device
GET /api/v1/devices/performance
Retrieve performance data from a resource (currently only devices are supported). Performance
parameters can be used in tandem with parameters available for the resource.
13.1.2 Request
HTTP Headers
Header Value
Accept (optional) application/json
Authorization Bearer <ACCESS_TOKEN>
Parameters
13.1.3 Response
Body
14 WiFi APIs
14.1 WiFi Clients
GET /api/v1/devices/clients
Retrieve data for WiFi Clients. This API only works with cnPilot Enterprise and cnPilot Home.
14.1.1 Request
HTTP Headers
Header Value
Accept (optional) application/json
Authorization Bearer <ACCESS_TOKEN>
Header Value
fields Select JSON fields to be returned.
limit, offset Pagination functionality.
14.1.2 Response
Body
Retrieve data for WiFi Peers. This API only works with cnPilot Enterprise.
14.2.1 Request
HTTP Headers
Header Value
Accept (optional) application/json
Authorization Bearer <ACCESS_TOKEN>
Header Value
fields Select JSON fields to be returned.
limit, offset Pagination functionality.
14.2.2 Response
Body
Name Details
Mesh Base AP
ap.base_mac Mesh Base MAC address
ap.description AP description
ap.last_sync AP last synchronization time
ap.mac AP MAC address
ap.name AP hostname
ap.site Site to which the AP belongs
ap.status Status of AP (online/offline)
ap.status_time Duration since the AP is online or offline
ap.24Ghz.airtime Airtime utilization on 2.4 GHz radio in percentage (%)
ap.24Ghz.noise_floor Noise floor of 2.4 GHz radio
ap.24Ghz.rx_bytes Total received bytes on 2.4 GHz radio
ap.24Ghz.tx_bytes Total transmitted bytes on 2.4 GHz radio
ap.5Ghz.airtime Airtime utilization on 5 GHz radio in percentage (%)
ap.5Ghz.noise_floor Noise floor of 5 GHz radio
ap.5Ghz.rx_bytes Total received bytes on 5 GHz radio
ap.5Ghz.tx_bytes Total transmitted bytes on 5 GHz radio
Mesh Peer
ip Mesh Peer IP address
mac Mesh Peer MAC address
name Mesh Peer hostname
Radio (Mesh Peer)
radio.band Mesh Peer radio band
radio.data_rate Data rate in Mbps
radio.rssi Mesh Peer RSSI
radio.rx_bytes Total received bytes
radio.snr Mesh Peer SNR
radio.ssid Mesh Peer SSID
radio.tx_bytes Total transmitted bytes
14.2.3 Example
Request
curl https://10.110.134.134/api/v1/devices/mesh/peers/BC-62-9F-05-37-61 \
-X GET -k \
-H "Authorization: Bearer 6b2a1954bf8fd13a93a8772247876d6ace65b304"
14.2.4 Sub-Resources
The following sub-resources can be applied to Mesh Peer URLs.
14.2.4.1 Response
Body
Name Details
Mesh Base AP
ap.base_mac Mesh Base MAC Address
ap.description AP description
ap.ip AP IP address
ap.mac AP MAC address
ap.name AP hostname
ap.site Site to which the AP belongs
ap.24Ghz.airtime Airtime utilization on 2.4 GHz radio in percentage (%)
ap.24Ghz.noise_floor Noise floor of 2.4 GHz radio
ap.24Ghz.rx_bytes Total received bytes on 2.4 GHz radio
14.2.4.2 Example
Request
curl https://10.110.134.134/api/v1/devices/mesh/peers/end_hosts/00-04-56-0F-A4-D9 \
-X GET -k \
-H "Authorization: Bearer 6b2a1954bf8fd13a93a8772247876d6ace65b304"
Response
{
"paging": {
"limit": 100,
"total": 1
},
"data": [
{
"ip": "10.110.235.73",
"mac": "BC-62-9F-05-37-61",
"name": "",
"ap": {
"mac": "00:04:56:B6:74:14",
"base_mac": "00-04-56-B6-86-22",
"name": "E400-B67414",
"description": "Base AP For Demo",
"site": "Central",
"up_time": "0d 5h 38m",
"24Ghz": {
"noise_floor": "-94",
"airtime": "72/4/68/0",
"tx_bytes": 5464,
"rx_bytes": 3360
},
"5Ghz": {
"noise_floor": "-104",
"airtime": "4/0/4/0",
"tx_bytes": 574,
"rx_bytes": 34860
}
},
"radio": {
"band": "2.4GHz",
"rssi": -46,
"snr": 54,
"ssid": "Auto-RF-2G-new",
"tx_bytes": 573464,
"rx_bytes": 349360,
"data_rate": 72.109
}
}
15 Alarms API
15.1 Active Alarms
GET /api/v1/alarms
15.1.1 Request
HTTP Headers
Header Value
Accept (optional) application/json
Authorization Bearer <ACCESS_TOKEN>
Header Value
fields Select JSON fields to be returned.
limit, offset Pagination functionality.
severity Alarm severity [critical, major, minor]
15.1.2 Response
Body
Name Details
acknowledged_by Acknowledged by
code Category code
duration Duration (seconds)
id Alarm Id
mac MAC address
message Message
name Alarm name
network Network
severity Severity
site Site
source Device name
source_type Device type
status Status
time_raised Raised time
tower Tower
15.2.1 Request
HTTP Headers
Parameters
Header Value
fields Select JSON fields to be returned.
limit, offset Pagination functionality.
severity Alarm severity [critical, major, minor]
start_time Start time of the interval where the alarms are active (ISO 8601 format).
state Alarm state (active, cleared).
stop_time Stop time of the interval where the alarms are active (ISO 8601 format).
15.2.2 Response
Body
Name Details
acknowledged_by Acknowledged by
code Category code
duration Duration (seconds)
id Alarm Id
mac MAC address
message Message
name Alarm name
network Network
severity Severity
site Site
source Device name
source_type Device type
status Status
time_cleared Clear time
time_raised Raised time
tower Tower
16 Events API
16.1.1 Overview
GET /api/v1/events
Request
HTTP Headers
Header Value
Accept (optional) application/json
Authorization Bearer <ACCESS_TOKEN>
Parameters
Header Value
fields Select JSON fields to be returned.
Response
Body
Name Details
code Category code
id Unique event Id
mac MAC address
message Message
name Event name
network Network
severity Severity
site Site
source Device name
source_type Device type
time_raised Raised time
tower Tower
17 Sessions API
17.1.1 Overview
GET /api/v1/users/sessions
Request
HTTP Headers
Header Value
Accept (optional) application/json
Authorization Bearer <ACCESS_TOKEN>
Parameters
Header Value
fields Select JSON fields to be returned.
limit, offset Pagination functionality.
Response
Body
Name Details
duration Duration of session in seconds
id Session Id
role Role of the administrator
user User name of the administrator
python client.py
18.2 Code
# Copyright (C) 2017 Cambium Networks, LTD. All rights reserved.
#
# API test code for cnMaestro that demonstrates session establishment and API
# calls. The client connects to cnMaestro using the Client Id and Client
# Secret downloaded from the Client API page in the cnMaestro UI. The Client
# receives a URL, Access Token, and Expiration Interval (in seconds)
# defining how long the token is valid. The URL and Access Token are used
# for subsequent API requests.
#
# This example also demonstrates the Token Validation API, which connects to
# cnMaestro directly, and not necessarily the URL returned during session
# establishment (though in On-Premises, they will be identical).
#
import sys
import requests
import json
import base64
HOST = '10.10.10.10'
CLIENT_ID = 'b3hmeraj3Xse24Qj'
CLIENT_SECRET = 'oCrhxTwqQ34O2E6pCLXMq9dEs8tzPL'
# Main function.
if __name__== '__main__':
# Retrieve access parameters and generate API session
print '\nRetrieve Access Parameters'
access_token, expires_in = get_access_parameters(HOST, CLIENT_ID, CLIENT_SECRET)
print 'Success: access_token (%s) expires_in (%s)\n' % (access_token, expires_in)
Path Details
Alarms API
/api/v1/alarms List of all active alarms.
/api/v1/alarms/{Alarm ID} Details on a single active alarm (not supported)
/api/v1/alarms/history List of all historical and active alarms.
Details on a single historical or active alarm. (not
/api/v1/alarms/history/{Alarm ID}
supported)
Devices API
/api/v1/devices System device inventory
/api/v1/devices/{Alarms API} System device alarms
/api/v1/devices/{Clients API} System WiFi clients
/api/v1/devices/{Events API} System device events
/api/v1/devices/{Mesh API} System WiFi mesh peers.
/api/v1/devices/statistics System device statistics
/api/v1/devices/performance System device performance
/api/v1/devices/{MAC} Single device inventory
/api/v1/devices/{MAC}/{Alarms API} Single device alarms
/api/v1/devices/{MAC}/{Clients API} Single device WiFi clients
/api/v1/devices/{MAC}/{Events API} Single device events
/api/v1/devices/{MAC}/{Mesh API} Single device WiFi mesh peers
/api/v1/devices/{MAC}/reboot Single device reboot operation
/api/v1/devices/{MAC}/statistics Single device statistics
/api/v1/devices/{MAC}/performance Single device performance
Events API
/api/v1/events List of all events.
Networks API
/api/v1/networks System network inventory
/api/v1/networks/{NID} Single network inventory
Sessions API
/api/v1/users/sessions Session information for current administrators.
Sites API
/api/v1/networks/{NID}/sites System site inventory
/api/v1/networks/{NID}/sites/{SID} Single site inventory
/api/v1/networks/{NID}/sites/{SID}/[Devices API] Single site devices
Towers API
/api/v1/networks/{NID}/towers System towers inventory
/api/v1/networks/{NID}/towers/{TID} Single tower inventory
/api/v1/networks/{NID}/towers/{TID}/[Devices API] Single tower devices