This document describes the RUCKUS AI public APIs. All RUCKUS AI APIs are hosted on the mapped subdomain, "api.".
Region | Domain Name |
---|---|
Asia | https://api.asia.ruckus.cloud/ai |
Europe | https://api.eu.ruckus.cloud/ai |
North America | https://api.ruckus.cloud/ai |
License: RUCKUS AI Privacy Policy | Terms of Service APIs published in this document are subject to strict change control by RUCKUS. As far as possible, when new versions of the Public API are published, all documented API endpoints will maintain backward compatibility. When not possible, an API endpoint will be deprecated and a replacement API or some other workaround will be provided. Support for deprecated API endpoints will continue for at least six months prior to removal in order to provide API client developers sufficient time to adopt the replacement. This document will indicate when API endpoints are deprecated along with the schedule for their removal. API client developers may discover other experimental API endpoints provided by RUCKUS AI not included in this API document. RUCKUS reserves the right to change these experimental APIs without notice to API client developers.
To maintain system performance and prevent excessive API usage, rate limiting is enforced on certain API endpoints. Rate limiting controls the number of API requests an application or user can make within a specific time period. If this limit is exceeded, additional requests will be throttled, and the API will return an 'HTTP 429 Too Many Requests' response.
For more information, please refer to https://docs.ruckus.cloud/api.
The RUCKUS AI REST APIs use JSON Web Tokens (JWT) to secure all endpoints.
Ruckus AI authentication APIs are using the OAuth2 client credentials standard APIs, as described here: https://datatracker.ietf.org/doc/html. The API will authenticate a user client and will provide the JWT token.
Once logged into Ruckus AI, the Administrator must create an "Application Token" consisting of client ID and client secret, and can be found under Administration -> Developers -> Application Tokens.
The following endpoint will be used to authenticate and retrieve the JWT token:
Here is an example with curl:
curl --request POST \
--url 'https://auth.ruckus.cloud/oauth2/token' \
--header 'content-type: application/x-www-form-urlencoded' \
--data grant_type=client_credentials \
--data client_id=<client id> \
--data client_secret=<client secret>
Once you have acquired your JWT token, it must be included as "Authorization" HTTP request header of all subsequent requests. The format expected in the authentication header is "Bearer xxxxxxa". For additional information on the authentication scheme being used, please see RFC 6750 Section 2.1.
To access any REST API for a delegated account, correctly authenticate. Provide your JWT authentication credentials, but in addition, include the custom header with a key of "x-rks-tenantid" and value of tenant id to identify the delegated account.
{- "name": "string"
}
{- "id": "string",
- "name": "string",
- "clientId": "string",
- "clientSecret": "string",
- "accessTokenTtl": 0
}
Array of objects |
{- "path": [
- {
- "type": "network",
- "name": "string"
}
]
}
{- "children": [
- {
- "type": "string",
- "name": "string",
- "apCount": 0,
- "licensesAssigned": 0
}
], - "aps": [
- {
- "apMac": "string",
- "apName": "string",
- "deviceId": "string",
- "deviceName": "string",
- "licenseId": 0
}
]
}
licenseId required | string |
apMac required | string |
deviceId required | string |
[- {
- "apMac": "string",
- "deviceId": "string"
}
]
{- "errors": [
- {
- "message": "string"
}
], - "requestId": "string"
}
{- "licenseId": 0,
- "tenantId": "string",
- "tenantName": "string",
- "count": 0,
- "used": 0,
- "withinGracePeriod": true,
- "assignments": [
- {
- "deviceId": "string",
- "deviceName": "string",
- "apMacList": [
- "string"
]
}
], - "orphanedAPs": [
- {
- "deviceId": "string",
- "deviceName": "string",
- "apMac": "string"
}
]
}
licenseId required | string |
deviceId required | string |
apMacList required | Array of strings |
[- {
- "deviceId": "string",
- "apMacList": [
- "string"
]
}
]
{- "licenseId": 0,
- "count": 0,
- "used": 0,
- "assignments": [
- {
- "deviceId": "string",
- "deviceName": "string",
- "apMacList": [
- "string"
]
}
]
}
If you have access to multiple tenants, results will include data from all of them.
[- {
- "deviceId": "string",
- "deviceName": "string",
- "tenantId": "string",
- "tenantName": "string",
- "state": "string",
- "createdAt": "string",
- "status": "ongoing"
}
]
{- "deviceId": "string",
- "deviceName": "string",
- "tenantId": "string",
- "tenantName": "string",
- "state": "string",
- "createdAt": "string",
- "status": "ongoing",
- "canDelete": true,
- "deviceMetadata": {
- "serialNumber": "string",
- "clusterName": "string",
- "controllerVersion": "string",
- "onboarder": {
- "userId": "string",
- "tenantId": "string",
- "tenantName": "string"
}
}
}
name required | string |
description | string or null |
required | object (ResourceGroupFilter) |
{- "name": "string",
- "description": "string",
- "filter": {
- "networkNodes": [
- [
- {
- "type": "system",
- "name": "string"
}
]
], - "switchNodes": [
- [
- {
- "type": "system",
- "name": "string"
}
]
]
}
}
{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "description": "string",
- "filter": {
- "networkNodes": [
- [
- {
- "type": "system",
- "name": "string"
}
]
], - "switchNodes": [
- [
- {
- "type": "system",
- "name": "string"
}
]
]
}, - "isDefault": true
}
searchString required | string >= 2 characters |
searchType required | string Enum: "networkHierarchies" "devices" |
{- "searchString": "string",
- "searchType": "networkHierarchies"
}
{- "networkNodes": [
- [
- {
- "type": "system",
- "name": "string"
}
]
], - "switchNodes": [
- [
- {
- "type": "system",
- "name": "string"
}
]
], - "idToSystemNameMapping": {
- "property1": "string",
- "property2": "string"
}
}
{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "description": "string",
- "filter": {
- "networkNodes": [
- [
- {
- "type": "system",
- "name": "string"
}
]
], - "switchNodes": [
- [
- {
- "type": "system",
- "name": "string"
}
]
]
}, - "isDefault": true
}
resourceGroupId required | string |
name required | string |
description | string or null |
required | object (ResourceGroupFilter) |
{- "name": "string",
- "description": "string",
- "filter": {
- "networkNodes": [
- [
- {
- "type": "system",
- "name": "string"
}
]
], - "switchNodes": [
- [
- {
- "type": "system",
- "name": "string"
}
]
]
}
}
{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "description": "string",
- "filter": {
- "networkNodes": [
- [
- {
- "type": "system",
- "name": "string"
}
]
], - "switchNodes": [
- [
- {
- "type": "system",
- "name": "string"
}
]
]
}, - "isDefault": true
}
[- {
- "id": "string",
- "firstName": "string",
- "lastName": "string",
- "email": "string",
- "tenantId": "string",
- "tenantName": "string",
- "role": "admin",
- "resourceGroupId": "string",
- "resourceGroupName": "string",
- "type": "string",
- "invitation": {
- "state": "string",
- "inviterUser": {
- "firstName": "string",
- "lastName": "string"
}
}
}
]
resourceGroupId required | string |
role required | string (UserRolesEnum) Enum: "admin" "network-admin" "report-only" "it-helpdesk" "read-only" "reports-user" "data-studio-user"
|
swuId required | string
|
{- "resourceGroupId": "string",
- "role": "admin",
- "swuId": "string"
}
{- "id": "string",
- "firstName": "string",
- "lastName": "string",
- "email": "string",
- "tenantId": "string",
- "isSupport": true,
- "preferences": { },
- "userResourceMappings": [
- {
- "role": "admin",
- "resourceGroup": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "description": "string",
- "filter": {
- "networkNodes": [
- [
- {
- "type": "system",
- "name": "string"
}
]
], - "switchNodes": [
- [
- {
- "type": "system",
- "name": "string"
}
]
]
}, - "isDefault": true,
- "tenantId": "string"
}
}
]
}
email required | string <email> |
resourceGroupId required | string |
role required | string Enum: "admin" "network-admin" "report-only" "it-helpdesk" "read-only" "reports-user" "data-studio-user"
|
type | string Default: "tenant" Enum: "tenant" "super-tenant"
|
{- "email": "user@example.com",
- "resourceGroupId": "string",
- "role": "admin",
- "type": "tenant"
}
{- "invitedUserId": "string",
- "email": "user@example.com",
- "resourceGroupId": "string",
- "role": "admin",
- "type": "tenant"
}
{- "id": "string",
- "firstName": "string",
- "lastName": "string",
- "email": "string",
- "tenantId": "string",
- "isSupport": true,
- "preferences": { },
- "userResourceMappings": [
- {
- "role": "admin",
- "resourceGroup": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "description": "string",
- "filter": {
- "networkNodes": [
- [
- {
- "type": "system",
- "name": "string"
}
]
], - "switchNodes": [
- [
- {
- "type": "system",
- "name": "string"
}
]
]
}, - "isDefault": true,
- "tenantId": "string"
}
}
]
}
You are not allowed to update yourself or invited users. If you are an invited user, you are not allowed to update users in the host account.
userId required | string |
resourceGroupId required | string |
role required | string (UserRolesEnum) Enum: "admin" "network-admin" "report-only" "it-helpdesk" "read-only" "reports-user" "data-studio-user"
|
{- "resourceGroupId": "string",
- "role": "admin"
}
{- "id": "string",
- "firstName": "string",
- "lastName": "string",
- "email": "string",
- "tenantId": "string",
- "isSupport": true,
- "preferences": { },
- "userResourceMappings": [
- {
- "role": "admin",
- "resourceGroup": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "description": "string",
- "filter": {
- "networkNodes": [
- [
- {
- "type": "system",
- "name": "string"
}
]
], - "switchNodes": [
- [
- {
- "type": "system",
- "name": "string"
}
]
]
}, - "isDefault": true,
- "tenantId": "string"
}
}
]
}