Overview

This document describes the RUCKUS AI public APIs. All RUCKUS AI APIs are hosted on the mapped subdomain, "api.".

RUCKUS AI API Hosts

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 and Terms of Service

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.

API Rate Limiting

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.

API Authentication and JWT

Authenticating

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.

How to Authenticate

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:

  • https://auth.ruckus.cloud/oauth2/token
  • Body of the request must contain: grant_type, client_id, and client_secret
  • 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.

    Using the API's in Delegated Mode

    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.

    Application Tokens

    Manage application tokens

    List Application Tokens

    Responses

    Response samples

    Content type
    application/json
    [
    • {
      }
    ]

    Create Application Token

    Request Body schema: application/json
    required
    name
    required
    string

    Responses

    Request samples

    Content type
    application/json
    {
    • "name": "string"
    }

    Response samples

    Content type
    application/json
    {
    • "id": "string",
    • "name": "string",
    • "clientId": "string",
    • "clientSecret": "string",
    • "accessTokenTtl": 0
    }

    Delete Application Token

    path Parameters
    applicationTokenId
    required
    string

    Responses

    Response samples

    Content type
    application/json
    {
    • "errors": [
      ],
    • "requestId": "string"
    }

    Get Application Token

    path Parameters
    applicationTokenId
    required
    string

    Responses

    Response samples

    Content type
    application/json
    {
    • "id": "string",
    • "name": "string",
    • "clientId": "string",
    • "clientSecret": "string",
    • "accessTokenTtl": 0
    }

    Rotate Secret

    path Parameters
    applicationTokenId
    required
    string

    Responses

    Response samples

    Content type
    application/json
    {
    • "id": "string",
    • "name": "string",
    • "clientId": "string",
    • "clientSecret": "string",
    • "accessTokenTtl": 0
    }

    Licenses

    Manage licenses

    Query Licenses and Hierarchy

    Request Body schema: application/json
    required
    Array of objects

    Responses

    Request samples

    Content type
    application/json
    {
    • "path": [
      ]
    }

    Response samples

    Content type
    application/json
    {
    • "children": [
      ],
    • "aps": [
      ]
    }

    List Licenses

    If you have access to multiple tenants, results will include data from all of them.

    Responses

    Response samples

    Content type
    application/json
    [
    • {
      }
    ]

    Refresh Licenses

    Responses

    Response samples

    Content type
    application/json
    [
    • {
      }
    ]

    Delete Orphaned APs

    path Parameters
    licenseId
    required
    string
    Request Body schema: application/json
    required
    Array (non-empty)
    apMac
    required
    string
    deviceId
    required
    string

    Responses

    Request samples

    Content type
    application/json
    [
    • {
      }
    ]

    Response samples

    Content type
    application/json
    {
    • "errors": [
      ],
    • "requestId": "string"
    }

    Get License

    Responses

    Response samples

    Content type
    application/json
    {
    • "licenseId": 0,
    • "tenantId": "string",
    • "tenantName": "string",
    • "count": 0,
    • "used": 0,
    • "withinGracePeriod": true,
    • "assignments": [
      ],
    • "orphanedAPs": [
      ]
    }

    Update License

    path Parameters
    licenseId
    required
    string
    Request Body schema: application/json
    required
    Array
    deviceId
    required
    string
    apMacList
    required
    Array of strings

    Responses

    Request samples

    Content type
    application/json
    [
    • {
      }
    ]

    Response samples

    Content type
    application/json
    {
    • "licenseId": 0,
    • "count": 0,
    • "used": 0,
    • "assignments": [
      ]
    }

    Onboarded Systems

    Manage onboarded systems

    List Onboarded Systems

    If you have access to multiple tenants, results will include data from all of them.

    Responses

    Response samples

    Content type
    application/json
    [
    • {
      }
    ]

    Delete Onboarded System

    path Parameters
    deviceId
    required
    string

    Responses

    Response samples

    Content type
    application/json
    {
    • "errors": [
      ],
    • "requestId": "string"
    }

    Get Onboarded System

    path Parameters
    deviceId
    required
    string

    Responses

    Response samples

    Content type
    application/json
    {
    • "deviceId": "string",
    • "deviceName": "string",
    • "tenantId": "string",
    • "tenantName": "string",
    • "state": "string",
    • "createdAt": "string",
    • "status": "ongoing",
    • "canDelete": true,
    • "deviceMetadata": {
      }
    }

    Resource Groups

    Manage resource groups

    List Resource Group

    Responses

    Response samples

    Content type
    application/json
    [
    • {
      }
    ]

    Create Resource Group

    Request Body schema: application/json
    required
    name
    required
    string
    description
    string or null
    required
    object (ResourceGroupFilter)

    Responses

    Request samples

    Content type
    application/json
    {
    • "name": "string",
    • "description": "string",
    • "filter": {
      }
    }

    Response samples

    Content type
    application/json
    {
    • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
    • "name": "string",
    • "description": "string",
    • "filter": {
      },
    • "isDefault": true
    }

    Query Resource Group Filters

    Request Body schema: application/json
    required
    searchString
    required
    string >= 2 characters
    searchType
    required
    string
    Enum: "networkHierarchies" "devices"

    Responses

    Request samples

    Content type
    application/json
    {
    • "searchString": "string",
    • "searchType": "networkHierarchies"
    }

    Response samples

    Content type
    application/json
    {
    • "networkNodes": [
      ],
    • "switchNodes": [
      ],
    • "idToSystemNameMapping": {
      }
    }

    Get Resource Group

    path Parameters
    resourceGroupId
    required
    string

    Responses

    Response samples

    Content type
    application/json
    {
    • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
    • "name": "string",
    • "description": "string",
    • "filter": {
      },
    • "isDefault": true
    }

    Update Resource Group

    path Parameters
    resourceGroupId
    required
    string
    Request Body schema: application/json
    required
    name
    required
    string
    description
    string or null
    required
    object (ResourceGroupFilter)

    Responses

    Request samples

    Content type
    application/json
    {
    • "name": "string",
    • "description": "string",
    • "filter": {
      }
    }

    Response samples

    Content type
    application/json
    {
    • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
    • "name": "string",
    • "description": "string",
    • "filter": {
      },
    • "isDefault": true
    }

    Users

    Manage users

    Delete User

    Request Body schema: application/json
    required
    Array
    string non-empty

    Responses

    Request samples

    Content type
    application/json
    [
    • "string"
    ]

    Response samples

    Content type
    application/json
    {
    • "errors": [
      ],
    • "requestId": "string"
    }

    List Users

    Responses

    Response samples

    Content type
    application/json
    [
    • {
      }
    ]

    Add Internal User

    Request Body schema: application/json
    required
    resourceGroupId
    required
    string
    role
    required
    string (UserRolesEnum)
    Enum: "admin" "network-admin" "report-only" "it-helpdesk" "read-only" "reports-user" "data-studio-user"
    • admin - Prime Administrator
    • network-admin - Administrator
    • report-only - Business Insights User
    • it-helpdesk - IT Helpdesk
    • read-only - Read Only
    • reports-user - Reports User
    • data-studio-user - Data Studio User
    swuId
    required
    string

    swuId from List Internal Users

    Responses

    Request samples

    Content type
    application/json
    {
    • "resourceGroupId": "string",
    • "role": "admin",
    • "swuId": "string"
    }

    Response samples

    Content type
    application/json
    {
    • "id": "string",
    • "firstName": "string",
    • "lastName": "string",
    • "email": "string",
    • "tenantId": "string",
    • "isSupport": true,
    • "preferences": { },
    • "userResourceMappings": [
      ]
    }

    Invite Third Party User

    Request Body schema: application/json
    required
    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"
    • admin - Prime Administrator
    • network-admin - Administrator
    • report-only - Business Insights User
    • it-helpdesk - IT Helpdesk
    • read-only - Read Only
    • reports-user - Reports User
    • data-studio-user - Data Studio User
    type
    string
    Default: "tenant"
    Enum: "tenant" "super-tenant"
    • tenant - Tenant
    • super-tenant - Super Tenant

    Responses

    Request samples

    Content type
    application/json
    {
    • "email": "user@example.com",
    • "resourceGroupId": "string",
    • "role": "admin",
    • "type": "tenant"
    }

    Response samples

    Content type
    application/json
    {
    • "invitedUserId": "string",
    • "email": "user@example.com",
    • "resourceGroupId": "string",
    • "role": "admin",
    • "type": "tenant"
    }

    List Internal Users

    List of internal users that can be added. Users that have already been added will not be shown.

    Responses

    Response samples

    Content type
    application/json
    [
    • {
      }
    ]

    Get User

    path Parameters
    userId
    required
    string

    Responses

    Response samples

    Content type
    application/json
    {
    • "id": "string",
    • "firstName": "string",
    • "lastName": "string",
    • "email": "string",
    • "tenantId": "string",
    • "isSupport": true,
    • "preferences": { },
    • "userResourceMappings": [
      ]
    }

    Update User

    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.

    path Parameters
    userId
    required
    string
    Request Body schema: application/json
    required
    resourceGroupId
    required
    string
    role
    required
    string (UserRolesEnum)
    Enum: "admin" "network-admin" "report-only" "it-helpdesk" "read-only" "reports-user" "data-studio-user"
    • admin - Prime Administrator
    • network-admin - Administrator
    • report-only - Business Insights User
    • it-helpdesk - IT Helpdesk
    • read-only - Read Only
    • reports-user - Reports User
    • data-studio-user - Data Studio User

    Responses

    Request samples

    Content type
    application/json
    {
    • "resourceGroupId": "string",
    • "role": "admin"
    }

    Response samples

    Content type
    application/json
    {
    • "id": "string",
    • "firstName": "string",
    • "lastName": "string",
    • "email": "string",
    • "tenantId": "string",
    • "isSupport": true,
    • "preferences": { },
    • "userResourceMappings": [
      ]
    }