Legacy Documentation for Statseeker API v2.1 r13

Index

Examples and Sample Code

Data Dictionary

Version

This guide is specific to the latest version of the Statseeker RESTful API, version 2.1 r13, which was made available with Statseeker version 5.5.5.

[top]

Overview

The Statseeker API (Application Programming Interface) provides access to view and edit Statseeker configuration settings, as well to retrieve and manipulate timeseries data via an interface other than that provided by the Statseeker’s web GUI (Graphical User Interface). Most of the processes and objects that you are used to interacting with in Statseeker (network discovery, users, groups, devices, interfaces, device events, thresholds, reporting data, etc.) are exposed as resources from the API.

The API adheres to basic RESTful API principles:

  • Implementing resource-oriented URLs
  • Uses HTTP response codes to indicate API errors
  • Uses HTTP authentication
  • Accepts HTTP verbs (GET, PUT, POST, and DELETE)

[top]

Code Samples

Code samples have been provided throughout this guide in a range of languages. Regardless of your implementation, in the end your request is submitted to the Statseeker API via an HTTP request, and consequently, in many instances some method of character encoding will be required. While some implementations will incorporate libraries that will handle any required encoding, others may not. In response, we have provided sample code demonstrating the use of both Unicode and URL (percent) encoding throughout this guide, so you may need to modify this aspect of the samples to suit the requirements specific to your environment.

The simplest implementation is using cURL to query the API. This allows you to begin investigating the Statseeker API with little to no requisite environmental configuration. All cURL examples provided in this guide are suited to use on a Unix based cURL implementation, which allows the use of both single quotes () and double quotes() for nested data objects. A Windows-based cURL implementation may not allow the use of single quotes, in this instance use double quotes and escape any inner pairs with backslash (\).

Example:
UnixWindows

curl \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer myToken" \
    -X POST \
    "https://your.statseeker.server/api/v2.1/group/?indent=3" \
    -d '{"data":[{"name":"Group1"}]}' 

curl \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer myToken" \
    -X POST \
    "https://your.statseeker.server/api/v2.1/group/?indent=3" \
    -d "{\"data\":[{\"name\":\"Group1\"}]}" 

Many instances of code samples in this document use nested quotes and, depending on your development environment, you may need to encode inner quote pairs so that they are interpreted correctly. In some examples we have URL encoded inner single-quotes and they are presented as %27. In other examples we have used the Unicode \u0027 for the same purpose. Presenting the samples in this way simply serves to highlight that there may be specific encoding requirements depending on your environment.

[top]

Request Headers

All requests should include the following HTTP headers:

Header Mandatory Value Notes
Accept no application/json This specifies the media type accepted in the response
Content-Type no application/json This specifies the media type of the content being sent to the API
Authorization yes Basic [base-64 encoded username:password] The Basic keyword indicates the authentication method being used and the base-64 encoded username:password pair provides the credentials needed to access the API. See Authentication for further details.
Bearer {authentication_token} The authentication token returned from a POST request to the Statseeker authentication end-point (/ss-auth)

[top]

Authentication

*** WARNING : Authentication requirements have changed with Statseeker v5.5.4 (API v2.1 r12) ***

  • v5.5.4 introduced token-based authentication, see User Authentication for details
  • New Installations: default to token-based authentication
  • Updated Servers: default to basic access authentication – this authentication method has been deprecated and will be removed in a future release

Statseeker v5.5.3 and earlier servers will only accept basic authentication.


Statseeker uses token-based authentication for user access to the server, by default, this includes API access. The Statseeker server has a resource which handles authentication requests, successful authentication returns an access token and this token must then be included with any subsequent API request. The API can also be set to use Basic Access Authentication instead of token authentication. This setting only applies to authentication with the API and does not impact user authentication via the web interface (GUI).

[top]

Set the API Authentication Method

To specify the API authentication method used:

  • Select Admin Tool > Statseeker Administration > Web Server Configuration
  • Click Edit (top-right)
  • Set RESTful API Authentication Mode as needed and click Save

See Web Server Configuration for more information.

[top]

Token-Based Authentication
  • The Statseeker server has a resource, located at https://your.statseeker.server/ss-auth, which handles authentication requests
  • To authenticate you must submit a POST request to the authentication endpoint, containing the username and password in the body of the request
  • Successful authentication will return an access token and this token must then be included with any subsequent request

The following sample code demonstrates this process:

cURLPython (requests)Ruby (rest-client)
Initial request to authenticate the user and return the authentication token.


curl \
	-D -X POST \
	-H "Content-type: application/x-www-form-urlencoded" \
	-d "user=user_name&password=user_password" \
	"https://your.statseeker.server/ss-auth"

Subsequent request to access the API.


curl \ 
	-X GET
	-H "Accept: application/json" \ 
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer myToken" \
	"https://your.statseeker.server/api/v2.1"


# import requests for handling connection and encoding
import requests
import json

def do_request(server, query, user, pword):

    # request auth token
    headers = { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' }
    url = f'https://{server}/ss-auth'
    authData = {'user': user, 'password': pword}
    resp = requests.post(url, headers=headers, data=authData, verify=False)
    headers['Content-Type'] = 'application/json'
    url = f'https://{server}/{query}'
	
	# If auth was successful, include my token and make my API request
    if resp.status_code == 200:        
        myToken = resp.json()
        headers['Authorization'] = f'Bearer {myToken["access_token"]}'
        resp = requests.get(url, headers=headers, verify=False)
    return resp

# Statseeker Server IP
server = 'your.statseeker.server'
# credentials
user = 'your_api_user'
pword = 'your_user_password'
# API root endpoint
query = 'api/v2.1'
# optional response formatting
query += '/?indent=3&links=none'
# Run the request
resp = do_request(server, query, user, pword)

# output the response to my API request
if resp.status_code == 200:
    print(resp.status_code)
    print(resp.json())
else:
    print(f'Error: {resp.status_code} {resp.reason}')

# install with: $ gem install rest-client
require "rest_client"
require "json"
require "base64"

def do_request(server, query, user, pword)
    # Run auth request
    headers = {
        :content_type => "application/x-www-form-urlencoded"
    }
    url = "https://" + server + "/ss-auth"
    authData = {
       :user => user,
       :password => pword
    }
    begin
        resp = RestClient::Request.execute(
            :method => :post,
            :url => url,
            :headers => headers,
            :verify_ssl => false,
            :payload => authData
        )
   
        # Include my token and make my API request
        headers["content_type"] = :json
        url = "https://" + server + "/" + query
        rdata = JSON.parse(resp)
        headers["Authorization"] = "Bearer " + rdata.fetch("access_token")
        return RestClient::Request.execute(
            :method => :get,
            :url => url,
            :headers => headers,
            :verify_ssl => false,
        )
    end
end
# Statseeker Server IP
server = 'your.statseeker.server'
# credentials
user = 'your_api_user'
pword = 'your_user_password'
# api root endpoint
$query = 'api/v2.1'
# optional formatting of the response
$query += '/?links=none&indent=3'
# Run the request
resp = do_request($server, $query, $user, $pword)
puts "#{resp.to_str}"
[top]

Example: Token-based Auth with a fall back to Basic Auth

In this example we attempt token authentication and if this process fails, we fallback to basic authentication.

PythonRuby


# import requests for handling connection and encoding
import requests
import json
def do_request(server, query, user, pword):
    # Run auth request
    headers = { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' }
    url = f'https://{server}/ss-auth'
    authData = {'user': user, 'password': pword}
    resp = requests.post(url, headers=headers, data=authData, verify=False)
    headers['Content-Type'] = 'application/json'
    url = f'https://{server}/{query}'
    print(f'Get Auth Token: {resp.status_code}')
    if resp.status_code == 200:    
        # Authentication successful, Statseeker >= v5.5.4
        myToken = resp.json()
        headers['Authorization'] = f'Bearer {myToken["access_token"]}'
        resp = requests.get(url, headers=headers, verify=False)
    if resp.status_code == 401:
        print(f'Token auth failed: {resp.status_code}, trying basic auth')
        # Either Authentication was unsuccessful (Statseeker <  v5.5.4), or API set to use basic auth
        # Try basic auth
        resp = requests.get(url, headers=headers, auth=(user, pword), verify=False)
    return resp

# Statseeker Server IP
server = 'your.statseeker.server'
# credentials
user = 'api_user'
pword = 'user_password'
# API root endpoint
query = 'api/v2.1'
# optional response formatting
query += '/?indent=3&links=none'
# Run the request
resp = do_request(server, query, user, pword)
if resp.status_code == 200:
    print(resp.status_code)
    print(resp.json())
else:
    print(f'Error: {resp.status_code} {resp.reason}')

# install with: $ gem install rest-client
require "rest_client"
require "json"
require "base64"

def try_basic(server, query, user, pword)
	headers = {
		:content_type => "json"
	}
	url = "https://" + server + "/" + query
	headers["Authorization"] = "Basic " + Base64.encode64("#{user}:#{pword}")
	return RestClient::Request.execute(
		:method => :get,
		:url => url,
		:headers => headers,
		:verify_ssl => false
	)
end

def do_request(server, query, user, pword)
    # Run auth request
    headers = {
        :content_type => "application/x-www-form-urlencoded"
    }
    url = "https://" + server + "/ss-auth"
    authData = {
       :user => user,
       :password => pword
    }
    begin
        resp = RestClient::Request.execute(
            :method => :post,
            :url => url,
            :headers => headers,
            :verify_ssl => false,
            :payload => authData
        )
    rescue RestClient::Unauthorized
		# bad credentials or Statseeker not v5.5.4 or higher
        try_basic(server, query, user, pword)
    else
        # Authentication successful. Statseeker at least v5.5.4
        headers["content_type"] = :json
        url = "https://" + server + "/" + query
        rdata = JSON.parse(resp)
        headers["Authorization"] = "Bearer " + rdata.fetch("access_token")
        return RestClient::Request.execute(
            :method => :get,
            :url => url,
            :headers => headers,
            :verify_ssl => false,
        )
    end
	rescue RestClient::Unauthorized
		# Statseeker = v5.5.4 but configured for basic auth
        try_basic(server, query, user, pword)
end
# Statseeker Server IP
$server = 'your.statseeker.server'
# api user credentials
$user = 'api_user'
$pword = 'user_password'
# api root endpoint
$query = 'api/v2.1'
# optional formatting of the response
$query += '/?links=none&indent=3'
# Run the request
resp = do_request($server, $query, $user, $pword)
puts "#{resp.to_str}"
[top]

Basic Authentication (Deprecated – only available on servers that have been upgraded from earlier versions)

The Statseeker API uses the same HTTP Basic Access (BA) authentication used by the Statseeker web interface (i.e.username:password).

This basic authentication must be included in the HTTP Authorization header for every request sent to the API, see below for examples of supplying this authorization.

cURLPython (requests)Ruby (rest-client)

curl \ 
	-H "Accept: application/json" \ 
	-H "Content-Type: application/json" \
	-u user:pword \
	"https://your.statseeker.server/api/v2.1"

 

# import requests for handling connection and encoding
import requests, json

# specify the api endpoint to be used
url = "https://your.statseeker.server/api/v2.1/"

# credentials
user = "username"
pword = "password"

# headers
headers = {"Accept":"application/json", "Content-Type":"application/json"}

# send request 
r = requests.get(url, headers=headers, auth=(user, pword))
print(r.status_code)
print(r.json())

# install with: $ gem install rest-client
require 'rest_client'

# api root endpoint
$uri = 'https:/your.statseeker.server/api/v2.1/'

# api user credentials
$user = 'username'
$pword = 'password'

# optional formatting of the response for onscreen readability
$rspFormat = '?&indent=3'

# send request
response = RestClient::Request.new({
      method: :get,
      url: $uri + $rspFormat,
      user: $user,
      password: $pword,
    }).execute
	
# output response to screen
puts "#{response.to_str}"
[top]

Manage API User’s access to Data

API access also requires that the user account initiating the communication has been assigned permission to interact with the API. The default admin user account (created during the Statseeker installation process) is configured with API read/write access by default and, when creating additional Statseeker users API access can be assigned:

  • Via the web interface, by setting the API Access field, see User Accounts for details
  • Via the API, by setting api_access = rw, for read-write access (alternatively, r, or w, for read-only and write-only respectively)

Independent of a user accounts’ ability to access the API is the user accounts’ data access permissions. These permissions can be used to restrict the user from viewing data from specific elements of your network infrastructure. These permissions are managed through user-group associations that will have been configured when the user account was created. If you are not familiar with this process, see Users & Grouping.

You may want to consider creating a dedicated API user account:

  • Assign the account API read/write access
  • To enable access to all data, assign the account ‘All Groups’ permission (see Users & Grouping for details)
  • Reference this account in all API scripts

[top]

Response Codes

Statseeker uses RESTful HTTP response codes to indicate success or failure of API requests

Code Message Notes
200 Success Successful API request

Note: when referencing deprecated objects/endpoints the response will return a Status: 200 OK, but the response header will contain a Warning 299 – Deprecated API. In this instance, refer to the Resource Reference for the resource being requested.
400 Bad Request Malformed request, check request syntax and supplied parameters
401 Unauthorized Authorization error, check the supplied username and password
404 Not Found The specified endpoint cannot be located
500 Server Error Something has gone wrong on Statseeker’s end


Note: if the request is correctly formed but the specified resource does not exist, then the API will return a 200 response but the data object will be an empty array.

Example Request:
We are requesting a user with an ID of not_a_valid_user_id.

https://your.statseeker.server/api/v2.1/user/not_a_valid_user_id/?links=none

Example Response:
The response will return a data object containing all the data retrieved for the specified user, in this case an empty array and the corresponding data_total is 0.


{
    "version": "2.1",
    "revision": "13",
    "info": "The Statseeker RESTful API",
    "data": {
        "success": true,
        "errmsg": "ok",
        "time": 1575850381,
        "objects": [
            {
                "type": "user",
                "sequence": 0,
                "status": {
                    "success": true,
                    "errcode": 0
                },
                "data_total": 0,
                "data": []
            }
        ]
    }
}

[top]

Limits on Size of Response Object

The API has configurable limits on the size of the data being returned from any single API query. The default value of these limits are:

  • Event based data (syslog, threshold events) is limited to 1 million rows per request
  • Timeseries data is limited to 1GB of data returned per request

These default values are intentionally set very high, and should not impact typical use of the API. They will however prevent a single API query from consuming enough system resources to severely impact the performance of your Statseeker server. The limit values can be modified to suit your Statseeker server resources, please contact Statseeker Technical Support for assistance.

[top]

Pagination

The API automatically paginates the response when large data sets are returned. By default, the API will return 50 results per response.

The number of results returned in a single response can be modified from the default value of 50 by setting the limit parameter on the request.

The following example HTTP request will return 200 results per response
https://your.statseeker.server/api/v2.1/cdt_port/?&limit=200

When moving through paginated data with the pagination links (Next, Previous, etc) the request URL is altered to append an offset request parameter. Following on from the example above, with limit=200 and setting offset=100, the request will return the 101st to 300th result:

https://your.statseeker.server/api/v2.1/cdt_port/?&limit=200&offset=100

[top]


Linked Resources

There are two types of resource links available:

Standard Links

Most resources are linked to at least one other resource in a parent-child relationship. You can use this linking to access any of the parent-resource fields from the child resource (e.g. a query to the interface object {cdt_port} can access any of the fields contained in the device resource {cdt_device} for the device that the interface resides on) This linking is one-way, from child to parent/ancestor. The format for specifying a field from a linked resource is:

{linked_resource_name}.{field}
E.g.cdt_device.name

To see which parent-resources can be linked to from a given resource, run a GET command against the describe endpoint (api/v2.1/{resource}/describe) for that resource and review content of objects.links.

Example:

api/v2.1/cdt_cpu/describe, will return something like:


{
    "version": "2.1",
    "revision": "13",
    "info": "The Statseeker RESTful API",
    "data": {
        "success": true,
        "errmsg": "ok",
        "time": 1596514086,
        "objects": [
            {
                "type": "cdt_cpu",
                "title": "CPU",
                "description": "The custom data entities for the cpu table",
                "fields": {...},
                "commands": {...},
                "info": {...},
                "allow_formula_fields": true,
                "links": {
                    "deviceLink": {
                        "title": "Link to Device",
                        "object": "cdt_device",
                        "default": 1
                    }
                },
                "global_field_options": {...}
            }
        ]
    },
    "links": [...]
}

We can see, in the response object above, that objects.links specifies a link (deviceLink) to the device resource cdt_device.

Example:

You can request data about interfaces showing a high rate of discarded packets from the cdt_port resource, and in the same call request ping-related data from the cdt_device resource of the parent device for each port.

api/v2.1/cdt_port/?fields=name,InOutDiscards,RxDiscardsPercent,TxDiscardsPercent,InOutOctets,cdt_device.name,cdt_device.ping_rtt&formats=avg&InOutDiscards_formats=total,avg&InOutOctets_formats=total&timefilter=range=now -45m to now&InOutDiscards_sort=1,desc,avg&limit=5&links=none

  • fields=name,InOutDiscards,RxDiscardsPercent,TxDiscardsPercent,InOutOctets,cdt_device.name,cdt_device.ping_rtt – the fields we want to retrieve, including name and ping from the parent object cdt_device.name,cdt_device.ping_rtt
  • formats=avg – a global formats parameter for all timeseries data
  • InOutDiscards_formats=total,avg&InOutOctets_formats=total – metric specific overrides for the formats to retrieve additional formats for some metrics
  • timefilter=range=now -45m to now – a global timefilter parameter for all timeseries data
  • InOutDiscards_sort=1,desc,avg – sort the interfaces presenting the highest discard rate to the top
  • limit=5&links=none – limit the initial response to 5 ports and don’t show the links reference object

Once a field from a linked resource has been retrieved, it can be treated like any other field. You can specify formats, and timefilters for the field and you can sort and filter the response object by that field. In the example above we requested cdt_device.name, we can reference that to apply a filter to the request to only return data on the interfaces from a single device (or selection of devices).

Example:
api/v2.1/cdt_port/?fields=name,InOutDiscards,RxDiscardsPercent,TxDiscardsPercent,InOutOctets,cdt_device.name,cdt_device.ping_rtt&formats=avg&InOutDiscards_formats=total,avg&InOutOctets_formats=total&timefilter=range=now -45m to now&InOutDiscards_sort=1,desc,avg&limit=5&links=none&cdt_device.name_filter=LIKE(“NewYork%25”)

  • cdt_device.name_filter=LIKE(“NewYork%25”) – filter the response to only show ports on devices with a name starting with NewYork

Response:


{
    "info": "The Statseeker RESTful API",
    "version": "2.1",
    "data": {
        "objects": [
            {
                "status": {
                    "errcode": 0,
                    "success": true
                },
                "data": [
                    {
                        "name": "Gi6/20",
                        "cdt_device.ping_rtt": {
                            "avg": 35.5126
                        },
                        "InOutDiscards": {
                            "total": 5900.34,
                            "avg": 655.593
                        },
                        "InOutOctets": {
                            "total": 13768100000
                        },
                        "cdt_device.name": "NewYork-swt4",
                        "TxDiscardsPercent": {
                            "avg": 0.023552
                        },
                        "RxDiscardsPercent": {
                            "avg": 0
                        },
                        "id": 811
                    },
                    {
                        "name": "Gi2/28",
                        "cdt_device.ping_rtt": {
                            "avg": 47.5407
                        },
                        "InOutDiscards": {
                            "total": 5774.36,
                            "avg": 641.596
                        },
                        "InOutOctets": {
                            "total": 13159300000
                        },
                        "cdt_device.name": "NewYork-swt3",
                        "TxDiscardsPercent": {
                            "avg": 0.0231991
                        },
                        "RxDiscardsPercent": {
                            "avg": 0
                        },
                        "id": 1032
                    },
                    {
                        "name": "Gi6/18",
                        "cdt_device.ping_rtt": {
                            "avg": 35.5126
                        },
                        "InOutDiscards": {
                            "total": 5673.6,
                            "avg": 630.4
                        },
                        "InOutOctets": {
                            "total": 6980780000
                        },
                        "cdt_device.name": "NewYork-swt4",
                        "TxDiscardsPercent": {
                            "avg": 0.00432219
                        },
                        "RxDiscardsPercent": {
                            "avg": 0
                        },
                        "id": 808
                    },
                    {
                        "name": "Gi2/4",
                        "cdt_device.ping_rtt": {
                            "avg": 35.5126
                        },
                        "InOutDiscards": {
                            "total": 5418.93,
                            "avg": 602.103
                        },
                        "InOutOctets": {
                            "total": 1743290000
                        },
                        "cdt_device.name": "NewYork-swt4",
                        "TxDiscardsPercent": {
                            "avg": 0.0754798
                        },
                        "RxDiscardsPercent": {
                            "avg": 0
                        },
                        "id": 709
                    },
                    {
                        "name": "Gi7/22",
                        "cdt_device.ping_rtt": {
                            "avg": 25.2689
                        },
                        "InOutDiscards": {
                            "total": 5256.75,
                            "avg": 584.083
                        },
                        "InOutOctets": {
                            "total": 8214830000
                        },
                        "cdt_device.name": "NewYork-swt1",
                        "TxDiscardsPercent": {
                            "avg": 0
                        },
                        "RxDiscardsPercent": {
                            "avg": 0.013608
                        },
                        "id": 1491
                    }
                ],
                "type": "cdt_port",
                "data_total": 787,
                "sequence": 0
            }
        ],
        "errmsg": "ok",
        "success": true,
        "time": 1534217902
    },
    "revision": "13"
}

Resources with Multiple Links

Some resources have multiple linked resources, and some have multiple links to instances of the same resource. Take the cdt_mis (MAC/IP/Switch Port) resource for example. If we send a describe request to the cdt_mis resource, the links section of the response contains:


"links": {
	"arp_dev": {
		"title": "Link to ARP Device",
		"object": "cdt_device",
		"default": 0
	},
	"connecteddevice": {
		"title": "Link to Connected Device",
		"object": "cdt_device",
		"default": 0
	},
	"connectedport": {
		"title": "Link to Connected Interface",
		"object": "cdt_port",
		"default": 1
	},
	"deviceLink": {
		"title": "Link to Device",
		"object": "cdt_device",
		"default": 1
	},
	"port": {
		"title": "Link to Interface",
		"object": "cdt_port",
		"default": 0
	}
},

This endpoint has multiple links out to instances of the cdt_device (parent device, connected device and ARP device) and cdt_port (associated port and connected port).

When referencing cdt_device.{field} or cdt_port.{field) in queries to the cdt_mis resource, the API will return the parent device and port associated with the MAC address. To reference any of the other cdt_device (connected device / ARP device) links, or the connected interface link, the link needs to be defined. This requires the following parameters:

  • {foo} – a custom named field
  • {foo}_link={name_of_link} – specify which linked resource to use
  • {foo}_object={resource_type_linked_object} – specify the resource type being linked to
  • {foo}_field={field_name} – specifying fields to be retrieved from the linked resource

Example: Requesting some fields for a specified MAC

/api/v2.1/cdt_mis/?fields=name,mac,ip,vlan_name,cdt_device.name&mac_filter=is(%2200:00:74:db:3b:f6%22)

To also return the ipaddress of the ARP Router we need to add a custom named field (see Named Fields for details), and to define a link to access that ARP device to return that field. I will call my named field arpRouter so my new request will be:

/api/v2.1/cdt_mis/?fields=name,mac,ip,vlan_name,cdt_device.name,arpRouter&mac_filter=is(%2200:00:74:db:3b:f6%22)&arpRouter_link=arp_dev&arpRouter_object=cdt_device&arpRouter_field=ipaddress

  • arpRouter – my named field, included in the fields parameter
  • arpRouter_link=arp_dev – my {foo}_link parameter, identifying which link on the cdt_mis record I want to retrieve data from
  • arpRouter_object=cdt_device – my {foo}_object parameter, identifying the resource type I am linking to
  • arpRouter_field=ipaddress – my {foo}_field parameter, identifying which field I want retrieved

Custom Links

Custom links, like their standard counter-part, allow you to query a resource and, via the defined link, request data from another resource in the same query. To achieve this the custom link is first created by linking the field from one resource to the corresponding field in another. Once the link has been created, when querying the resource defined as the ‘link source’ you can also query the resource defined as the ‘link destination’. The syntax for specifying a field from a linked resource is the same as when using standard links:

{linked_resource_name}.{field}
E.g.cdt_device.name

Example:

We have a threshold set for an average 5-minute memory usage of over 90%. With the API we can query threshold event records for details on breaches of this threshold, but we cannot request recent memory usage data leading up to the breach because there is no link between the threshold event resource and the memory resource.

We first create a link between the threshold event and the memory resources by specifying a field that exists in both:

  • The threshold_record resource contains an entityid field which contains the ID of the entity that triggered the breach, in this instance the memory entity
  • The cdt_memory resource contains an id field which contains the ID of the memory entity

The link is created by:

  • Sending a POST command to the resource endpoint
  • Specifying the source resource and field
  • Specifying the destination resource and corresponding field

curl \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer myToken" \
    -X POST \
    "https://my.statseeker.server/api/v2.1/link/?indent=3" \
    -d '{
          "data": [{
            "name": "memoryLink",
            "title": "Link to Memory",
            "default": 1,
            "src": "threshold_record",
            "src_fields": {"entityid": {}},
            "src_query": "{entityid}",
            "dst": "cdt_memory",
            "dst_fields": {"id": {}},
            "dst_query": "{id}"
          }]
        }'

After the link has been created, any query to the source resource can also query data from the linked destination resource. In the example above, we can request memory data while querying threshold records.

Note: for details on the link resource, refer to the link resource in the Resource Reference.

With the link created, we can now send our query containing the following URL:

https://my.statseeker.server/api/v2.1/threshold_record/?fields=time,device,entityTypeName,event,cdt_memory.memoryUsedPercent,Usage5m&Usage5m_field=memoryUsedPercent&Usage5m_object=memory&Usage5m_formats=vals&Usage5m_timefilter=range%20=%20now%20-5m%20to%20now&formats=avg,min,max&timefilter=range=start_of_today%20to%20now&entityTypeName_filter==’memory’&entityTypeName_hide=1&lastx=5&timefmt=%c

Breakdown:

  • https://your.statseeker.server/api/v2.1/threshold_record/ – the resource endpoint, specifying the threshold_record resource
  • ?fields=time,device,entityTypeName,event,cdt_memory.memoryUsedPercent,Usage5m – the fields to return, including the memoryUsedPercent field from our linked cdt_memory resource. We want to return 2 different sets of memoryUsedPercent data, so we include a custom named field, Usage5m for the second set.
Note: for details on named fields, see Named Fields.
  • &Usage5m_field=memoryUsedPercent&Usage5m_object=memory – define the custom named field as another instance of cdt_memory.memoryUsedPercent
  • &Usage5m_formats=vals&Usage5m_timefilter=range = now -5m to now – specify the format and timefilter for the custom field
  • &formats=avg,min,max&timefilter=range=start_of_today%20to%20now – specify the format and timefilter for all other timeseries metrics, in this case it is only cdt_memory.memoryUsedPercent
  • &entityTypeName_filter==’memory’ – filter the returned threshold event records to just those concerning breaches of memory thresholds
  • &entityTypeName_hide=1 – we need to retrieve the entityTypeName in order to filter on it, but we don’t need to see the value in my returned data, so we hide it
  • &lastx=5 – return the 5 most recent records
  • &timefmt=%c – we are specifying the format to use when displaying the time that the threshold breach occurred

Here is the response we receive from the API request:


{
    "version": "2.1",
    "revision": "13",
    "info": "The Statseeker RESTful API",
    "data": {
        "success": true,
        "errmsg": "ok",
        "time": 1596598309,
        "objects": [
            {
                "type": "threshold_record",
                "sequence": 0,
                "status": {
                    "success": true,
                    "errcode": 0
                },
                "data_total": 5,
                "data": [                    
                    {
                        "time": "Wed Aug  5 13:24:00 2020",
                        "device": "NewYork-srv4",
                        "event": "Mem905m (memory.memoryUsedPercent avg, threshold: 90%)",
                        "cdt_memory.memoryUsedPercent": {
                            "min": 5,
                            "max": 94.8153,
                            "avg": 49.3997
                        },
                        "Usage5m": {
                            "vals": [
                                89.5952,
                                92.3465,
                                93.1448,
                                94.4017,
                                94.7985
                            ]
                        },
                        "id": "5F2A2650-1B-2"
                    },
                    {
                        "time": "Wed Aug  5 13:19:00 2020",
                        "device": "Budapest-srv2",
                        "event": "Mem905m (memory.memoryUsedPercent avg, threshold: 90%)",
                        "cdt_memory.memoryUsedPercent": {
                            "min": 4.99998,
                            "max": 96.9951,
                            "avg": 50.3273
                        },
                        "Usage5m": {
                            "vals": [
                                91.668,
                                94.1118,
                                95.4288,
                                96.9171,
                                95.5872
                            ]
                        },
                        "id": "5F2A2524-16-2"
                    },
                    {
                        "time": "Wed Aug  5 13:19:00 2020",
                        "device": "NewYork-srv4",
                        "event": "Mem905m (memory.memoryUsedPercent avg, threshold: 90%)",
                        "cdt_memory.memoryUsedPercent": {
                            "min": 5,
                            "max": 94.8153,
                            "avg": 49.3997
                        },
                        "Usage5m": {
                            "vals": [
                                91.5952,
                                92.3465,
                                93.1448,
                                94.4017,
                                94.7985
                            ]
                        },
                        "id": "5F2A2524-15-2"
                    },
                    {
                        "time": "Wed Aug  5 13:14:00 2020",
                        "device": "Budapest-srv2",
                        "event": "Mem905m (memory.memoryUsedPercent avg, threshold: 90%)",
                        "cdt_memory.memoryUsedPercent": {
                            "min": 4.99998,
                            "max": 97.9951,
                            "avg": 50.3273
                        },
                        "Usage5m": {
                            "vals": [
                                91.668,
                                94.1118,
                                95.4288,
                                96.9171,
                                96.5872
                            ]
                        },
                        "id": "5F2A23F8-E-2"
                    },
                    {
                        "time": "Wed Aug  5 12:44:00 2020",
                        "device": "Pretoria-srv",
                        "event": "Mem905m (memory.memoryUsedPercent avg, threshold: 90%)",
                        "cdt_memory.memoryUsedPercent": {
                            "min": 20.1107,
                            "max": 96.9795,
                            "avg": 51.634
                        },
                        "Usage5m": {
                            "vals": [
                                91.2561,
                                91.4009,
								91.587,
                                91.8134,
                                92.0167
                            ]
                        },
                        "id": "5F2A1CF0-6C-2"
                    }                    
                ]
            }
        ]
    },
}

[top]




Named Fields

The API doesn’t allow you to explicitly request the same field twice in the same call. When you want to request multiple sets of data for the same field, but with different options, you can use named fields; simply add a custom field to the fields parameter.

Example:

I want to request TxUtil data on all ports on a device but I want the data broken into today and yesterday. To do this I am going to:

  • Specify two named fields, yesterdayTx and todayTx
    fields=cdt_device.name,name,yesterdayTx,todayTx
  • Define what those fields refer to
    yesterdayTx_field=TxUtil&todayTx_field=TxUtil
  • Set specific timefilters for each named field
    yesterdayTx_timefilter=range=start_of_today -1d to start_of_today&todayTx_timefilter=range=start_of_today to now
  • Use a global formats parameter to apply to both
    formats=min,max,avg,95th
  • Filter the response to just the device in question
    cdt_device.name_filter=IS(“<DEVICE NAME>”)

My full request string will be:
api/v2.1/cdt_port/?fields=cdt_device.name,name,yesterdayTx,todayTx&todayTx_field=TxUtil&formats=max,min,avg,95th&todayTx_timefilter=range=start_of_today to now&yesterdayTx_field=TxUtil&yesterdayTx_timefilter=range=start_of_today -1d to start_of_today&cdt_device.name_filter=IS(“<DEVICE NAME>”)&links=none

The response is:


{
    "info": "The Statseeker RESTful API",
    "version": "2.1",
    "data": {
        "objects": [
            {
                "status": {
                    "errcode": 0,
                    "success": true
                },
                "data": [
                    {
                        "cdt_device.name": "<DEVICE NAME>",
                        "yesterdayTx": {
                            "max": 9.85221,
                            "avg": 9.78883,
                            "95th": 9.84576,
                            "min": 8.00007
                        },
                        "name": "Gi0/1",
                        "todayTx": {
                            "max": 9.8516,
                            "avg": 9.80882,
                            "95th": 9.84672,
                            "min": 9.34127
                        },
                        "id": 1975
                    },
                    {
                        "cdt_device.name": "<DEVICE NAME>",
                        "yesterdayTx": {
                            "max": 786.667,
                            "avg": 294.361,
                            "95th": 766.18,
                            "min": 83.6935
                        },
                        "name": "Gi0/2",
                        "todayTx": {
                            "max": 543.072,
                            "avg": 182.109,
                            "95th": 497.423,
                            "min": 95.8462
                        },
                        "id": 1976
                    },
                    {
                        "cdt_device.name": "<DEVICE NAME>",
                        "yesterdayTx": {
                            "max": 783.816,
                            "avg": 256.446,
                            "95th": 714.649,
                            "min": 94.7673
                        },
                        "name": "Gi0/3",
                        "todayTx": {
                            "max": 786.667,
                            "avg": 495.852,
                            "95th": 781.882,
                            "min": 96.1355
                        },
                        "id": 1977
                    },
                    {
                        "cdt_device.name": "<DEVICE NAME>",
                        "yesterdayTx": {
                            "max": 7.48404,
                            "avg": 3.68874,
                            "95th": 4.88369,
                            "min": 0.995533
                        },
                        "name": "Gi0/4",
                        "todayTx": {
                            "max": 7.70181,
                            "avg": 4.54324,
                            "95th": 5.55599,
                            "min": 2.71828
                        },
                        "id": 1978
                    },
                    {
                        "cdt_device.name": "<DEVICE NAME>",
                        "yesterdayTx": {
                            "max": 8.37714,
                            "avg": 2.99202,
                            "95th": 6.29977,
                            "min": 0.96669
                        },
                        "name": "Gi0/5",
                        "todayTx": {
                            "max": 8.24358,
                            "avg": 6.07991,
                            "95th": 7.4297,
                            "min": 3.94083
                        },
                        "id": 1979
                    }
                ],
                "type": "cdt_port",
                "data_total": 5,
                "sequence": 0
            }
        ],
        "errmsg": "ok",
        "success": true,
        "time": 1533779107
    },
    "revision": "13"
}

Named fields are also required when:

  • A resource has multiple links to the same resource type – one of these will be the default link and the others not
  • You want to refence a non-default linked resource

A named field is defined for each field you want returned from a non-default linked resource, see Multiple Links to the same resource for details.

[top]




Field Formulas

Field formulas allow you to request a user defined field from the API and populate that field via a formula based on other fields returned in the request. The formula accepts SQL operators and conventions, and can reference the values of other fields, returned by the query, with the following syntax:

  • Configuration field: {field}, e.g. {ping_poll}
  • Timeseries/Event fields must also define a data format: {field:format}, e.g. {ping_rtt:current}

[top]


Formula Example: Convert InOctets to Mebibytes

Request: /api/v2.1/cdt_port/?fields=cdt_device.name,name,InOctets,InMB&timefilter=range = now -30m to now&formats=vals&InMB_formula={InOctets:vals}/1024/1024&cdt_device.name_filter=IS(“<DEVICE NAME>”)

The request:

  • Defines a named field, InMB
  • Specifies the formula to use to populate that field: InMB_formula={InOctets:vals} / 1024 / 1024
  • Must include any field referenced within the formula as well as any required data format, in this case {InOctets:vals}

Response:


{
    "version": "2.1",
    "revision": "13",
    "info": "The Statseeker RESTful API",
    "data": {
        "success": true,
        "errmsg": "ok",
        "time": 1597795111,
        "objects": [
            {
                "type": "cdt_port",
                "sequence": 0,
                "status": {
                    "success": true,
                    "errcode": 0
                },
                "data_total": 2,
                "data": [
                    {
                        "cdt_device.name": "<DEVICE NAME>",
                        "name": "int.2",
                        "InOctets": {
                            "vals": [
                                72506880,
                                72525312,
                                72607744,
                                72499968,
                               ...
                                73761536,
                                72515328
                            ]
                        },
                        "InMB": [
                            69.1479,
                            69.1655,
                            69.2441,
                            69.1414,
                            ...
                            70.3445,
                            69.156
                        ],
                        "id": 591
                    },
                    {
                        "cdt_device.name": "<DEVICE NAME>",
                        "name": "int.3",
                        "InOctets": {
                            "vals": [
                                1204222976,
                                1162312704,
                                1141559296,
                                1186676992,
                                ...
                                1385965824,
                                1365224192
                            ]
                        },
                        "InMB": [
                            1148.44,
                            1108.47,
                            1088.68,
                            1131.7,
                            ...
                            1321.76,
                            1301.98
                        ],
                        "id": 592
                    }
                ]
            }
        ]
    },
    "links": []
}

[top]




Formula Example: Ping Latency Gauge using a Case Statement

Request: /api/v2.1/cdt_device/?fields=name,ping_rtt,status&timefilter=range = now -30m to now&formats=avg&status_formula=CASE WHEN {ping_rtt:avg} < 10 THEN 'Green' WHEN {ping_rtt:avg} < 50 THEN 'Amber' WHEN {ping_rtt:avg} IS NULL THEN 'Unknown' ELSE 'Red' END

The request:

  • Defines a named field, status
  • Provides a case statement to populate that field: status_formula=CASE WHEN {ping_rtt:avg} < 10 THEN 'Green' WHEN {ping_rtt:avg} < 50 THEN 'Amber' WHEN {ping_rtt:avg} IS NULL THEN 'Unknown' ELSE 'Red' END
  • Must include any field referenced within the formula as well as any required data format, in this case {ping_rtt:avg}

Response:


{
    "version": "2.1",
    "revision": "13",
    "info": "The Statseeker RESTful API",
    "data": {
        "success": true,
        "errmsg": "ok",
        "time": 1597793987,
        "objects": [
            {
                "type": "cdt_device",
                "sequence": 360,
                "status": {
                    "success": true,
                    "errcode": 0
                },
                "data_total": 226,
                "data": [
                    {
                        "name": "NewYork-ups1",
                        "ping_rtt": {
                            "avg": 35.4
                        },
                        "status": "Amber",
                        "id": 338
                    },
                    {
                        "name": "NewYork-ups2",
                        "ping_rtt": {
                            "avg": 41.7333
                        },
                        "status": "Amber",
                        "id": 339
                    },
                    {
                        "name": "NewYork-swt2",
                        "ping_rtt": {
                            "avg": 52.6
                        },
                        "status": "Red",
                        "id": 347
                    },
					
                    ...
					...
					
					
                    {

                        "name": "Phoenix-swt1",
                        "ping_rtt": {
                            "avg": 41.6667
                        },
                        "status": "Amber",
                        "id": 387
                    }
                ]
            }
        ]
    },
    "links": []
}

[top]




Formula Example: Nested Formulas

Request: /api/v2.1/cdt_device/?fields=name,sysLocation,ping_rtt,status,prettyPing,prettyStatus&timefilter=range = now -30m to now&formats=avg&status_formula=CASE WHEN {ping_rtt:avg} < 10 THEN 'Green' WHEN {ping_rtt:avg} < 50 THEN 'Amber' WHEN {ping_rtt:avg} IS NULL THEN 'Unknown' ELSE 'Red' END&prettyPing_formula={ping_rtt:avg} || ' ms'&prettyStatus_formula={status} || ' (' || {prettyPing} || ')'&sysLocation_filter=IS("LosAngeles")

The request:

  • Defines a multiple named fields: status, prettyPing, prettyStatus
  • Defines formula to populate each:
    • status_formula=CASE WHEN {ping_rtt:avg} < 10 THEN 'Green' WHEN {ping_rtt:avg} < 50 THEN 'Amber' WHEN {ping_rtt:avg} IS NULL THEN 'Unknown' ELSE 'Red' END
    • prettyPing_formula={ping_rtt:avg} || ‘ ms’
    • prettyStatus_formula={status} || ‘ (‘ || {prettyPing} || ‘)’ – requires output from other formula fields
  • Must include any field referenced within the formula as well as any required data format, in this case {ping_rtt:avg}, {status} and {prettyPing}

Response:


{
    "version": "2.1",
    "revision": "13",
    "info": "The Statseeker RESTful API",
    "data": {
        "success": true,
        "errmsg": "ok",
        "time": 1597796468,
        "objects": [
            {
                "type": "cdt_device",
                "sequence": 360,
                "status": {
                    "success": true,
                    "errcode": 0
                },
                "data_total": 12,
                "data": [
                    {
                        "name": "LosAngeles-ups1",
                        "sysLocation": "LosAngeles",
                        "ping_rtt": {
                            "avg": 38.1333
                        },
                        "status": "Amber",
                        "prettyPing": "38.1333 ms",
                        "prettyStatus": "Amber (38.1333 ms)",
                        "id": 350
                    },
                    {
                        "name": "LosAngeles-ups2",
                        "sysLocation": "LosAngeles",
                        "ping_rtt": {
                            "avg": 32.4
                        },
                        "status": "Amber",
                        "prettyPing": "32.4 ms",
                        "prettyStatus": "Amber (32.4 ms)",
                        "id": 351
                    },
					...
					...
                    {
                        "name": "LosAngeles-rtr",
                        "sysLocation": "LosAngeles",
                        "ping_rtt": {
                            "avg": 43.8
                        },
                        "status": "Amber",
                        "prettyPing": "43.8 ms",
                        "prettyStatus": "Amber (43.8 ms)",
                        "id": 361
                    }
                ]
            }
        ]
    },
    "links": []
}

[top]

API Endpoints

The API allows you to add, retrieve and modify data relating to a large number of data-object/resource types. These resources are related to either the network hardware that your Statseeker server is monitoring, or various configuration settings (user accounts, thresholds and alerts, automated processes, network configuration details, etc.) applied to your Statseeker server.

Most API’s feature a static selection of object-focused endpoints, which are available to everyone. The Statseeker API is a little different, while many resources are available through the default installation, some are available as modular Custom Data Type (CDT) packages which can be added and removed as needed. This feature, combined with the fact that Statseeker doesn’t force users to upgrade their installation, means that the resource-level endpoints available on one Statseeker deployment may be quite different to those available on another.

Note:

The remainder of this section provides a basic overview of the types of endpoints available through the API, and the types of requests that can be made against those endpoint types. These endpoint types, and their available actions, are universal across deployments, but the data objects available at the resource level may differ between Statseeker installations.

Endpoint URL Description
Statseeker Endpoints
Authentication /ss-auth

https://your.statseeker.server/ss-auth

The authentication endpoint authenticates users and generates authentication tokens
API Endpoints
API Root /api/{api_version}/

https://your.statseeker.server/api/v2.1/

The root endpoint for the API
Resource /api/{api_version}/{resource}

https://your.statseeker.server/api/v2.1/user

The resource endpoint, for running get, add, update, and delete queries on specific resources. This is the endpoint type used to retrieve your timeseries and configuration data from your Statseeker server, see:

  • Resource Endpoint for details on the parameters that can be passed when interacting with resource level endpoints
  • Resource Reference for details on the various resource level endpoints including fields, methods and requirements
Describe /api/{api_version}/{resource}/describe

https://your.statseeker.server/api/v2.1/user/describe

The describe endpoint, for running describe queries on specific resources
Execute /api/{api_version}/{resource}/execute

https://your.statseeker.server/api/v2.1/discover/execute

The execute endpoint, for running execute queries on specific resources
ID /api/{api_version}/{resource}/{id}

https://your.statseeker.server/api/v2.1/user/1234

The ID endpoint, for running get, update, and delete queries on a specific entry within a resource
Field /api/{api_version}/{resource}/{id}/{field}

https://your.statseeker.server/api/v2.1/user/1234/name

The field endpoint, for running update queries on a field of a specific entry within a resource

[top]

Authentication Endpoint (/ss-auth))

This endpoint is used to authenticate users and generate authentication tokens for use in API requests. For details on this endpoint and examples of authenticating users see Authentication.

[top]

Root Endpoint (/api/v2.1)

The base (root) endpoint for the API is:

  • https://your.statseeker.server/api/[api_version]

, where:

  • https://your.statseeker.server is the URL of your Statseeker server
  • [api_version] is one the accepted version references, see below
Version References Message
v1 Version 1 of the API, this is a legacy, read-only api, and is not covered in this document
v2, v2.0 Version 2 of the API, the initial implementation of the Statseeker RESTful Read-Write API
v2.1 Version 2.1 of the API, added access to all timeseries data (device\interface metrics) collected by Statseeker
latest Currently, Version 2.1 of the API

[top]

Versioning

The base endpoint of /api/latest will return the latest version of the API installed on your Statseeker server. This version is identified in every response from the API in the version key.

Example Response:


{
    "info": "The Statseeker RESTful API",
    "version": "2.1",
    "data": {response_data},
    "revision": "13"
}

You can access an API version, other than the latest, by altering your base URL to specify the version you want to use.

E.g./api/v1 will return API v1, or /api/v2 will return API v2.0.

There may be multiple revisions released for a given API version, these revisions address issues relating to bugs within the API itself, and issues relating to Custom Data Type (CDT) packages that the API can interact with.

For more information on the relationship between the API and CDT packages, see API Endpoints.

[top]

GET

A GET request to the root endpoint will return all resource types available to your Statseeker installation.

The parameters that may be passed when sending a GET request.

Parameters Type/Valid Values Description
links
  • only – only return the links object, no data object
  • none – only return the data object, no links object
  • html – return html links. If the response is being displayed in a browser then the links may be clicked to send a GET request for the associated object/field.
  • htmlonly – only return html links, no data object
Modifies how the links contained within the response object are presented
indent positive integer Number of characters to indent when formatting code blocks for display

[top]

Resource Endpoint (/api/v2.1/{resource})

The resource level endpoints are where you will spend the vast majority if your time when interacting with the Statseeker API. In order to retrieve reporting data on your network infrastructure you will be routinely sending GET requests to resource level endpoints. These requests will contain:

  • The resource level endpoint to specify what type of data objects you are reporting on (device, interface, CPU, memory, etc.)
  • filters to specify which of these data objects to return
  • fields and formats parameters to specify what data is to be returned (average outbound traffic, maximum aggregated CPU load, etc.)
  • timefilters to specify the reporting period

The Statseeker RESTful API contains many resources allowing you to access and interact with both the data that Statseeker has collected on your network, and the configuration options used by Statseeker to collect and manage that data. Some of the object types available at the resource level endpoint include:

  • Users (/api/v2.1/user)
  • Groups (/api/v2.1/group)
  • Devices (/api/v2.1/cdt_device)
  • Interfaces (/api/v2.1/cdt_port)

As of Statseeker v5.5.4, the API contained over 240 resource level endpoints, all aspects of these endpoints are detailed in the Resource Reference. This list can be expanded upon by adding CDT packages and modules for new device types. For a complete list of all resources available, from *your* Statseeker installation:

  • Send a GET request to the root endpoint
  • Refer to the Resource Reference for details on each of those resources

[top]

Get

Send a GET request to a resource endpoint to return details on instances of the specified resource.

The parameters that may be passed when sending a GET request.

Parameters Type/Valid Values Description
fields A comma separated list of field names
E.g.fields=id,name,location
The list of fields that will be returned in the response. This parameter will be ignored if fields_adv is also specified.
fields_adv A JSON string detailing the fields to be returned
E.g.fields_adv={“Device Name”:{“field”:”name”}, “IP”:{“field”:”ipaddress”},”Location”:{“field”:”sysLocation”},”SNMP Polling”:{“field”:”snmp_poll”,”filter”:{“query”:”=%27off%27″}}}
The list of fields that will be returned in the response
filter An SQL filter string
E.g.“SNMP Polling”:{“field”:”snmp_poll”,”filter”:{“query”:”=%27off%27″}}
A filter to be applied to the response data inside of fields_adv
groups A comma separated list of group names or group IDs A list of groups to be used to filter the response data, only data associated with members of the specified groups will be returned
grouping_mode
  • AND
  • OR
The mode to use when processing multiple group parameters
group_by A comma separated array of fields names, or a formula that will be applied to field values

  • Each field name must be enclosed in braces {}
  • The data format must be specified for every timeseries or event field

Example Arrays:

  • group_by={cdt_device.name},{ifSpeed}
  • group_by={cdt_device.name},{ifSpeed},{RxUtil}&RxUtil_aggregation_format=max

Example Formula:

group_by={TxUtil:avg}+{RxUtil:max}

Use when you want to aggregate data across multiple entities, such as total traffic across multiple interfaces.

Requires that:

  • Field names be enclosed in braces {}
  • The fields to be grouped by are specified in the fields parameter of the request
  • The field format be provided for any timeseries/event fields specified in the group_by parameter
    • When using an array, the {field}_aggregation_format parameter is used to specify the format to be applied
    • When using a formula, the format is appended to the field name and the field name and format are separated by a colon :
interval positive integer
E.g.interval=300
The polling interval to be applied to all timeseries metrics specified in the fields parameter. When not specified, the default polling interval of 60 seconds is used.
limit positive integer
E.g.limit=100
The number of items to return per ‘page’ of the response, see Pagination for details. The API will automatically paginate response data with a default limit=50.
offset positive integer
E.g.offset=100
The number of result items to skip, see Pagination for details. The API will automatically paginate response data with a default offset={limit}.
sortmode string

  • novals_after – null values are always sorted after valid values, only valid values are affected by the {field}_sort parameter
  • novals_before – null values are always sorted before valid values, only valid values are affected by the {field}_sort parameter
  • novals_large – null values are counted as larger than any other value and will be sorted to the end of results if the field is sorted ascending, and sorted to the start if sorted descending
  • novals_small – null values are counted as smaller than any other value and will be sorted to the start of results if a field is sorted ascending, and sorted to end if sorted descending
Specify how the response should handle null values.
Default =novals_small, this setting is used in all instances where sortmode is not set.

timefmt string
The syntax for specifying the time format matches that used by STRFTIME.

E.g. timefmt=%A %H:%M:%S (%y-%m-%d)
will return a timestamp in the format
Wednesday 15:44:48 (19-07-17)
The format in which to return timestamps when value_time is set
value_time One of:

  • start – The timestamp at which the event began
  • mid – the midpoint of the start and end timestamps
  • end – the timestamp at which the event finished
  • all – an array of start, mid and end
  • none – do not return a timestamp

E.g.value_time=all

Optionally return a timestamp for returned timeseries data points. Timestamps are return in epoch time unless timefmt is also specified.


When the fields parameter has been specified, the following additional parameters may be used.

Parameters Type/Valid Values Description
{field}_field string A user defined variable name followed by a valid field name for the resource.

E.g.yesterday_RxUtil

See Named Fields for more information and examples.
{field}_formats Comma separated list, see Timeseries Data: Stats, Formats & Options The formats to request from the API for the given field, required for timeseries data fields

Note: a global formats key (formats=) may also be used to apply the same values to all timeseries metrics specified in fields
{field}_formula string Specify and SQL-style formula to be used to populate the field, see Field Formulas for details.

Syntax for referencing other fields within the formula:

  • Configuration field: {field}, e.g. {ping_poll}
  • Timeseries/Event fields must also define a data format: {field:format}, e.g. {ping_rtt:current}
{field}_filter string The filter to apply to the given field. These filters can be either SQL-style filters or extended RegEx filters, for details and examples of applying filters see:

{field}_filter_format string The format to use for the filter, required for timeseries data fields
{field}_interval integer The polling interval (in seconds) to use for the specified field. When used, a field-specific timefilter for the specified field must also also be used.

Note: when not specified, the default interval of 60 seconds is used. A global interval key (interval=) may also be used to apply the same values to all timeseries metrics specified in fields
{field}_link string Required when:

  • A resource has multiple links to the same resource type – one of these will be the default link and the others not
  • You want to refence a non-default linked resource

See Multiple Links to the same resource for details.

{field}_object string Required when:

  • A resource has multiple links to the same resource type – one of these will be the default link and the others not
  • You want to refence a non-default linked resource

See Multiple Links to the same resource for details.

{field}_timefilter string The timefilter to use for the given field, required for timeseries data fields.

Note: a global timefilter key (timefilter=) may also be used to apply the same values to all timeseries metrics specified in fields
{field}_tz string An alternate timezone to use for the {field}_timefilter.

All timefilters use the Statseeker server’s timezone unless an override is specified by supplying {field}_tz.

Note: a global timezone key (tz=) may also be used to apply the same values to all timeseries metrics specified in fields
{field}_sort Comma separated list List specifying the sort hierarchy and direction, in the following format:{field}_sort={rank}{direction} and for Timeseries data:{field}_sort={rank}{direction}{format}
E.g.name_sort=1,asc
RxUtil_sort=1,desc,avg
{field}_stats Comma separated list, see Timeseries Data: Stats, Formats & Options The stats to use for the given field
{field}_aggregation_format One of:

Format Description
95th The 95th percentile of the values
avg The average of the values
cat Concatenation of the values. Not supported for non-scalar formats such as vals
count The number of rows that match, and have a non-null value
count_all The number of rows that match, including NULL values
first The first matching value
last The last matching value
list Concatenate values as per the cat format, but return the output as comma separated list of values
max The maximum value
median The median value
min The minimum value
stddev The standard deviation value
sum The sum of all values
total Similar to sum, but returns 0 instead of NULL if there are only NULL values in the data being aggregated
The aggregation format to use for the specified field

Note: using aggregation, the following rules apply:

  • When the aggregated data is a number – ignore all null values and return the aggregated value required based on non-null values only
  • When the aggregated data is NOT a number – attempt to convert all values to a number prior to aggregation. Any instance of null will result in the aggregated value being returned as null.

[top]


GET Example: Retrieving Details on Multiple Devices

Return specified details on all devices in a specified group, the fields I am returning are:

  • name
  • id
  • community
  • ipaddress
  • snmp_version
cURLPythonRubyResponse

curl \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer myToken" \
	-X GET \
	"https://your.statseeker.server/api/v2.1/cdt_device/?fields=name,id,community,ipaddress,snmp_version&groups=<GROUP NAME>&indent=3"


# import requests for handling connection and encoding
import requests
import json
def do_request(server, query, user, pword):
    # Run auth request
    headers = { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' }
    url = f'https://{server}/ss-auth'
    authData = {'user': user, 'password': pword}
    resp = requests.post(url, headers=headers, data=authData, verify=False)
    headers['Content-Type'] = 'application/json'
    url = f'https://{server}/{query}'
    print(f'Get Auth Token: {resp.status_code}')
    if resp.status_code == 200:    
        # Authentication successful, Statseeker >= v5.5.4
        myToken = resp.json()
        headers['Authorization'] = f'Bearer {myToken["access_token"]}'
        resp = requests.get(url, headers=headers, verify=False)
    if resp.status_code == 401:
        print(f'Token auth failed: {resp.status_code}, trying basic auth')
        # Either Authentication was unsuccessful (Statseeker <  v5.5.4), or API set to use basic auth
        # Try basic auth
        resp = requests.get(url, headers=headers, auth=(user, pword), verify=False)
    return resp

# Statseeker Server IP
server = 'your.statseeker.server'
# credentials
user = 'api_user'
pword = 'user_password'
# API root endpoint
query = 'api/v2.1'
# specify target endpoint
query += '/cdt_device'
# specify fields to be returned
query += '/?fields=name,id,community,ipaddress,snmp_version'
# Filters
query += '&groups=<GROUP NAME>'
# optional response formatting
query += '&indent=3&links=none'
# Run the request
resp = do_request(server, query, user, pword)
if resp.status_code == 200:
    print(resp.status_code)
    print(resp.json())
else:
    print(f'Error: {resp.status_code} {resp.reason}')


# install with: $ gem install rest-client
require "rest_client"
require "json"
require "base64"

def try_basic(server, query, user, pword)
	headers = {
		:content_type => "json"
	}
	url = "https://" + server + "/" + query
	headers["Authorization"] = "Basic " + Base64.encode64("#{user}:#{pword}")
	return RestClient::Request.execute(
		:method => :get,
		:url => url,
		:headers => headers,
		:verify_ssl => false
	)
end

def do_request(server, query, user, pword)
    # Run auth request
    headers = {
        :content_type => "application/x-www-form-urlencoded"
    }
    url = "https://" + server + "/ss-auth"
    authData = {
       :user => user,
       :password => pword
    }
    begin
        resp = RestClient::Request.execute(
            :method => :post,
            :url => url,
            :headers => headers,
            :verify_ssl => false,
            :payload => authData
        )
    rescue RestClient::Unauthorized
		# bad credentials or Statseeker not v5.5.4 or higher
        try_basic(server, query, user, pword)
    else
        # Authentication successful. Statseeker at least v5.5.4
        headers = {
			:content_type => "application/json"
		}	
        url = "https://" + server + "/" + query
        rdata = JSON.parse(resp)
        headers["Authorization"] = "Bearer " + rdata.fetch("access_token")
        return RestClient::Request.execute(
            :method => :get,
            :url => url,
            :headers => headers,
            :verify_ssl => false,
        )
    end
	rescue RestClient::Unauthorized
		# Statseeker = v5.5.4 but configured for basic auth
        try_basic(server, query, user, pword)
end
# Statseeker Server IP
$server = 'your.statseeker.server'
# api user credentials
$user = 'api_user'
$pword = 'user_password'
# api root endpoint
$query = 'api/v2.1'
# specify target endpoint
$query += "/cdt_device"
# specify fields to be returned
$query += '?fields=name,id,community,ipaddress,snmp_version'
# Filters
$query += '&groups=<GROUP NAME>'
# optional response formatting
$query += '&indent=3&links=none'
# Run the request
resp = do_request($server, $query, $user, $pword)
puts "#{resp.to_str}"


{
  "info": "The Statseeker RESTful API",
  "data": {
    "objects": [
      {
        "status": {
          "errcode": 0,
          "success": true
        },
        "data": [
          {
            "snmp_version": 2,
            "ipaddress": "10.116.4.172",
            "name": "Brisbane-Server1",
            "community": "public",
            "id": 551
          },
          {
            "snmp_version": 2,
            "ipaddress": "10.116.4.180",
            "name": "Brisbane-Server2",
            "community": "public",
            "id": 552
          },
          {
            "snmp_version": 2,
            "ipaddress": "10.116.4.186",
            "name": "Sydney-Server1",
            "community": "public",
            "id": 555
          },
          {
            "snmp_version": 2,
            "ipaddress": "10.116.4.187",
            "name": "Sydney-Server2",
            "community": "public",
            "id": 556
          },
          {
            "snmp_version": 2,
            "ipaddress": "10.116.4.194",
            "name": "Melbourne-Server1",
            "community": "public",
            "id": 557
          }
        ],
        "type": "cdt_device",
        "data_total": 5
      }
    ],
    "errmsg": "ok",
    "success": true,
    "time": 1496188135
  },
  "links": [],
  "api_version": "2.1"
}
[top]

POST

Use the POST request to create new instances of the specified resource. The data object included in a POST request must be a json string with a single data key. Some resource types will require additional keys within the data object, use the /describe endpoint to view the requirements for a given resource.

[top]

Example: Creating Multiple Groups

RequestPythonRubyResponse

curl \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer myToken" \
	-X POST \
	"https://your.statseeker.server/api/v2.1/group/?indent=3" \
	-d '{"data":[{"name":"<GROUP NAME 1>"},{"name":"<GROUP NAME 2>"}]}' 



# import requests for handling connection and encoding
import requests
import json
def do_request(server, query, user, pword, reqData):
    # Run auth request
    headers = { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' }
    url = f'https://{server}/ss-auth'
    authData = {'user': user, 'password': pword}
    resp = requests.post(url, headers=headers, data=authData, verify=False)
    headers['Content-Type'] = 'application/json'
    url = f'https://{server}/{query}'
    print(f'Get Auth Token: {resp.status_code}')
    if resp.status_code == 200:    
        # Authentication successful, Statseeker >= v5.5.4
        myToken = resp.json()
        headers['Authorization'] = f'Bearer {myToken["access_token"]}'
        resp = requests.post(url, headers=headers, data=reqData, verify=False)
    if resp.status_code == 401:
        print(f'Token auth failed: {resp.status_code}, trying basic auth')
        # Either Authentication was unsuccessful (Statseeker <  v5.5.4), or API set to use basic auth
        # Try basic auth
        resp = requests.post(url, headers=headers, auth=(user, pword), data=reqData, verify=False)
    return resp

# Statseeker Server IP
server = 'your.statseeker.server'
# credentials
user = 'api_user'
pword = 'user_password'
# API root endpoint
query = 'api/v2.1'
# specify target endpoint
query += '/group'
# optional response formatting
query += '/?indent=3&links=none'
# data
reqData = json.dumps({"data":[{"name":"<GROUP NAME 1>"},{"name":"<GROUP NAME 2>"}]})
# Run the request
resp = do_request(server, query, user, pword, reqData)
if resp.status_code == 200:
    print(resp.status_code)
    print(resp.json())
else:
    print(f'Error: {resp.status_code} {resp.reason}')


# install with: $ gem install rest-client
require "rest_client"
require "json"
require "base64"

def try_basic(server, query, user, pword, reqData)
	headers = {
		:content_type => "application/json"
	}
	url = "https://" + server + "/" + query
	headers["Authorization"] = "Basic " + Base64.encode64("#{user}:#{pword}")
	return RestClient::Request.execute(
		:method => :post,
		:url => url,
		:headers => headers,
		:verify_ssl => false,
		:payload => reqData
	)
end

def do_request(server, query, user, pword, reqData)
    # Run auth request
    headers = {
        :content_type => "application/x-www-form-urlencoded"
    }
    url = "https://" + server + "/ss-auth"
    authData = {
       :user => user,
       :password => pword
    }
    begin
        resp = RestClient::Request.execute(
            :method => :post,
            :url => url,
            :headers => headers,
            :verify_ssl => false,
            :payload => authData
        )
    rescue RestClient::Unauthorized
		# bad credentials or Statseeker not v5.5.4 or higher
        try_basic(server, query, user, pword, reqData)
    else		
        # Authentication successful. Statseeker at least v5.5.4
		headers = {
			:content_type => "application/json"
		}	
        url = "https://" + server + "/" + query
        rdata = JSON.parse(resp)
        headers["Authorization"] = "Bearer " + rdata.fetch("access_token")
        return RestClient::Request.execute(
			:method => :post,
			:url => url,
			:headers => headers,
			:verify_ssl => false,
			:payload => reqData
        )
    end
	rescue RestClient::Unauthorized
		# Statseeker = v5.5.4 but configured for basic auth
        try_basic(server, query, user, pword, reqData)
end
# Statseeker Server IP
$server = 'your.statseeker.server'
# api user credentials
$user = 'api_user'
$pword = 'user_password'
# api root endpoint
$query = 'api/v2.1'
# specify target endpoint
$query += '/group'
# optional response formatting
$query += '/?indent=3&links=none'
# configure payload
$reqData = '{"data":[{"name":"<GROUP NAME 1>"},{"name":"<GROUP NAME 2>"}]}'
# Run the request
resp = do_request($server, $query, $user, $pword, $reqData)
puts "#{resp.to_str}"

{
  "info": "The Statseeker RESTful API",
  "data": {
    "objects": [
      {
        "status": {
          "errcode": 0,
          "success": true
        },
        "data": [
          {
            "name": "<GROUP NAME 1>",
            "id": 46458
          },
          {
            "name": "<GROUP NAME 2>",
            "id": 46459
          }
        ],
        "type": "group",
        "data_total": 2
      }
    ],
    "errmsg": "ok",
    "success": true,
    "time": 1496190459
  },
  "api_version": "2.1"
}
[top]

PUT Requests

Use the PUT request to update an existing instance of the specified resource. The data object included must be a json string with both a fields key (to identify the resource/s to be updated) and a data key (to specify the data to be updated). Some resource types will require additional keys within the data object, use the /describe endpoint to view the requirements for a given resource.

When sending a PUT request, the data object (request payload) requires both a data key and a fields key.

Example: Updating a Group Name
cURLPythonRubyResponse

curl \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer myToken" \
	-X PUT \
	"https://your.statseeker.server/api/v2.1/group/?indent=3" \
	-d '{"fields":{"name":{"field":"name","filter":{"query":"=\u0027<OLD GROUP NAME>\u0027"}}},"data":[{"name":"<NEW GROUP NAME>"}]}'

# import requests for handling connection and encoding
import requests
import json
def do_request(server, query, user, pword, reqData):
    # Run auth request
    headers = { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' }
    url = f'https://{server}/ss-auth'
    authData = {'user': user, 'password': pword}
    resp = requests.post(url, headers=headers, data=authData, verify=False)
    headers['Content-Type'] = 'application/json'
    url = f'https://{server}/{query}'
    print(f'Get Auth Token: {resp.status_code}')
    if resp.status_code == 200:    
        # Authentication successful, Statseeker >= v5.5.4
        myToken = resp.json()
        headers['Authorization'] = f'Bearer {myToken["access_token"]}'
        resp = requests.put(url, headers=headers, data=reqData, verify=False)
    if resp.status_code == 401:
        print(f'Token auth failed: {resp.status_code}, trying basic auth')
        # Either Authentication was unsuccessful (Statseeker <  v5.5.4), or API set to use basic auth
        # Try basic auth
        resp = requests.put(url, headers=headers, auth=(user, pword), data=reqData, verify=False)
    return resp

# Statseeker Server IP
server = 'your.statseeker.server'
# credentials
user = 'api_user'
pword = 'user_password'
# API root endpoint
query = 'api/v2.1'
# specify target endpoint
query += ''
# optional response formatting
query += '/?indent=3&links=none'
# data
reqData = json.dumps({"fields":{"name":{"field":"name","filter":{"query":"='<OLD GROUP NAME>'"}}},"data":[{"name":"<NEW GROUP NAME>"}]})
# Run the request
resp = do_request(server, query, user, pword, reqData)
if resp.status_code == 200:
    print(resp.status_code)
    print(resp.json())
else:
    print(f'Error: {resp.status_code} {resp.reason}')

# install with: $ gem install rest-client
require "rest_client"
require "json"
require "base64"

def try_basic(server, query, user, pword, reqData)
	headers = {
		:content_type => "application/json"
	}
	url = "https://" + server + "/" + query
	headers["Authorization"] = "Basic " + Base64.encode64("#{user}:#{pword}")
	return RestClient::Request.execute(
		:method => :put,
		:url => url,
		:headers => headers,
		:verify_ssl => false,
		:payload => reqData
	)
end

def do_request(server, query, user, pword, reqData)
    # Run auth request
    headers = {
        :content_type => "application/x-www-form-urlencoded"
    }
    url = "https://" + server + "/ss-auth"
    authData = {
       :user => user,
       :password => pword
    }
    begin
        resp = RestClient::Request.execute(
            :method => :post,
            :url => url,
            :headers => headers,
            :verify_ssl => false,
            :payload => authData
        )
    rescue RestClient::Unauthorized
		# bad credentials or Statseeker not v5.5.4 or higher
        try_basic(server, query, user, pword, reqData)
    else		
        # Authentication successful. Statseeker at least v5.5.4
		headers = {
		:content_type => "application/json"
		}	
        url = "https://" + server + "/" + query
        rdata = JSON.parse(resp)
        headers["Authorization"] = "Bearer " + rdata.fetch("access_token")
        return RestClient::Request.execute(
			:method => :put,
			:url => url,
			:headers => headers,
			:verify_ssl => false,
			:payload => reqData
        )
    end
	rescue RestClient::Unauthorized
		# Statseeker = v5.5.4 but configured for basic auth
        try_basic(server, query, user, pword, reqData)
end
# Statseeker Server IP
$server = 'your.statseeker.server'
# api user credentials
$user = 'api_user'
$pword = 'user_password'
# api root endpoint
$query = 'api/v2.1'
# specify target endpoint
$query += '/group'
# optional response formatting
$query += '/?indent=3&links=none'
# configure payload
$reqData = '{"fields":{"name":{"field":"name","filter":{"query":"=\'<OLD GROUP NAME>\'"}}},"data":[{"name":"<NEW GROUP NAME>"}]}'
# Run the request
resp = do_request($server, $query, $user, $pword, $reqData)
puts "#{resp.to_str}"


{
  "info": "The Statseeker RESTful API",
  "data": {
    "errmsg": "ok",
    "success": true,
    "time": 1496190511
  },
  "api_version": "2.1"
}

[top]

DELETE

Use the DELETE request to delete an existing instance of the specified resource. The data object included must be a json string with a single fields key. Some resource types will require additional keys within the data object, use the /describe endpoint to view the requirements for a given resource.

[top]

Example: Deleting Multiple Groups

We will be deleting all groups with a name matching a specified filter string.

cURLPythonRubyResponse

curl \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer myToken" \
	-X DELETE \
	"https://your.statseeker.server/api/v2.1/group/?indent=3" \ 
	-d '{"fields":{"name":{"field":"name","filter":{"query":"LIKE \u0027<FILTER STRING>\u0027"}}}}'


# import requests for handling connection and encoding
import requests
import json
def do_request(server, query, user, pword, reqData):
    # Run auth request
    headers = { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' }
    url = f'https://{server}/ss-auth'
    authData = {'user': user, 'password': pword}
    resp = requests.post(url, headers=headers, data=authData, verify=False)
    headers['Content-Type'] = 'application/json'
    url = f'https://{server}/{query}'
    print(f'Get Auth Token: {resp.status_code}')
    if resp.status_code == 200:    
        # Authentication successful, Statseeker >= v5.5.4
        myToken = resp.json()
        headers['Authorization'] = f'Bearer {myToken["access_token"]}'
        resp = requests.delete(url, headers=headers, data=reqData, verify=False)
    if resp.status_code == 401:
        print(f'Token auth failed: {resp.status_code}, trying basic auth')
        # Either Authentication was unsuccessful (Statseeker <  v5.5.4), or API set to use basic auth
        # Try basic auth
        resp = requests.delete(url, headers=headers, auth=(user, pword), data=reqData, verify=False)
    return resp

# Statseeker Server IP
server = 'your.statseeker.server'
# credentials
user = 'api_user'
pword = 'user_password'
# API root endpoint
query = 'api/v2.1'
# specify target endpoint
query += '/group'
# optional response formatting
query += '/?indent=3&links=none'
# data
reqData = json.dumps({"fields":{"name":{"field":"name","filter":{"query":"LIKE '<FILTER STRING>'"}}}})
# Run the request
resp = do_request(server, query, user, pword, reqData)
if resp.status_code == 200:
    print(resp.status_code)
    print(resp.json())
else:
    print(f'Error: {resp.status_code} {resp.reason}')

# install with: $ gem install rest-client
require "rest_client"
require "json"
require "base64"

def try_basic(server, query, user, pword, reqData)
	headers = {
		:content_type => "application/json"
	}
	url = "https://" + server + "/" + query
	headers["Authorization"] = "Basic " + Base64.encode64("#{user}:#{pword}")
	return RestClient::Request.execute(
		:method => :delete,
		:url => url,
		:headers => headers,
		:verify_ssl => false,
		:payload => reqData
	)
end

def do_request(server, query, user, pword, reqData)
    # Run auth request
    headers = {
        :content_type => "application/x-www-form-urlencoded"
    }
    url = "https://" + server + "/ss-auth"
    authData = {
       :user => user,
       :password => pword
    }
    begin
        resp = RestClient::Request.execute(
            :method => :post,
            :url => url,
            :headers => headers,
            :verify_ssl => false,
            :payload => authData
        )
    rescue RestClient::Unauthorized
		# bad credentials or Statseeker not v5.5.4 or higher
        try_basic(server, query, user, pword, reqData)
    else		
        # Authentication successful. Statseeker at least v5.5.4
		headers = {
		:content_type => "application/json"
		}	
        url = "https://" + server + "/" + query
        rdata = JSON.parse(resp)
        headers["Authorization"] = "Bearer " + rdata.fetch("access_token")
        return RestClient::Request.execute(
			:method => :delete,
			:url => url,
			:headers => headers,
			:verify_ssl => false,
			:payload => reqData
        )
    end
	rescue RestClient::Unauthorized
		# Statseeker = v5.5.4 but configured for basic auth
        try_basic(server, query, user, pword, reqData)
end
# Statseeker Server IP
$server = 'your.statseeker.server'
# api user credentials
$user = 'api_user'
$pword = 'user_password'
# api root endpoint
$query = 'api/v2.1'
# specify target endpoint
$query += '/group'
# optional response formatting
$query += '/?indent=3&links=none'
# configure payload
$reqData = '{"fields":{"name":{"field":"name","filter":{"query":"LIKE \'<FILTER STRING>\'"}}}}'
# Run the request
resp = do_request($server, $query, $user, $pword, $reqData)
puts "#{resp.to_str}"



{
   "version":"2.1",
   "revision":"11",
   "info":"The Statseeker RESTful API",
   "data":{
      "success":true,
      "errmsg":"ok",
      "time":1623638287
   }
}
[top]

The Describe Endpoint (/api/v2.1/{resource}/describe)

The /describe endpoint is particularly useful as it allows you to query a specified resource to return details on the resource.

The response from a GET request targeting the {resource}/describe endpoint will contain:

  • Resource name, title and description
  • All fields pertaining to the resource
  • All data formats that can be applied to each field
  • All request methods that can be applied to the resource
  • All fields and data that can be used with each request method
  • Details on all links between the selected resource and any other resources
  • Whether or not the resource allows the use of custom defined formula fields
  • An info block presenting data structure details such as resource inheritance relationships and data functionality options such as whether or not the resource can be grouped or reported on

The various HTTP request types are mapped to commands within the API.

HTTP Request Method API Command
GET get
POST add
PUT update
DELETE delete

The /describe endpoint can be applied to any resources returned from a GET request applied to the root endpoint.
I.e.https://your.statseeker.server/api/v2.1/ will return all resources available to the Statseeker installation, and any of these can have /describe applied to return details on the resource.

[top]

GET

The parameters that may be passed when sending a GET request.

Parameters Type/Valid Values Description
links
  • only – only return the links object, no data object
  • none – only return the data object, no links object
  • html – return html links. If the response is being displayed in a browser then the links may be clicked to send a GET request for the associated object/field.
  • htmlonly – only return html links, no data object
Modifies how the links contained within the response object are presented
indent positive integer Number of characters to indent when formatting code blocks for display

[top]

Example: Requesting a /describe on the User Resource
cURLPythonRubyResponse

curl \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer myToken" \
	-X GET \
	"https://your.statseeker.server1/api/v2.1/user/describe/?indent=3"


# import requests for handling connection and encoding
import requests
import json
def do_request(server, query, user, pword):
    # Run auth request
    headers = { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' }
    url = f'https://{server}/ss-auth'
    authData = {'user': user, 'password': pword}
    resp = requests.post(url, headers=headers, data=authData, verify=False)
    headers['Content-Type'] = 'application/json'
    url = f'https://{server}/{query}'
    print(f'Get Auth Token: {resp.status_code}')
    if resp.status_code == 200:    
        # Authentication successful, Statseeker >= v5.5.4
        myToken = resp.json()
        headers['Authorization'] = f'Bearer {myToken["access_token"]}'
        resp = requests.get(url, headers=headers, verify=False)
    if resp.status_code == 401:
        print(f'Token auth failed: {resp.status_code}, trying basic auth')
        # Either Authentication was unsuccessful (Statseeker <  v5.5.4), or API set to use basic auth
        # Try basic auth
        resp = requests.get(url, headers=headers, auth=(user, pword), verify=False)
    return resp

# Statseeker Server IP
server = 'your.statseeker.server'
# credentials
user = 'api_user'
pword = 'user_password'
# API root endpoint
query = 'api/v2.1'
# specify target endpoint
query += 'user/describe'
# optional response formatting
query += '/?indent=3&links=none'
# Run the request
resp = do_request(server, query, user, pword)
if resp.status_code == 200:
    print(resp.status_code)
    print(resp.json())
else:
    print(f'Error: {resp.status_code} {resp.reason}') 


# install with: $ gem install rest-client
require "rest_client"
require "json"
require "base64"

def try_basic(server, query, user, pword)
	headers = {
		:content_type => "json"
	}
	url = "https://" + server + "/" + query
	headers["Authorization"] = "Basic " + Base64.encode64("#{user}:#{pword}")
	return RestClient::Request.execute(
		:method => :get,
		:url => url,
		:headers => headers,
		:verify_ssl => false
	)
end

def do_request(server, query, user, pword)
    # Run auth request
    headers = {
        :content_type => "application/x-www-form-urlencoded"
    }
    url = "https://" + server + "/ss-auth"
    authData = {
       :user => user,
       :password => pword
    }
    begin
        resp = RestClient::Request.execute(
            :method => :post,
            :url => url,
            :headers => headers,
            :verify_ssl => false,
            :payload => authData
        )
    rescue RestClient::Unauthorized
		# bad credentials or Statseeker not v5.5.4 or higher
        try_basic(server, query, user, pword)
    else
        # Authentication successful. Statseeker at least v5.5.4
        headers = {
			:content_type => "application/json"
		}	
        url = "https://" + server + "/" + query
        rdata = JSON.parse(resp)
        headers["Authorization"] = "Bearer " + rdata.fetch("access_token")
        return RestClient::Request.execute(
            :method => :get,
            :url => url,
            :headers => headers,
            :verify_ssl => false,
        )
    end
	rescue RestClient::Unauthorized
		# Statseeker = v5.5.4 but configured for basic auth
        try_basic(server, query, user, pword)
end
# Statseeker Server IP
$server = 'your.statseeker.server'
# api user credentials
$user = 'api_user'
$pword = 'user_password'
# api root endpoint
$query = 'api/v2.1'
# specify target endpoint
$query += 'user/describe'
# optional response formatting
$query += '/?indent=3&links=none'
# Run the request
resp = do_request($server, $query, $user, $pword)
puts "#{resp.to_str}"

{
{
    "version": "2.1",
    "revision": "13",
    "info": "The Statseeker RESTful API",
    "data": {
        "success": true,
        "errmsg": "ok",
        "time": 1646798321,
        "objects": [
            {
                "title": "User",
                "type": "user",
                "description": "Statseeker Users",
                "commands": {
                    "describe": {
                        "valid_fields": null,
                        "valid_data": null
                    },
                    "add": {
                        "valid_data": {
                            "name": {
                                "required": true
                            },
                            "tz": {
                                "required": false
                            },
                            "top_n": {
                                "required": false
                            },
                            "email": {
                                "required": false
                            },
                            "reportRowSpacing": {
                                "required": false
                            },
                            "exportDateFormat": {
                                "required": false
                            },
                            "auth_ttl": {
                                "required": false
                            },
                            "api": {
                                "required": false
                            },
                            "auth": {
                                "required": false
                            },
                            "auth_refresh": {
                                "required": false
                            },
                            "password": {
                                "required": false
                            },
                            "is_admin": {
                                "required": false
                            }
                        },
                        "valid_fields": null
                    },
                    "update": {
                        "valid_fields": {
                            "auth": {
                                "required": false
                            },
                            "auth_refresh": {
                                "required": false
                            },
                            "id": {
                                "required": false
                            },
                            "is_admin": {
                                "required": false
                            },
                            "password": {
                                "required": false
                            },
                            "name": {
                                "required": false
                            },
                            "tz": {
                                "required": false
                            },
                            "top_n": {
                                "required": false
                            },
                            "email": {
                                "required": false
                            },
                            "reportRowSpacing": {
                                "required": false
                            },
                            "api": {
                                "required": false
                            },
                            "auth_ttl": {
                                "required": false
                            },
                            "exportDateFormat": {
                                "required": false
                            }
                        },
                        "valid_data": {
                            "reportRowSpacing": {
                                "required": false
                            },
                            "api": {
                                "required": false
                            },
                            "exportDateFormat": {
                                "required": false
                            },
                            "auth_ttl": {
                                "required": false
                            },
                            "tz": {
                                "required": false
                            },
                            "top_n": {
                                "required": false
                            },
                            "email": {
                                "required": false
                            },
                            "is_admin": {
                                "required": false
                            },
                            "password": {
                                "required": false
                            },
                            "auth_refresh": {
                                "required": false
                            },
                            "auth": {
                                "required": false
                            }
                        }
                    },
                    "get": {
                        "valid_fields": {
                            "email": {
                                "required": false
                            },
                            "tz": {
                                "required": false
                            },
                            "top_n": {
                                "required": false
                            },
                            "name": {
                                "required": false
                            },
                            "api": {
                                "required": false
                            },
                            "auth_ttl": {
                                "required": false
                            },
                            "exportDateFormat": {
                                "required": false
                            },
                            "reportRowSpacing": {
                                "required": false
                            },
                            "auth_refresh": {
                                "required": false
                            },
                            "auth": {
                                "required": false
                            },
                            "is_admin": {
                                "required": false
                            },
                            "password": {
                                "required": false
                            },
                            "id": {
                                "required": false
                            }
                        },
                        "valid_data": null
                    },
                    "delete": {
                        "valid_fields": {
                            "email": {
                                "required": false
                            },
                            "name": {
                                "required": false
                            },
                            "tz": {
                                "required": false
                            },
                            "top_n": {
                                "required": false
                            },
                            "exportDateFormat": {
                                "required": false
                            },
                            "auth_ttl": {
                                "required": false
                            },
                            "api": {
                                "required": false
                            },
                            "reportRowSpacing": {
                                "required": false
                            },
                            "auth": {
                                "required": false
                            },
                            "auth_refresh": {
                                "required": false
                            },
                            "id": {
                                "required": false
                            },
                            "password": {
                                "required": false
                            },
                            "is_admin": {
                                "required": false
                            }
                        },
                        "valid_data": null
                    }
                },
                "fields": {
                    "email": {
                        "title": "Email",
                        "description": "User email address",
                        "datatype": "string"
                    },
                    "name": {
                        "description": "User name",
                        "datatype": "string",
                        "title": "Name"
                    },
                    "tz": {
                        "description": "User time zone",
                        "datatype": "string",
                        "title": "Time Zone"
                    },
                    "top_n": {
                        "description": "The default Top N number for the user",
                        "datatype": "integer",
                        "title": "Top N"
                    },
                    "exportDateFormat": {
                        "description": "User specified Date Format",
                        "datatype": "string",
                        "title": "Date Format"
                    },
                    "auth_ttl": {
                        "description": "The TTL for authentication tokens (in seconds)",
                        "datatype": "integer",
                        "title": "Authentication TTL"
                    },
                    "api": {
                        "description": "User API access permission",
                        "datatype": "string",
                        "title": "API Access"
                    },
                    "reportRowSpacing": {
                        "datatype": "string",
                        "description": "The report row spacing preference for the user",
                        "title": "Report Row Spacing"
                    },
                    "auth": {
                        "datatype": "string",
                        "description": "User authentication method",
                        "title": "Authentication method"
                    },
                    "auth_refresh": {
                        "description": "The time allowed after a token has expired that it will be refreshed (in seconds)",
                        "datatype": "integer",
                        "title": "Authentication Refresh"
                    },
                    "id": {
                        "title": "ID",
                        "description": "User Identifier",
                        "datatype": "integer"
                    },
                    "password": {
                        "title": "Password",
                        "description": "User password",
                        "datatype": "string"
                    },
                    "is_admin": {
                        "title": "Is Admin",
                        "datatype": "integer",
                        "description": "Whether the user has admin access"
                    }
                },
                "info": {
                    "allow_grouping": 1
                },
                "allow_formula_fields": true,
                "links": {},
                "global_field_options": {
                    "aggregation_format": {
                        "description": "Aggregation formats to apply when group_by option is provided",
                        "values": {
                            "first": {
                                "title": "First",
                                "description": "First value in the group (default)"
                            },
                            "last": {
                                "title": "Last",
                                "description": "Last value in the group"
                            },
                            "avg": {
                                "title": "Average",
                                "description": "Average of the values in the group"
                            },
                            "count": {
                                "title": "Count",
                                "description": "Number on non-null values in the group"
                            },
                            "count_all": {
                                "title": "Count (include NULL)",
                                "description": "Number of values in the group (including null values)"
                            },
                            "count_unique": {
                                "title": "Unique count",
                                "description": "Number of unique non-null values in the group"
                            },
                            "count_unique_all": {
                                "title": "Unique count (include NULL)",
                                "description": "Number of unique values in the group (including null values)"
                            },
                            "cat": {
                                "title": "Concatenate",
                                "description": "Concatenation of the values in the group"
                            },
                            "list": {
                                "title": "List",
                                "description": "Comma separated concatenation of the values in the group"
                            },
                            "list_unique": {
                                "title": "Unique List",
                                "description": "Comma separated concatenation of the unique values in the group"
                            },
                            "min": {
                                "title": "Minimum",
                                "description": "Minimum of the values in the group"
                            },
                            "max": {
                                "title": "Maximum",
                                "description": "Maximum of the values in the group"
                            },
                            "sum": {
                                "title": "Sum",
                                "description": "Sum of all values in the group (null if no valid values)"
                            },
                            "total": {
                                "title": "Total",
                                "description": "Sum of all values in the group (0 if no valid values)"
                            },
                            "median": {
                                "title": "Median",
                                "description": "Median of the values in the group"
                            },
                            "95th": {
                                "title": "95th percentile",
                                "description": "95th percentile of the values in the group"
                            },
                            "stddev": {
                                "title": "Standard deviation",
                                "description": "Standard deviation of the values in the group"
                            }
                        }
                    }
                }
            }
        ]
    },
    "links": [
        {
            "link": "/api/v2.1/user/describe",
            "rel": "self"
        },
        {
            "link": "/api/v2.1",
            "rel": "base"
        },
        {
            "link": "/api/v2.1/user",
            "rel": "collection"
        }
    ]
}
[top]

Example: Requesting a /describe on the Device Resource (cdt_device)
cURLPythonRubyResponse

curl \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer myToken" \
	-X GET \
	"https://your.statseeker.server1/api/v2.1/cdt_device/describe/?indent=3"


# import requests for handling connection and encoding
import requests
import json
def do_request(server, query, user, pword):
    # Run auth request
    headers = { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' }
    url = f'https://{server}/ss-auth'
    authData = {'user': user, 'password': pword}
    resp = requests.post(url, headers=headers, data=authData, verify=False)
    headers['Content-Type'] = 'application/json'
    url = f'https://{server}/{query}'
    print(f'Get Auth Token: {resp.status_code}')
    if resp.status_code == 200:    
        # Authentication successful, Statseeker >= v5.5.4
        myToken = resp.json()
        headers['Authorization'] = f'Bearer {myToken["access_token"]}'
        resp = requests.get(url, headers=headers, verify=False)
    if resp.status_code == 401:
        print(f'Token auth failed: {resp.status_code}, trying basic auth')
        # Either Authentication was unsuccessful (Statseeker <  v5.5.4), or API set to use basic auth
        # Try basic auth
        resp = requests.get(url, headers=headers, auth=(user, pword), verify=False)
    return resp

# Statseeker Server IP
server = 'your.statseeker.server'
# credentials
user = 'api_user'
pword = 'user_password'
# API root endpoint
query = 'api/v2.1'
# specify target endpoint
query += 'cdt_device/describe'
# optional response formatting
query += '/?indent=3&links=none'
# Run the request
resp = do_request(server, query, user, pword)
if resp.status_code == 200:
    print(resp.status_code)
    print(resp.json())
else:
    print(f'Error: {resp.status_code} {resp.reason}') 


# install with: $ gem install rest-client
require "rest_client"
require "json"
require "base64"

def try_basic(server, query, user, pword)
	headers = {
		:content_type => "json"
	}
	url = "https://" + server + "/" + query
	headers["Authorization"] = "Basic " + Base64.encode64("#{user}:#{pword}")
	return RestClient::Request.execute(
		:method => :get,
		:url => url,
		:headers => headers,
		:verify_ssl => false
	)
end

def do_request(server, query, user, pword)
    # Run auth request
    headers = {
        :content_type => "application/x-www-form-urlencoded"
    }
    url = "https://" + server + "/ss-auth"
    authData = {
       :user => user,
       :password => pword
    }
    begin
        resp = RestClient::Request.execute(
            :method => :post,
            :url => url,
            :headers => headers,
            :verify_ssl => false,
            :payload => authData
        )
    rescue RestClient::Unauthorized
		# bad credentials or Statseeker not v5.5.4 or higher
        try_basic(server, query, user, pword)
    else
        # Authentication successful. Statseeker at least v5.5.4
        headers = {
			:content_type => "application/json"
		}	
        url = "https://" + server + "/" + query
        rdata = JSON.parse(resp)
        headers["Authorization"] = "Bearer " + rdata.fetch("access_token")
        return RestClient::Request.execute(
            :method => :get,
            :url => url,
            :headers => headers,
            :verify_ssl => false,
        )
    end
	rescue RestClient::Unauthorized
		# Statseeker = v5.5.4 but configured for basic auth
        try_basic(server, query, user, pword)
end
# Statseeker Server IP
$server = 'your.statseeker.server'
# api user credentials
$user = 'api_user'
$pword = 'user_password'
# api root endpoint
$query = 'api/v2.1'
# specify target endpoint
$query += 'cdt_device/describe'
# optional response formatting
$query += '/?indent=3&links=none'
# Run the request
resp = do_request($server, $query, $user, $pword)
puts "#{resp.to_str}"

{
{
    "version": "2.1",
    "revision": "13",
    "info": "The Statseeker RESTful API",
    "data": {
        "success": true,
        "errmsg": "ok",
        "time": 1646798484,
        "objects": [
            {
                "type": "cdt_device",
                "title": "Device",
                "description": "The custom data entities for the device table",
                "fields": {
                    "id": {
                        "title": "ID",
                        "description": "The entity identifier",
                        "datatype": "integer"
                    },
                    "name": {
                        "title": "Name",
                        "description": "The entity name",
                        "datatype": "string"
                    },
                    "deviceid": {
                        "title": "Device ID",
                        "description": "The ID of the parent device",
                        "datatype": "integer"
                    },
                    "idx": {
                        "title": "Index",
                        "description": "The base SNMP index for this entity",
                        "datatype": "string"
                    },
                    "table": {
                        "title": "Table",
                        "description": "The table to which the entity belongs",
                        "datatype": "string"
                    },
                    "poll": {
                        "title": "Poll State",
                        "description": "The poll state of the entity",
                        "datatype": "string"
                    },
                    "auth_method": {
                        "title": "SNMPv3 Authentication Method",
                        "description": "Authentication method for SNMPv3 devices",
                        "polltype": "cfg",
                        "datatype": "string"
                    },
                    "auth_pass": {
                        "title": "SNMPv3 Authentication Password",
                        "description": "Authentication password for SNMPv3 devices",
                        "polltype": "cfg",
                        "datatype": "string"
                    },
                    "auth_user": {
                        "title": "SNMPv3 Authentication Username",
                        "description": "Authentication user for SNMPv3 devices",
                        "polltype": "cfg",
                        "datatype": "string"
                    },
                    "community": {
                        "title": "Community",
                        "description": "The community string status of the device",
                        "polltype": "cfg",
                        "datatype": "string"
                    },
                    "context": {
                        "title": "SNMPv3 Context",
                        "description": "Context for SNMPv3 devices",
                        "polltype": "cfg",
                        "datatype": "string"
                    },
                    "custom_data_details": {
                        "title": "Custom Data Details",
                        "description": "A JSON string object indicating which custom entities have been found during a discovery",
                        "polltype": "cfg",
                        "datatype": "string"
                    },
                    "discover_getNext": {
                        "title": "Use GetNext",
                        "description": "Walk this device using SNMP getNext instead of getBulk",
                        "polltype": "cfg",
                        "datatype": "string"
                    },
                    "discover_minimal": {
                        "title": "Use Minimal Walk",
                        "description": "Walk this device using a minimal set of oids",
                        "polltype": "cfg",
                        "datatype": "string"
                    },
                    "discover_snmpv1": {
                        "title": "Use SNMPv1",
                        "description": "Walk this device using SNMPv1",
                        "polltype": "cfg",
                        "datatype": "string"
                    },
                    "hostname": {
                        "title": "Hostname",
                        "description": "The hostname of the device",
                        "polltype": "cfg",
                        "datatype": "string"
                    },
                    "ipaddress": {
                        "title": "IP Address",
                        "description": "The IP address of the device",
                        "polltype": "cfg",
                        "datatype": "string"
                    },
                    "latitude": {
                        "title": "Latitude",
                        "description": "The user defined latitude of the device's location",
                        "polltype": "cfg",
                        "datatype": "float"
                    },
                    "longitude": {
                        "title": "Longitude",
                        "description": "The user defined longitude of the device's location",
                        "polltype": "cfg",
                        "datatype": "float"
                    },
                    "manual_name": {
                        "title": "User Defined Name",
                        "description": "The user defined name of the device",
                        "polltype": "cfg",
                        "datatype": "string"
                    },
                    "memorySize": {
                        "title": "Memory Size",
                        "description": "The amount of physical read-write memory contained by the entity",
                        "polltype": "cfg",
                        "units": "bytes",
                        "symbol": "B",
                        "datatype": "integer"
                    },
                    "mis": {
                        "title": "MAC/IP/Switch Collection State",
                        "description": "Include this device in the MIS report calculations",
                        "polltype": "cfg",
                        "datatype": "string"
                    },
                    "ping_dup": {
                        "title": "Ping Duplicate",
                        "description": "Number of duplicate ping responses received",
                        "polltype": "tsc",
                        "interval": 3600,
                        "datatype": "integer",
                        "options": {
                            "value_time": {
                                "description": "The timestamp for a timeseries event",
                                "values": {
                                    "none": "Do not return a timestamp",
                                    "mid": "The midpoint of the start and end timestamps",
                                    "end": "The timestamp at which the event finished",
                                    "start": "The timestamp at which the event began",
                                    "all": "An array of start, mid and end"
                                }
                            },
                            "formats": {
                                "description": "The valid data formats",
                                "values": {
                                    "median": {
                                        "description": "Median of the data",
                                        "title": "Median"
                                    },
                                    "trendline_daily_change": {
                                        "title": "Trendline daily change",
                                        "description": "Slope of the trendline (units/day)"
                                    },
                                    "anomaly_metric": {
                                        "description": "Metric from -100 to 100 indicating whether requested timeseries values are unusually large or small",
                                        "title": "Anomaly metric"
                                    },
                                    "trendline_upr": {
                                        "datatype": "array",
                                        "description": "Trendline confidence interval values (upper)",
                                        "title": "Trendline upper confidence interval"
                                    },
                                    "count": {
                                        "description": "Number of non-null data points",
                                        "title": "Count"
                                    },
                                    "baseline": {
                                        "title": "Baseline",
                                        "description": "List of expected baseline values calculated from historical data. Corresponds to 0% anomaly metric.",
                                        "datatype": "array"
                                    },
                                    "forecast_min": {
                                        "title": "Forecast minimum",
                                        "description": "Lower boundary of feasible forecast value range"
                                    },
                                    "trendline_strength": {
                                        "title": "Trendline strength",
                                        "description": "Coefficient of determination (R-squared) of the trendline"
                                    },
                                    "forecast_boundary_time": {
                                        "datatype": "time",
                                        "description": "Time forecast exceeds feasible value range if before end of timefilter range",
                                        "title": "Forecast boundary time"
                                    },
                                    "95th": {
                                        "description": "95th percentile of the data",
                                        "title": "95th percentile"
                                    },
                                    "forecast_daily_change": {
                                        "description": "The average daily change of forecast values",
                                        "title": "Forecast daily change"
                                    },
                                    "min": {
                                        "description": "Minimum data value",
                                        "title": "Minimum"
                                    },
                                    "forecast_max": {
                                        "title": "Forecast maximum",
                                        "description": "Upper boundary of feasible forecast value range"
                                    },
                                    "current": {
                                        "title": "Current",
                                        "description": "The current value"
                                    },
                                    "baseline_percent_compare": {
                                        "description": "Percentage difference between data average and expected baseline calculated from historical data",
                                        "title": "Baseline Percent Comparison"
                                    },
                                    "start_tz_offset": {
                                        "datatype": "integer",
                                        "title": "Start TZ offset",
                                        "description": "The timezone offset of the first data point"
                                    },
                                    "forecast_vals": {
                                        "datatype": "array",
                                        "title": "Forecast values",
                                        "description": "An array of forecast values with periodic deviations at peak and offpeak times"
                                    },
                                    "max": {
                                        "title": "Maximum",
                                        "description": "Maximum data value"
                                    },
                                    "trendline_lwr": {
                                        "datatype": "array",
                                        "description": "Trendline confidence interval values (lower)",
                                        "title": "Trendline lower confidence interval"
                                    },
                                    "anomaly_strength": {
                                        "description": "Metric from 0 to 100 indicating whether requested timeseries values are extreme or unusual",
                                        "title": "Anomaly strength"
                                    },
                                    "forecast_predict_offpeak": {
                                        "description": "Long term prediction value calculated from historical data at offpeak times",
                                        "title": "Forecast prediction offpeak"
                                    },
                                    "start_time": {
                                        "datatype": "time",
                                        "title": "Start time",
                                        "description": "Time of the first data point"
                                    },
                                    "stddev": {
                                        "title": "Standard deviation",
                                        "description": "Standard deviation of the data"
                                    },
                                    "baseline_lwr": {
                                        "description": "List of baseline lower confidence interval values. Corresponds to -95% anomaly metric.",
                                        "title": "Baseline Lower Bound",
                                        "datatype": "array"
                                    },
                                    "trendline_percent_change": {
                                        "description": "Trendline change scaled by the average of data over requested time filter",
                                        "title": "Trendline percent change"
                                    },
                                    "vals": {
                                        "description": "Timeseries data values",
                                        "title": "Values",
                                        "datatype": "array"
                                    },
                                    "cvals": {
                                        "datatype": "array",
                                        "description": "Cumulative data values",
                                        "title": "Cumulative Values"
                                    },
                                    "last": {
                                        "title": "Last",
                                        "description": "The last value in the data"
                                    },
                                    "trendline_start": {
                                        "title": "Trendline Start",
                                        "description": "Value of the first trendline data point"
                                    },
                                    "forecast_fit": {
                                        "datatype": "array",
                                        "title": "Forecast fit",
                                        "description": "An array of forecast values without periodic deviations at peak and offpeak times"
                                    },
                                    "baseline_compare": {
                                        "description": "Difference between data average and expected baseline calculated from historical data",
                                        "title": "Baseline Comparison"
                                    },
                                    "first": {
                                        "title": "First",
                                        "description": "The first value in the data"
                                    },
                                    "percentile": {
                                        "title": "Percentile",
                                        "description": "Custom percentile of the data"
                                    },
                                    "trendline_predict": {
                                        "title": "Trendline Predict",
                                        "description": "Prediction value from the trendline"
                                    },
                                    "trendline_change": {
                                        "description": "Trendline change over the requested timefilter range",
                                        "title": "Trendline change"
                                    },
                                    "baseline_upr": {
                                        "title": "Baseline Upper Bound",
                                        "description": "List of baseline upper confidence interval values. Corresponds to 95% anomaly metric.",
                                        "datatype": "array"
                                    },
                                    "avg": {
                                        "title": "Average",
                                        "description": "Average of the data"
                                    },
                                    "baseline_avg": {
                                        "description": "Average of expected baseline values calculated from historical data. Corresponds to 0% anomaly metric.",
                                        "title": "Baseline Average"
                                    },
                                    "trendline_finish": {
                                        "title": "Trendline Finish",
                                        "description": "Value of the last trendline data point"
                                    },
                                    "total": {
                                        "description": "Sum of the data",
                                        "title": "Total"
                                    },
                                    "forecast_predict": {
                                        "description": "Long term prediction value calculated from historical data",
                                        "title": "Forecast prediction"
                                    },
                                    "forecast_predict_peak": {
                                        "description": "Long term prediction value calculated from historical data at peak times",
                                        "title": "Forecast prediction peak"
                                    },
                                    "trendline_fit": {
                                        "description": "Trendline data values",
                                        "title": "Trendline fit",
                                        "datatype": "array"
                                    }
                                }
                            },
                            "stats": {
                                "values": {
                                    "forecast": {
                                        "values": {
                                            "min": {
                                                "description": "Manually set lower boundary of feasible forecast value range",
                                                "valid_formats": [
                                                    "forecast_predict",
                                                    "forecast_predict_peak",
                                                    "forecast_predict_offpeak",
                                                    "forecast_min",
                                                    "forecast_max",
                                                    "forecast_boundary_time",
                                                    "forecast_daily_slope",
                                                    "forecast_fit",
                                                    "forecast_vals"
                                                ],
                                                "values": null,
                                                "title": "Minimum"
                                            },
                                            "data_range": {
                                                "title": "Baseline History",
                                                "default": "range = now - 180d to now",
                                                "valid_formats": [
                                                    "forecast_predict",
                                                    "forecast_predict_peak",
                                                    "forecast_predict_offpeak",
                                                    "forecast_min",
                                                    "forecast_max",
                                                    "forecast_boundary_time",
                                                    "forecast_daily_slope",
                                                    "forecast_fit",
                                                    "forecast_vals"
                                                ],
                                                "description": "Timefilter for the historical data range used to calculate forecasts. Default is last 180 days.",
                                                "values": null
                                            },
                                            "predict_time": {
                                                "values": null,
                                                "valid_formats": [
                                                    "forecast_predict",
                                                    "forecast_predict_peak",
                                                    "forecast_predict_offpeak"
                                                ],
                                                "description": "Time to use for the forecast_predict, forecast_predict_peak or forecast_predict_offpeak values (e.g. now + 10d)",
                                                "title": "Predict Time"
                                            },
                                            "max": {
                                                "valid_formats": [
                                                    "forecast_predict",
                                                    "forecast_predict_peak",
                                                    "forecast_predict_offpeak",
                                                    "forecast_min",
                                                    "forecast_max",
                                                    "forecast_boundary_time",
                                                    "forecast_daily_slope",
                                                    "forecast_fit",
                                                    "forecast_vals"
                                                ],
                                                "values": null,
                                                "description": "Manually set upper boundary of feasible forecast value range",
                                                "title": "Maximum"
                                            },
                                            "is_cumulative": {
                                                "valid_formats": [
                                                    "forecast_predict",
                                                    "forecast_predict_peak",
                                                    "forecast_predict_offpeak",
                                                    "forecast_min",
                                                    "forecast_max",
                                                    "forecast_boundary_time",
                                                    "forecast_daily_change",
                                                    "forecast_fit",
                                                    "forecast_vals"
                                                ],
                                                "values": [
                                                    true,
                                                    false
                                                ],
                                                "title": "Is Cumulative",
                                                "description": "whether to use cumulative forecasts",
                                                "default": false
                                            }
                                        },
                                        "description": "Forecast related input options"
                                    },
                                    "percentile": {
                                        "title": "Percentile",
                                        "values": null,
                                        "valid_formats": [
                                            "percentile"
                                        ],
                                        "description": "The value to use for the percentile format (between 0 and 100)"
                                    },
                                    "baseline": {
                                        "description": "Baseline and anomaly metric related input options",
                                        "values": {
                                            "percentile": {
                                                "description": "Baseline percentile to output",
                                                "valid_formats": [
                                                    "baseline_avg",
                                                    "baseline_compare",
                                                    "baseline_percent_compare",
                                                    "baseline"
                                                ],
                                                "default": 50,
                                                "values": null,
                                                "title": "Percentile"
                                            },
                                            "data_range": {
                                                "title": "Baseline History",
                                                "description": "Timefilter for the historical data range used to calculate baseline and anomaly metric. Default is last 180 days.",
                                                "valid_formats": [
                                                    "baseline_avg",
                                                    "baseline_compare",
                                                    "baseline_percent_compare",
                                                    "baseline",
                                                    "baseline_lwr",
                                                    "baseline_upr",
                                                    "anomaly_metric",
                                                    "anomaly_strength"
                                                ],
                                                "default": "range = now - 180d to now",
                                                "values": null
                                            },
                                            "lwr_percentile": {
                                                "title": "Lower Percentile",
                                                "description": "Baseline percentile to output for baseline lower bound",
                                                "valid_formats": [
                                                    "baseline_lwr"
                                                ],
                                                "default": 2.5,
                                                "values": null
                                            },
                                            "upr_percentile": {
                                                "valid_formats": [
                                                    "baseline_upr"
                                                ],
                                                "default": 97.5,
                                                "values": null,
                                                "description": "Baseline percentile to output for baseline upper bound",
                                                "title": "Upper Percentile"
                                            }
                                        }
                                    },
                                    "trendline": {
                                        "description": "Trendline related input options",
                                        "values": {
                                            "lwr_stddev": {
                                                "valid_formats": [
                                                    "trendline_lwr"
                                                ],
                                                "description": "The number of standard deviations to use for the trendline_lwr format",
                                                "values": null,
                                                "title": "Lower Standard Deviation"
                                            },
                                            "upr_stddev": {
                                                "title": "Upper Standard Deviation",
                                                "valid_formats": [
                                                    "trendline_upr"
                                                ],
                                                "description": "The number of standard deviations to use for the trendline_upr format",
                                                "values": null
                                            },
                                            "is_cumulative": {
                                                "title": "Is Cumulative",
                                                "values": [
                                                    true,
                                                    false
                                                ],
                                                "valid_formats": [
                                                    "trendline_fit",
                                                    "trendline_predict"
                                                ],
                                                "description": "whether to use cumulative trendline"
                                            },
                                            "predict_time": {
                                                "title": "Predict Time",
                                                "valid_formats": [
                                                    "trendline_predict"
                                                ],
                                                "values": null,
                                                "description": "The time to use for the trendline_predict value"
                                            },
                                            "constrained": {
                                                "valid_formats": [
                                                    "trendline_start",
                                                    "trendline_finish",
                                                    "trendline_daily_change",
                                                    "trendline_change",
                                                    "trendline_percent_change",
                                                    "trendline_predict"
                                                ],
                                                "values": [
                                                    true,
                                                    false
                                                ],
                                                "default": true,
                                                "description": "Whether to use a constrained trendline",
                                                "title": "Constrained"
                                            }
                                        },
                                        "title": "Trendline"
                                    }
                                },
                                "description": "Additional input options for certain formats"
                            },
                            "timefmt": {
                                "description": "Format a timestamp into a human readable string. Format specifier is identical to strftime(3)",
                                "values": null
                            }
                        }
                    },
                    "ping_lost1": {
                        "title": "Ping Lost 1",
                        "description": "Number of times that a single ping request is lost",
                        "polltype": "tsc",
                        "interval": 3600,
                        "datatype": "integer",
                        "options": {
                            "value_time": {
                                "description": "The timestamp for a timeseries event",
                                "values": {
                                    "none": "Do not return a timestamp",
                                    "mid": "The midpoint of the start and end timestamps",
                                    "end": "The timestamp at which the event finished",
                                    "start": "The timestamp at which the event began",
                                    "all": "An array of start, mid and end"
                                }
                            },
                            "formats": {
                                "description": "The valid data formats",
                                "values": {
                                    "median": {
                                        "description": "Median of the data",
                                        "title": "Median"
                                    },
                                    "trendline_daily_change": {
                                        "title": "Trendline daily change",
                                        "description": "Slope of the trendline (units/day)"
                                    },
                                    "anomaly_metric": {
                                        "description": "Metric from -100 to 100 indicating whether requested timeseries values are unusually large or small",
                                        "title": "Anomaly metric"
                                    },
                                    "trendline_upr": {
                                        "datatype": "array",
                                        "description": "Trendline confidence interval values (upper)",
                                        "title": "Trendline upper confidence interval"
                                    },
                                    "count": {
                                        "description": "Number of non-null data points",
                                        "title": "Count"
                                    },
                                    "baseline": {
                                        "title": "Baseline",
                                        "description": "List of expected baseline values calculated from historical data. Corresponds to 0% anomaly metric.",
                                        "datatype": "array"
                                    },
                                    "forecast_min": {
                                        "title": "Forecast minimum",
                                        "description": "Lower boundary of feasible forecast value range"
                                    },
                                    "trendline_strength": {
                                        "title": "Trendline strength",
                                        "description": "Coefficient of determination (R-squared) of the trendline"
                                    },
                                    "forecast_boundary_time": {
                                        "datatype": "time",
                                        "description": "Time forecast exceeds feasible value range if before end of timefilter range",
                                        "title": "Forecast boundary time"
                                    },
                                    "95th": {
                                        "description": "95th percentile of the data",
                                        "title": "95th percentile"
                                    },
                                    "forecast_daily_change": {
                                        "description": "The average daily change of forecast values",
                                        "title": "Forecast daily change"
                                    },
                                    "min": {
                                        "description": "Minimum data value",
                                        "title": "Minimum"
                                    },
                                    "forecast_max": {
                                        "title": "Forecast maximum",
                                        "description": "Upper boundary of feasible forecast value range"
                                    },
                                    "current": {
                                        "title": "Current",
                                        "description": "The current value"
                                    },
                                    "baseline_percent_compare": {
                                        "description": "Percentage difference between data average and expected baseline calculated from historical data",
                                        "title": "Baseline Percent Comparison"
                                    },
                                    "start_tz_offset": {
                                        "datatype": "integer",
                                        "title": "Start TZ offset",
                                        "description": "The timezone offset of the first data point"
                                    },
                                    "forecast_vals": {
                                        "datatype": "array",
                                        "title": "Forecast values",
                                        "description": "An array of forecast values with periodic deviations at peak and offpeak times"
                                    },
                                    "max": {
                                        "title": "Maximum",
                                        "description": "Maximum data value"
                                    },
                                    "trendline_lwr": {
                                        "datatype": "array",
                                        "description": "Trendline confidence interval values (lower)",
                                        "title": "Trendline lower confidence interval"
                                    },
                                    "anomaly_strength": {
                                        "description": "Metric from 0 to 100 indicating whether requested timeseries values are extreme or unusual",
                                        "title": "Anomaly strength"
                                    },
                                    "forecast_predict_offpeak": {
                                        "description": "Long term prediction value calculated from historical data at offpeak times",
                                        "title": "Forecast prediction offpeak"
                                    },
                                    "start_time": {
                                        "datatype": "time",
                                        "title": "Start time",
                                        "description": "Time of the first data point"
                                    },
                                    "stddev": {
                                        "title": "Standard deviation",
                                        "description": "Standard deviation of the data"
                                    },
                                    "baseline_lwr": {
                                        "description": "List of baseline lower confidence interval values. Corresponds to -95% anomaly metric.",
                                        "title": "Baseline Lower Bound",
                                        "datatype": "array"
                                    },
                                    "trendline_percent_change": {
                                        "description": "Trendline change scaled by the average of data over requested time filter",
                                        "title": "Trendline percent change"
                                    },
                                    "vals": {
                                        "description": "Timeseries data values",
                                        "title": "Values",
                                        "datatype": "array"
                                    },
                                    "cvals": {
                                        "datatype": "array",
                                        "description": "Cumulative data values",
                                        "title": "Cumulative Values"
                                    },
                                    "last": {
                                        "title": "Last",
                                        "description": "The last value in the data"
                                    },
                                    "trendline_start": {
                                        "title": "Trendline Start",
                                        "description": "Value of the first trendline data point"
                                    },
                                    "forecast_fit": {
                                        "datatype": "array",
                                        "title": "Forecast fit",
                                        "description": "An array of forecast values without periodic deviations at peak and offpeak times"
                                    },
                                    "baseline_compare": {
                                        "description": "Difference between data average and expected baseline calculated from historical data",
                                        "title": "Baseline Comparison"
                                    },
                                    "first": {
                                        "title": "First",
                                        "description": "The first value in the data"
                                    },
                                    "percentile": {
                                        "title": "Percentile",
                                        "description": "Custom percentile of the data"
                                    },
                                    "trendline_predict": {
                                        "title": "Trendline Predict",
                                        "description": "Prediction value from the trendline"
                                    },
                                    "trendline_change": {
                                        "description": "Trendline change over the requested timefilter range",
                                        "title": "Trendline change"
                                    },
                                    "baseline_upr": {
                                        "title": "Baseline Upper Bound",
                                        "description": "List of baseline upper confidence interval values. Corresponds to 95% anomaly metric.",
                                        "datatype": "array"
                                    },
                                    "avg": {
                                        "title": "Average",
                                        "description": "Average of the data"
                                    },
                                    "baseline_avg": {
                                        "description": "Average of expected baseline values calculated from historical data. Corresponds to 0% anomaly metric.",
                                        "title": "Baseline Average"
                                    },
                                    "trendline_finish": {
                                        "title": "Trendline Finish",
                                        "description": "Value of the last trendline data point"
                                    },
                                    "total": {
                                        "description": "Sum of the data",
                                        "title": "Total"
                                    },
                                    "forecast_predict": {
                                        "description": "Long term prediction value calculated from historical data",
                                        "title": "Forecast prediction"
                                    },
                                    "forecast_predict_peak": {
                                        "description": "Long term prediction value calculated from historical data at peak times",
                                        "title": "Forecast prediction peak"
                                    },
                                    "trendline_fit": {
                                        "description": "Trendline data values",
                                        "title": "Trendline fit",
                                        "datatype": "array"
                                    }
                                }
                            },
                            "stats": {
                                "values": {
                                    "forecast": {
                                        "values": {
                                            "min": {
                                                "description": "Manually set lower boundary of feasible forecast value range",
                                                "valid_formats": [
                                                    "forecast_predict",
                                                    "forecast_predict_peak",
                                                    "forecast_predict_offpeak",
                                                    "forecast_min",
                                                    "forecast_max",
                                                    "forecast_boundary_time",
                                                    "forecast_daily_slope",
                                                    "forecast_fit",
                                                    "forecast_vals"
                                                ],
                                                "values": null,
                                                "title": "Minimum"
                                            },
                                            "data_range": {
                                                "title": "Baseline History",
                                                "default": "range = now - 180d to now",
                                                "valid_formats": [
                                                    "forecast_predict",
                                                    "forecast_predict_peak",
                                                    "forecast_predict_offpeak",
                                                    "forecast_min",
                                                    "forecast_max",
                                                    "forecast_boundary_time",
                                                    "forecast_daily_slope",
                                                    "forecast_fit",
                                                    "forecast_vals"
                                                ],
                                                "description": "Timefilter for the historical data range used to calculate forecasts. Default is last 180 days.",
                                                "values": null
                                            },
                                            "predict_time": {
                                                "values": null,
                                                "valid_formats": [
                                                    "forecast_predict",
                                                    "forecast_predict_peak",
                                                    "forecast_predict_offpeak"
                                                ],
                                                "description": "Time to use for the forecast_predict, forecast_predict_peak or forecast_predict_offpeak values (e.g. now + 10d)",
                                                "title": "Predict Time"
                                            },
                                            "max": {
                                                "valid_formats": [
                                                    "forecast_predict",
                                                    "forecast_predict_peak",
                                                    "forecast_predict_offpeak",
                                                    "forecast_min",
                                                    "forecast_max",
                                                    "forecast_boundary_time",
                                                    "forecast_daily_slope",
                                                    "forecast_fit",
                                                    "forecast_vals"
                                                ],
                                                "values": null,
                                                "description": "Manually set upper boundary of feasible forecast value range",
                                                "title": "Maximum"
                                            },
                                            "is_cumulative": {
                                                "valid_formats": [
                                                    "forecast_predict",
                                                    "forecast_predict_peak",
                                                    "forecast_predict_offpeak",
                                                    "forecast_min",
                                                    "forecast_max",
                                                    "forecast_boundary_time",
                                                    "forecast_daily_change",
                                                    "forecast_fit",
                                                    "forecast_vals"
                                                ],
                                                "values": [
                                                    true,
                                                    false
                                                ],
                                                "title": "Is Cumulative",
                                                "description": "whether to use cumulative forecasts",
                                                "default": false
                                            }
                                        },
                                        "description": "Forecast related input options"
                                    },
                                    "percentile": {
                                        "title": "Percentile",
                                        "values": null,
                                        "valid_formats": [
                                            "percentile"
                                        ],
                                        "description": "The value to use for the percentile format (between 0 and 100)"
                                    },
                                    "baseline": {
                                        "description": "Baseline and anomaly metric related input options",
                                        "values": {
                                            "percentile": {
                                                "description": "Baseline percentile to output",
                                                "valid_formats": [
                                                    "baseline_avg",
                                                    "baseline_compare",
                                                    "baseline_percent_compare",
                                                    "baseline"
                                                ],
                                                "default": 50,
                                                "values": null,
                                                "title": "Percentile"
                                            },
                                            "data_range": {
                                                "title": "Baseline History",
                                                "description": "Timefilter for the historical data range used to calculate baseline and anomaly metric. Default is last 180 days.",
                                                "valid_formats": [
                                                    "baseline_avg",
                                                    "baseline_compare",
                                                    "baseline_percent_compare",
                                                    "baseline",
                                                    "baseline_lwr",
                                                    "baseline_upr",
                                                    "anomaly_metric",
                                                    "anomaly_strength"
                                                ],
                                                "default": "range = now - 180d to now",
                                                "values": null
                                            },
                                            "lwr_percentile": {
                                                "title": "Lower Percentile",
                                                "description": "Baseline percentile to output for baseline lower bound",
                                                "valid_formats": [
                                                    "baseline_lwr"
                                                ],
                                                "default": 2.5,
                                                "values": null
                                            },
                                            "upr_percentile": {
                                                "valid_formats": [
                                                    "baseline_upr"
                                                ],
                                                "default": 97.5,
                                                "values": null,
                                                "description": "Baseline percentile to output for baseline upper bound",
                                                "title": "Upper Percentile"
                                            }
                                        }
                                    },
                                    "trendline": {
                                        "description": "Trendline related input options",
                                        "values": {
                                            "lwr_stddev": {
                                                "valid_formats": [
                                                    "trendline_lwr"
                                                ],
                                                "description": "The number of standard deviations to use for the trendline_lwr format",
                                                "values": null,
                                                "title": "Lower Standard Deviation"
                                            },
                                            "upr_stddev": {
                                                "title": "Upper Standard Deviation",
                                                "valid_formats": [
                                                    "trendline_upr"
                                                ],
                                                "description": "The number of standard deviations to use for the trendline_upr format",
                                                "values": null
                                            },
                                            "is_cumulative": {
                                                "title": "Is Cumulative",
                                                "values": [
                                                    true,
                                                    false
                                                ],
                                                "valid_formats": [
                                                    "trendline_fit",
                                                    "trendline_predict"
                                                ],
                                                "description": "whether to use cumulative trendline"
                                            },
                                            "predict_time": {
                                                "title": "Predict Time",
                                                "valid_formats": [
                                                    "trendline_predict"
                                                ],
                                                "values": null,
                                                "description": "The time to use for the trendline_predict value"
                                            },
                                            "constrained": {
                                                "valid_formats": [
                                                    "trendline_start",
                                                    "trendline_finish",
                                                    "trendline_daily_change",
                                                    "trendline_change",
                                                    "trendline_percent_change",
                                                    "trendline_predict"
                                                ],
                                                "values": [
                                                    true,
                                                    false
                                                ],
                                                "default": true,
                                                "description": "Whether to use a constrained trendline",
                                                "title": "Constrained"
                                            }
                                        },
                                        "title": "Trendline"
                                    }
                                },
                                "description": "Additional input options for certain formats"
                            },
                            "timefmt": {
                                "description": "Format a timestamp into a human readable string. Format specifier is identical to strftime(3)",
                                "values": null
                            }
                        }
                    },
                    "ping_lost2": {
                        "title": "Ping Lost 2",
                        "description": "Number of times that two ping requests in a row have been lost",
                        "polltype": "tsc",
                        "interval": 3600,
                        "datatype": "integer",
                        "options": {
                            "value_time": {
                                "description": "The timestamp for a timeseries event",
                                "values": {
                                    "none": "Do not return a timestamp",
                                    "mid": "The midpoint of the start and end timestamps",
                                    "end": "The timestamp at which the event finished",
                                    "start": "The timestamp at which the event began",
                                    "all": "An array of start, mid and end"
                                }
                            },
                            "formats": {
                                "description": "The valid data formats",
                                "values": {
                                    "median": {
                                        "description": "Median of the data",
                                        "title": "Median"
                                    },
                                    "trendline_daily_change": {
                                        "title": "Trendline daily change",
                                        "description": "Slope of the trendline (units/day)"
                                    },
                                    "anomaly_metric": {
                                        "description": "Metric from -100 to 100 indicating whether requested timeseries values are unusually large or small",
                                        "title": "Anomaly metric"
                                    },
                                    "trendline_upr": {
                                        "datatype": "array",
                                        "description": "Trendline confidence interval values (upper)",
                                        "title": "Trendline upper confidence interval"
                                    },
                                    "count": {
                                        "description": "Number of non-null data points",
                                        "title": "Count"
                                    },
                                    "baseline": {
                                        "title": "Baseline",
                                        "description": "List of expected baseline values calculated from historical data. Corresponds to 0% anomaly metric.",
                                        "datatype": "array"
                                    },
                                    "forecast_min": {
                                        "title": "Forecast minimum",
                                        "description": "Lower boundary of feasible forecast value range"
                                    },
                                    "trendline_strength": {
                                        "title": "Trendline strength",
                                        "description": "Coefficient of determination (R-squared) of the trendline"
                                    },
                                    "forecast_boundary_time": {
                                        "datatype": "time",
                                        "description": "Time forecast exceeds feasible value range if before end of timefilter range",
                                        "title": "Forecast boundary time"
                                    },
                                    "95th": {
                                        "description": "95th percentile of the data",
                                        "title": "95th percentile"
                                    },
                                    "forecast_daily_change": {
                                        "description": "The average daily change of forecast values",
                                        "title": "Forecast daily change"
                                    },
                                    "min": {
                                        "description": "Minimum data value",
                                        "title": "Minimum"
                                    },
                                    "forecast_max": {
                                        "title": "Forecast maximum",
                                        "description": "Upper boundary of feasible forecast value range"
                                    },
                                    "current": {
                                        "title": "Current",
                                        "description": "The current value"
                                    },
                                    "baseline_percent_compare": {
                                        "description": "Percentage difference between data average and expected baseline calculated from historical data",
                                        "title": "Baseline Percent Comparison"
                                    },
                                    "start_tz_offset": {
                                        "datatype": "integer",
                                        "title": "Start TZ offset",
                                        "description": "The timezone offset of the first data point"
                                    },
                                    "forecast_vals": {
                                        "datatype": "array",
                                        "title": "Forecast values",
                                        "description": "An array of forecast values with periodic deviations at peak and offpeak times"
                                    },
                                    "max": {
                                        "title": "Maximum",
                                        "description": "Maximum data value"
                                    },
                                    "trendline_lwr": {
                                        "datatype": "array",
                                        "description": "Trendline confidence interval values (lower)",
                                        "title": "Trendline lower confidence interval"
                                    },
                                    "anomaly_strength": {
                                        "description": "Metric from 0 to 100 indicating whether requested timeseries values are extreme or unusual",
                                        "title": "Anomaly strength"
                                    },
                                    "forecast_predict_offpeak": {
                                        "description": "Long term prediction value calculated from historical data at offpeak times",
                                        "title": "Forecast prediction offpeak"
                                    },
                                    "start_time": {
                                        "datatype": "time",
                                        "title": "Start time",
                                        "description": "Time of the first data point"
                                    },
                                    "stddev": {
                                        "title": "Standard deviation",
                                        "description": "Standard deviation of the data"
                                    },
                                    "baseline_lwr": {
                                        "description": "List of baseline lower confidence interval values. Corresponds to -95% anomaly metric.",
                                        "title": "Baseline Lower Bound",
                                        "datatype": "array"
                                    },
                                    "trendline_percent_change": {
                                        "description": "Trendline change scaled by the average of data over requested time filter",
                                        "title": "Trendline percent change"
                                    },
                                    "vals": {
                                        "description": "Timeseries data values",
                                        "title": "Values",
                                        "datatype": "array"
                                    },
                                    "cvals": {
                                        "datatype": "array",
                                        "description": "Cumulative data values",
                                        "title": "Cumulative Values"
                                    },
                                    "last": {
                                        "title": "Last",
                                        "description": "The last value in the data"
                                    },
                                    "trendline_start": {
                                        "title": "Trendline Start",
                                        "description": "Value of the first trendline data point"
                                    },
                                    "forecast_fit": {
                                        "datatype": "array",
                                        "title": "Forecast fit",
                                        "description": "An array of forecast values without periodic deviations at peak and offpeak times"
                                    },
                                    "baseline_compare": {
                                        "description": "Difference between data average and expected baseline calculated from historical data",
                                        "title": "Baseline Comparison"
                                    },
                                    "first": {
                                        "title": "First",
                                        "description": "The first value in the data"
                                    },
                                    "percentile": {
                                        "title": "Percentile",
                                        "description": "Custom percentile of the data"
                                    },
                                    "trendline_predict": {
                                        "title": "Trendline Predict",
                                        "description": "Prediction value from the trendline"
                                    },
                                    "trendline_change": {
                                        "description": "Trendline change over the requested timefilter range",
                                        "title": "Trendline change"
                                    },
                                    "baseline_upr": {
                                        "title": "Baseline Upper Bound",
                                        "description": "List of baseline upper confidence interval values. Corresponds to 95% anomaly metric.",
                                        "datatype": "array"
                                    },
                                    "avg": {
                                        "title": "Average",
                                        "description": "Average of the data"
                                    },
                                    "baseline_avg": {
                                        "description": "Average of expected baseline values calculated from historical data. Corresponds to 0% anomaly metric.",
                                        "title": "Baseline Average"
                                    },
                                    "trendline_finish": {
                                        "title": "Trendline Finish",
                                        "description": "Value of the last trendline data point"
                                    },
                                    "total": {
                                        "description": "Sum of the data",
                                        "title": "Total"
                                    },
                                    "forecast_predict": {
                                        "description": "Long term prediction value calculated from historical data",
                                        "title": "Forecast prediction"
                                    },
                                    "forecast_predict_peak": {
                                        "description": "Long term prediction value calculated from historical data at peak times",
                                        "title": "Forecast prediction peak"
                                    },
                                    "trendline_fit": {
                                        "description": "Trendline data values",
                                        "title": "Trendline fit",
                                        "datatype": "array"
                                    }
                                }
                            },
                            "stats": {
                                "values": {
                                    "forecast": {
                                        "values": {
                                            "min": {
                                                "description": "Manually set lower boundary of feasible forecast value range",
                                                "valid_formats": [
                                                    "forecast_predict",
                                                    "forecast_predict_peak",
                                                    "forecast_predict_offpeak",
                                                    "forecast_min",
                                                    "forecast_max",
                                                    "forecast_boundary_time",
                                                    "forecast_daily_slope",
                                                    "forecast_fit",
                                                    "forecast_vals"
                                                ],
                                                "values": null,
                                                "title": "Minimum"
                                            },
                                            "data_range": {
                                                "title": "Baseline History",
                                                "default": "range = now - 180d to now",
                                                "valid_formats": [
                                                    "forecast_predict",
                                                    "forecast_predict_peak",
                                                    "forecast_predict_offpeak",
                                                    "forecast_min",
                                                    "forecast_max",
                                                    "forecast_boundary_time",
                                                    "forecast_daily_slope",
                                                    "forecast_fit",
                                                    "forecast_vals"
                                                ],
                                                "description": "Timefilter for the historical data range used to calculate forecasts. Default is last 180 days.",
                                                "values": null
                                            },
                                            "predict_time": {
                                                "values": null,
                                                "valid_formats": [
                                                    "forecast_predict",
                                                    "forecast_predict_peak",
                                                    "forecast_predict_offpeak"
                                                ],
                                                "description": "Time to use for the forecast_predict, forecast_predict_peak or forecast_predict_offpeak values (e.g. now + 10d)",
                                                "title": "Predict Time"
                                            },
                                            "max": {
                                                "valid_formats": [
                                                    "forecast_predict",
                                                    "forecast_predict_peak",
                                                    "forecast_predict_offpeak",
                                                    "forecast_min",
                                                    "forecast_max",
                                                    "forecast_boundary_time",
                                                    "forecast_daily_slope",
                                                    "forecast_fit",
                                                    "forecast_vals"
                                                ],
                                                "values": null,
                                                "description": "Manually set upper boundary of feasible forecast value range",
                                                "title": "Maximum"
                                            },
                                            "is_cumulative": {
                                                "valid_formats": [
                                                    "forecast_predict",
                                                    "forecast_predict_peak",
                                                    "forecast_predict_offpeak",
                                                    "forecast_min",
                                                    "forecast_max",
                                                    "forecast_boundary_time",
                                                    "forecast_daily_change",
                                                    "forecast_fit",
                                                    "forecast_vals"
                                                ],
                                                "values": [
                                                    true,
                                                    false
                                                ],
                                                "title": "Is Cumulative",
                                                "description": "whether to use cumulative forecasts",
                                                "default": false
                                            }
                                        },
                                        "description": "Forecast related input options"
                                    },
                                    "percentile": {
                                        "title": "Percentile",
                                        "values": null,
                                        "valid_formats": [
                                            "percentile"
                                        ],
                                        "description": "The value to use for the percentile format (between 0 and 100)"
                                    },
                                    "baseline": {
                                        "description": "Baseline and anomaly metric related input options",
                                        "values": {
                                            "percentile": {
                                                "description": "Baseline percentile to output",
                                                "valid_formats": [
                                                    "baseline_avg",
                                                    "baseline_compare",
                                                    "baseline_percent_compare",
                                                    "baseline"
                                                ],
                                                "default": 50,
                                                "values": null,
                                                "title": "Percentile"
                                            },
                                            "data_range": {
                                                "title": "Baseline History",
                                                "description": "Timefilter for the historical data range used to calculate baseline and anomaly metric. Default is last 180 days.",
                                                "valid_formats": [
                                                    "baseline_avg",
                                                    "baseline_compare",
                                                    "baseline_percent_compare",
                                                    "baseline",
                                                    "baseline_lwr",
                                                    "baseline_upr",
                                                    "anomaly_metric",
                                                    "anomaly_strength"
                                                ],
                                                "default": "range = now - 180d to now",
                                                "values": null
                                            },
                                            "lwr_percentile": {
                                                "title": "Lower Percentile",
                                                "description": "Baseline percentile to output for baseline lower bound",
                                                "valid_formats": [
                                                    "baseline_lwr"
                                                ],
                                                "default": 2.5,
                                                "values": null
                                            },
                                            "upr_percentile": {
                                                "valid_formats": [
                                                    "baseline_upr"
                                                ],
                                                "default": 97.5,
                                                "values": null,
                                                "description": "Baseline percentile to output for baseline upper bound",
                                                "title": "Upper Percentile"
                                            }
                                        }
                                    },
                                    "trendline": {
                                        "description": "Trendline related input options",
                                        "values": {
                                            "lwr_stddev": {
                                                "valid_formats": [
                                                    "trendline_lwr"
                                                ],
                                                "description": "The number of standard deviations to use for the trendline_lwr format",
                                                "values": null,
                                                "title": "Lower Standard Deviation"
                                            },
                                            "upr_stddev": {
                                                "title": "Upper Standard Deviation",
                                                "valid_formats": [
                                                    "trendline_upr"
                                                ],
                                                "description": "The number of standard deviations to use for the trendline_upr format",
                                                "values": null
                                            },
                                            "is_cumulative": {
                                                "title": "Is Cumulative",
                                                "values": [
                                                    true,
                                                    false
                                                ],
                                                "valid_formats": [
                                                    "trendline_fit",
                                                    "trendline_predict"
                                                ],
                                                "description": "whether to use cumulative trendline"
                                            },
                                            "predict_time": {
                                                "title": "Predict Time",
                                                "valid_formats": [
                                                    "trendline_predict"
                                                ],
                                                "values": null,
                                                "description": "The time to use for the trendline_predict value"
                                            },
                                            "constrained": {
                                                "valid_formats": [
                                                    "trendline_start",
                                                    "trendline_finish",
                                                    "trendline_daily_change",
                                                    "trendline_change",
                                                    "trendline_percent_change",
                                                    "trendline_predict"
                                                ],
                                                "values": [
                                                    true,
                                                    false
                                                ],
                                                "default": true,
                                                "description": "Whether to use a constrained trendline",
                                                "title": "Constrained"
                                            }
                                        },
                                        "title": "Trendline"
                                    }
                                },
                                "description": "Additional input options for certain formats"
                            },
                            "timefmt": {
                                "description": "Format a timestamp into a human readable string. Format specifier is identical to strftime(3)",
                                "values": null
                            }
                        }
                    },
                    "ping_lost3": {
                        "title": "Ping Lost 3",
                        "description": "Number of times that three ping requests in a row have been lost",
                        "polltype": "tsc",
                        "interval": 3600,
                        "datatype": "integer",
                        "options": {
                            "value_time": {
                                "description": "The timestamp for a timeseries event",
                                "values": {
                                    "none": "Do not return a timestamp",
                                    "mid": "The midpoint of the start and end timestamps",
                                    "end": "The timestamp at which the event finished",
                                    "start": "The timestamp at which the event began",
                                    "all": "An array of start, mid and end"
                                }
                            },
                            "formats": {
                                "description": "The valid data formats",
                                "values": {
                                    "median": {
                                        "description": "Median of the data",
                                        "title": "Median"
                                    },
                                    "trendline_daily_change": {
                                        "title": "Trendline daily change",
                                        "description": "Slope of the trendline (units/day)"
                                    },
                                    "anomaly_metric": {
                                        "description": "Metric from -100 to 100 indicating whether requested timeseries values are unusually large or small",
                                        "title": "Anomaly metric"
                                    },
                                    "trendline_upr": {
                                        "datatype": "array",
                                        "description": "Trendline confidence interval values (upper)",
                                        "title": "Trendline upper confidence interval"
                                    },
                                    "count": {
                                        "description": "Number of non-null data points",
                                        "title": "Count"
                                    },
                                    "baseline": {
                                        "title": "Baseline",
                                        "description": "List of expected baseline values calculated from historical data. Corresponds to 0% anomaly metric.",
                                        "datatype": "array"
                                    },
                                    "forecast_min": {
                                        "title": "Forecast minimum",
                                        "description": "Lower boundary of feasible forecast value range"
                                    },
                                    "trendline_strength": {
                                        "title": "Trendline strength",
                                        "description": "Coefficient of determination (R-squared) of the trendline"
                                    },
                                    "forecast_boundary_time": {
                                        "datatype": "time",
                                        "description": "Time forecast exceeds feasible value range if before end of timefilter range",
                                        "title": "Forecast boundary time"
                                    },
                                    "95th": {
                                        "description": "95th percentile of the data",
                                        "title": "95th percentile"
                                    },
                                    "forecast_daily_change": {
                                        "description": "The average daily change of forecast values",
                                        "title": "Forecast daily change"
                                    },
                                    "min": {
                                        "description": "Minimum data value",
                                        "title": "Minimum"
                                    },
                                    "forecast_max": {
                                        "title": "Forecast maximum",
                                        "description": "Upper boundary of feasible forecast value range"
                                    },
                                    "current": {
                                        "title": "Current",
                                        "description": "The current value"
                                    },
                                    "baseline_percent_compare": {
                                        "description": "Percentage difference between data average and expected baseline calculated from historical data",
                                        "title": "Baseline Percent Comparison"
                                    },
                                    "start_tz_offset": {
                                        "datatype": "integer",
                                        "title": "Start TZ offset",
                                        "description": "The timezone offset of the first data point"
                                    },
                                    "forecast_vals": {
                                        "datatype": "array",
                                        "title": "Forecast values",
                                        "description": "An array of forecast values with periodic deviations at peak and offpeak times"
                                    },
                                    "max": {
                                        "title": "Maximum",
                                        "description": "Maximum data value"
                                    },
                                    "trendline_lwr": {
                                        "datatype": "array",
                                        "description": "Trendline confidence interval values (lower)",
                                        "title": "Trendline lower confidence interval"
                                    },
                                    "anomaly_strength": {
                                        "description": "Metric from 0 to 100 indicating whether requested timeseries values are extreme or unusual",
                                        "title": "Anomaly strength"
                                    },
                                    "forecast_predict_offpeak": {
                                        "description": "Long term prediction value calculated from historical data at offpeak times",
                                        "title": "Forecast prediction offpeak"
                                    },
                                    "start_time": {
                                        "datatype": "time",
                                        "title": "Start time",
                                        "description": "Time of the first data point"
                                    },
                                    "stddev": {
                                        "title": "Standard deviation",
                                        "description": "Standard deviation of the data"
                                    },
                                    "baseline_lwr": {
                                        "description": "List of baseline lower confidence interval values. Corresponds to -95% anomaly metric.",
                                        "title": "Baseline Lower Bound",
                                        "datatype": "array"
                                    },
                                    "trendline_percent_change": {
                                        "description": "Trendline change scaled by the average of data over requested time filter",
                                        "title": "Trendline percent change"
                                    },
                                    "vals": {
                                        "description": "Timeseries data values",
                                        "title": "Values",
                                        "datatype": "array"
                                    },
                                    "cvals": {
                                        "datatype": "array",
                                        "description": "Cumulative data values",
                                        "title": "Cumulative Values"
                                    },
                                    "last": {
                                        "title": "Last",
                                        "description": "The last value in the data"
                                    },
                                    "trendline_start": {
                                        "title": "Trendline Start",
                                        "description": "Value of the first trendline data point"
                                    },
                                    "forecast_fit": {
                                        "datatype": "array",
                                        "title": "Forecast fit",
                                        "description": "An array of forecast values without periodic deviations at peak and offpeak times"
                                    },
                                    "baseline_compare": {
                                        "description": "Difference between data average and expected baseline calculated from historical data",
                                        "title": "Baseline Comparison"
                                    },
                                    "first": {
                                        "title": "First",
                                        "description": "The first value in the data"
                                    },
                                    "percentile": {
                                        "title": "Percentile",
                                        "description": "Custom percentile of the data"
                                    },
                                    "trendline_predict": {
                                        "title": "Trendline Predict",
                                        "description": "Prediction value from the trendline"
                                    },
                                    "trendline_change": {
                                        "description": "Trendline change over the requested timefilter range",
                                        "title": "Trendline change"
                                    },
                                    "baseline_upr": {
                                        "title": "Baseline Upper Bound",
                                        "description": "List of baseline upper confidence interval values. Corresponds to 95% anomaly metric.",
                                        "datatype": "array"
                                    },
                                    "avg": {
                                        "title": "Average",
                                        "description": "Average of the data"
                                    },
                                    "baseline_avg": {
                                        "description": "Average of expected baseline values calculated from historical data. Corresponds to 0% anomaly metric.",
                                        "title": "Baseline Average"
                                    },
                                    "trendline_finish": {
                                        "title": "Trendline Finish",
                                        "description": "Value of the last trendline data point"
                                    },
                                    "total": {
                                        "description": "Sum of the data",
                                        "title": "Total"
                                    },
                                    "forecast_predict": {
                                        "description": "Long term prediction value calculated from historical data",
                                        "title": "Forecast prediction"
                                    },
                                    "forecast_predict_peak": {
                                        "description": "Long term prediction value calculated from historical data at peak times",
                                        "title": "Forecast prediction peak"
                                    },
                                    "trendline_fit": {
                                        "description": "Trendline data values",
                                        "title": "Trendline fit",
                                        "datatype": "array"
                                    }
                                }
                            },
                            "stats": {
                                "values": {
                                    "forecast": {
                                        "values": {
                                            "min": {
                                                "description": "Manually set lower boundary of feasible forecast value range",
                                                "valid_formats": [
                                                    "forecast_predict",
                                                    "forecast_predict_peak",
                                                    "forecast_predict_offpeak",
                                                    "forecast_min",
                                                    "forecast_max",
                                                    "forecast_boundary_time",
                                                    "forecast_daily_slope",
                                                    "forecast_fit",
                                                    "forecast_vals"
                                                ],
                                                "values": null,
                                                "title": "Minimum"
                                            },
                                            "data_range": {
                                                "title": "Baseline History",
                                                "default": "range = now - 180d to now",
                                                "valid_formats": [
                                                    "forecast_predict",
                                                    "forecast_predict_peak",
                                                    "forecast_predict_offpeak",
                                                    "forecast_min",
                                                    "forecast_max",
                                                    "forecast_boundary_time",
                                                    "forecast_daily_slope",
                                                    "forecast_fit",
                                                    "forecast_vals"
                                                ],
                                                "description": "Timefilter for the historical data range used to calculate forecasts. Default is last 180 days.",
                                                "values": null
                                            },
                                            "predict_time": {
                                                "values": null,
                                                "valid_formats": [
                                                    "forecast_predict",
                                                    "forecast_predict_peak",
                                                    "forecast_predict_offpeak"
                                                ],
                                                "description": "Time to use for the forecast_predict, forecast_predict_peak or forecast_predict_offpeak values (e.g. now + 10d)",
                                                "title": "Predict Time"
                                            },
                                            "max": {
                                                "valid_formats": [
                                                    "forecast_predict",
                                                    "forecast_predict_peak",
                                                    "forecast_predict_offpeak",
                                                    "forecast_min",
                                                    "forecast_max",
                                                    "forecast_boundary_time",
                                                    "forecast_daily_slope",
                                                    "forecast_fit",
                                                    "forecast_vals"
                                                ],
                                                "values": null,
                                                "description": "Manually set upper boundary of feasible forecast value range",
                                                "title": "Maximum"
                                            },
                                            "is_cumulative": {
                                                "valid_formats": [
                                                    "forecast_predict",
                                                    "forecast_predict_peak",
                                                    "forecast_predict_offpeak",
                                                    "forecast_min",
                                                    "forecast_max",
                                                    "forecast_boundary_time",
                                                    "forecast_daily_change",
                                                    "forecast_fit",
                                                    "forecast_vals"
                                                ],
                                                "values": [
                                                    true,
                                                    false
                                                ],
                                                "title": "Is Cumulative",
                                                "description": "whether to use cumulative forecasts",
                                                "default": false
                                            }
                                        },
                                        "description": "Forecast related input options"
                                    },
                                    "percentile": {
                                        "title": "Percentile",
                                        "values": null,
                                        "valid_formats": [
                                            "percentile"
                                        ],
                                        "description": "The value to use for the percentile format (between 0 and 100)"
                                    },
                                    "baseline": {
                                        "description": "Baseline and anomaly metric related input options",
                                        "values": {
                                            "percentile": {
                                                "description": "Baseline percentile to output",
                                                "valid_formats": [
                                                    "baseline_avg",
                                                    "baseline_compare",
                                                    "baseline_percent_compare",
                                                    "baseline"
                                                ],
                                                "default": 50,
                                                "values": null,
                                                "title": "Percentile"
                                            },
                                            "data_range": {
                                                "title": "Baseline History",
                                                "description": "Timefilter for the historical data range used to calculate baseline and anomaly metric. Default is last 180 days.",
                                                "valid_formats": [
                                                    "baseline_avg",
                                                    "baseline_compare",
                                                    "baseline_percent_compare",
                                                    "baseline",
                                                    "baseline_lwr",
                                                    "baseline_upr",
                                                    "anomaly_metric",
                                                    "anomaly_strength"
                                                ],
                                                "default": "range = now - 180d to now",
                                                "values": null
                                            },
                                            "lwr_percentile": {
                                                "title": "Lower Percentile",
                                                "description": "Baseline percentile to output for baseline lower bound",
                                                "valid_formats": [
                                                    "baseline_lwr"
                                                ],
                                                "default": 2.5,
                                                "values": null
                                            },
                                            "upr_percentile": {
                                                "valid_formats": [
                                                    "baseline_upr"
                                                ],
                                                "default": 97.5,
                                                "values": null,
                                                "description": "Baseline percentile to output for baseline upper bound",
                                                "title": "Upper Percentile"
                                            }
                                        }
                                    },
                                    "trendline": {
                                        "description": "Trendline related input options",
                                        "values": {
                                            "lwr_stddev": {
                                                "valid_formats": [
                                                    "trendline_lwr"
                                                ],
                                                "description": "The number of standard deviations to use for the trendline_lwr format",
                                                "values": null,
                                                "title": "Lower Standard Deviation"
                                            },
                                            "upr_stddev": {
                                                "title": "Upper Standard Deviation",
                                                "valid_formats": [
                                                    "trendline_upr"
                                                ],
                                                "description": "The number of standard deviations to use for the trendline_upr format",
                                                "values": null
                                            },
                                            "is_cumulative": {
                                                "title": "Is Cumulative",
                                                "values": [
                                                    true,
                                                    false
                                                ],
                                                "valid_formats": [
                                                    "trendline_fit",
                                                    "trendline_predict"
                                                ],
                                                "description": "whether to use cumulative trendline"
                                            },
                                            "predict_time": {
                                                "title": "Predict Time",
                                                "valid_formats": [
                                                    "trendline_predict"
                                                ],
                                                "values": null,
                                                "description": "The time to use for the trendline_predict value"
                                            },
                                            "constrained": {
                                                "valid_formats": [
                                                    "trendline_start",
                                                    "trendline_finish",
                                                    "trendline_daily_change",
                                                    "trendline_change",
                                                    "trendline_percent_change",
                                                    "trendline_predict"
                                                ],
                                                "values": [
                                                    true,
                                                    false
                                                ],
                                                "default": true,
                                                "description": "Whether to use a constrained trendline",
                                                "title": "Constrained"
                                            }
                                        },
                                        "title": "Trendline"
                                    }
                                },
                                "description": "Additional input options for certain formats"
                            },
                            "timefmt": {
                                "description": "Format a timestamp into a human readable string. Format specifier is identical to strftime(3)",
                                "values": null
                            }
                        }
                    },
                    "ping_lost4": {
                        "title": "Ping Lost 4",
                        "description": "Number of times that four ping requests in a row have been lost",
                        "polltype": "tsc",
                        "interval": 3600,
                        "datatype": "integer",
                        "options": {
                            "value_time": {
                                "description": "The timestamp for a timeseries event",
                                "values": {
                                    "none": "Do not return a timestamp",
                                    "mid": "The midpoint of the start and end timestamps",
                                    "end": "The timestamp at which the event finished",
                                    "start": "The timestamp at which the event began",
                                    "all": "An array of start, mid and end"
                                }
                            },
                            "formats": {
                                "description": "The valid data formats",
                                "values": {
                                    "median": {
                                        "description": "Median of the data",
                                        "title": "Median"
                                    },
                                    "trendline_daily_change": {
                                        "title": "Trendline daily change",
                                        "description": "Slope of the trendline (units/day)"
                                    },
                                    "anomaly_metric": {
                                        "description": "Metric from -100 to 100 indicating whether requested timeseries values are unusually large or small",
                                        "title": "Anomaly metric"
                                    },
                                    "trendline_upr": {
                                        "datatype": "array",
                                        "description": "Trendline confidence interval values (upper)",
                                        "title": "Trendline upper confidence interval"
                                    },
                                    "count": {
                                        "description": "Number of non-null data points",
                                        "title": "Count"
                                    },
                                    "baseline": {
                                        "title": "Baseline",
                                        "description": "List of expected baseline values calculated from historical data. Corresponds to 0% anomaly metric.",
                                        "datatype": "array"
                                    },
                                    "forecast_min": {
                                        "title": "Forecast minimum",
                                        "description": "Lower boundary of feasible forecast value range"
                                    },
                                    "trendline_strength": {
                                        "title": "Trendline strength",
                                        "description": "Coefficient of determination (R-squared) of the trendline"
                                    },
                                    "forecast_boundary_time": {
                                        "datatype": "time",
                                        "description": "Time forecast exceeds feasible value range if before end of timefilter range",
                                        "title": "Forecast boundary time"
                                    },
                                    "95th": {
                                        "description": "95th percentile of the data",
                                        "title": "95th percentile"
                                    },
                                    "forecast_daily_change": {
                                        "description": "The average daily change of forecast values",
                                        "title": "Forecast daily change"
                                    },
                                    "min": {
                                        "description": "Minimum data value",
                                        "title": "Minimum"
                                    },
                                    "forecast_max": {
                                        "title": "Forecast maximum",
                                        "description": "Upper boundary of feasible forecast value range"
                                    },
                                    "current": {
                                        "title": "Current",
                                        "description": "The current value"
                                    },
                                    "baseline_percent_compare": {
                                        "description": "Percentage difference between data average and expected baseline calculated from historical data",
                                        "title": "Baseline Percent Comparison"
                                    },
                                    "start_tz_offset": {
                                        "datatype": "integer",
                                        "title": "Start TZ offset",
                                        "description": "The timezone offset of the first data point"
                                    },
                                    "forecast_vals": {
                                        "datatype": "array",
                                        "title": "Forecast values",
                                        "description": "An array of forecast values with periodic deviations at peak and offpeak times"
                                    },
                                    "max": {
                                        "title": "Maximum",
                                        "description": "Maximum data value"
                                    },
                                    "trendline_lwr": {
                                        "datatype": "array",
                                        "description": "Trendline confidence interval values (lower)",
                                        "title": "Trendline lower confidence interval"
                                    },
                                    "anomaly_strength": {
                                        "description": "Metric from 0 to 100 indicating whether requested timeseries values are extreme or unusual",
                                        "title": "Anomaly strength"
                                    },
                                    "forecast_predict_offpeak": {
                                        "description": "Long term prediction value calculated from historical data at offpeak times",
                                        "title": "Forecast prediction offpeak"
                                    },
                                    "start_time": {
                                        "datatype": "time",
                                        "title": "Start time",
                                        "description": "Time of the first data point"
                                    },
                                    "stddev": {
                                        "title": "Standard deviation",
                                        "description": "Standard deviation of the data"
                                    },
                                    "baseline_lwr": {
                                        "description": "List of baseline lower confidence interval values. Corresponds to -95% anomaly metric.",
                                        "title": "Baseline Lower Bound",
                                        "datatype": "array"
                                    },
                                    "trendline_percent_change": {
                                        "description": "Trendline change scaled by the average of data over requested time filter",
                                        "title": "Trendline percent change"
                                    },
                                    "vals": {
                                        "description": "Timeseries data values",
                                        "title": "Values",
                                        "datatype": "array"
                                    },
                                    "cvals": {
                                        "datatype": "array",
                                        "description": "Cumulative data values",
                                        "title": "Cumulative Values"
                                    },
                                    "last": {
                                        "title": "Last",
                                        "description": "The last value in the data"
                                    },
                                    "trendline_start": {
                                        "title": "Trendline Start",
                                        "description": "Value of the first trendline data point"
                                    },
                                    "forecast_fit": {
                                        "datatype": "array",
                                        "title": "Forecast fit",
                                        "description": "An array of forecast values without periodic deviations at peak and offpeak times"
                                    },
                                    "baseline_compare": {
                                        "description": "Difference between data average and expected baseline calculated from historical data",
                                        "title": "Baseline Comparison"
                                    },
                                    "first": {
                                        "title": "First",
                                        "description": "The first value in the data"
                                    },
                                    "percentile": {
                                        "title": "Percentile",
                                        "description": "Custom percentile of the data"
                                    },
                                    "trendline_predict": {
                                        "title": "Trendline Predict",
                                        "description": "Prediction value from the trendline"
                                    },
                                    "trendline_change": {
                                        "description": "Trendline change over the requested timefilter range",
                                        "title": "Trendline change"
                                    },
                                    "baseline_upr": {
                                        "title": "Baseline Upper Bound",
                                        "description": "List of baseline upper confidence interval values. Corresponds to 95% anomaly metric.",
                                        "datatype": "array"
                                    },
                                    "avg": {
                                        "title": "Average",
                                        "description": "Average of the data"
                                    },
                                    "baseline_avg": {
                                        "description": "Average of expected baseline values calculated from historical data. Corresponds to 0% anomaly metric.",
                                        "title": "Baseline Average"
                                    },
                                    "trendline_finish": {
                                        "title": "Trendline Finish",
                                        "description": "Value of the last trendline data point"
                                    },
                                    "total": {
                                        "description": "Sum of the data",
                                        "title": "Total"
                                    },
                                    "forecast_predict": {
                                        "description": "Long term prediction value calculated from historical data",
                                        "title": "Forecast prediction"
                                    },
                                    "forecast_predict_peak": {
                                        "description": "Long term prediction value calculated from historical data at peak times",
                                        "title": "Forecast prediction peak"
                                    },
                                    "trendline_fit": {
                                        "description": "Trendline data values",
                                        "title": "Trendline fit",
                                        "datatype": "array"
                                    }
                                }
                            },
                            "stats": {
                                "values": {
                                    "forecast": {
                                        "values": {
                                            "min": {
                                                "description": "Manually set lower boundary of feasible forecast value range",
                                                "valid_formats": [
                                                    "forecast_predict",
                                                    "forecast_predict_peak",
                                                    "forecast_predict_offpeak",
                                                    "forecast_min",
                                                    "forecast_max",
                                                    "forecast_boundary_time",
                                                    "forecast_daily_slope",
                                                    "forecast_fit",
                                                    "forecast_vals"
                                                ],
                                                "values": null,
                                                "title": "Minimum"
                                            },
                                            "data_range": {
                                                "title": "Baseline History",
                                                "default": "range = now - 180d to now",
                                                "valid_formats": [
                                                    "forecast_predict",
                                                    "forecast_predict_peak",
                                                    "forecast_predict_offpeak",
                                                    "forecast_min",
                                                    "forecast_max",
                                                    "forecast_boundary_time",
                                                    "forecast_daily_slope",
                                                    "forecast_fit",
                                                    "forecast_vals"
                                                ],
                                                "description": "Timefilter for the historical data range used to calculate forecasts. Default is last 180 days.",
                                                "values": null
                                            },
                                            "predict_time": {
                                                "values": null,
                                                "valid_formats": [
                                                    "forecast_predict",
                                                    "forecast_predict_peak",
                                                    "forecast_predict_offpeak"
                                                ],
                                                "description": "Time to use for the forecast_predict, forecast_predict_peak or forecast_predict_offpeak values (e.g. now + 10d)",
                                                "title": "Predict Time"
                                            },
                                            "max": {
                                                "valid_formats": [
                                                    "forecast_predict",
                                                    "forecast_predict_peak",
                                                    "forecast_predict_offpeak",
                                                    "forecast_min",
                                                    "forecast_max",
                                                    "forecast_boundary_time",
                                                    "forecast_daily_slope",
                                                    "forecast_fit",
                                                    "forecast_vals"
                                                ],
                                                "values": null,
                                                "description": "Manually set upper boundary of feasible forecast value range",
                                                "title": "Maximum"
                                            },
                                            "is_cumulative": {
                                                "valid_formats": [
                                                    "forecast_predict",
                                                    "forecast_predict_peak",
                                                    "forecast_predict_offpeak",
                                                    "forecast_min",
                                                    "forecast_max",
                                                    "forecast_boundary_time",
                                                    "forecast_daily_change",
                                                    "forecast_fit",
                                                    "forecast_vals"
                                                ],
                                                "values": [
                                                    true,
                                                    false
                                                ],
                                                "title": "Is Cumulative",
                                                "description": "whether to use cumulative forecasts",
                                                "default": false
                                            }
                                        },
                                        "description": "Forecast related input options"
                                    },
                                    "percentile": {
                                        "title": "Percentile",
                                        "values": null,
                                        "valid_formats": [
                                            "percentile"
                                        ],
                                        "description": "The value to use for the percentile format (between 0 and 100)"
                                    },
                                    "baseline": {
                                        "description": "Baseline and anomaly metric related input options",
                                        "values": {
                                            "percentile": {
                                                "description": "Baseline percentile to output",
                                                "valid_formats": [
                                                    "baseline_avg",
                                                    "baseline_compare",
                                                    "baseline_percent_compare",
                                                    "baseline"
                                                ],
                                                "default": 50,
                                                "values": null,
                                                "title": "Percentile"
                                            },
                                            "data_range": {
                                                "title": "Baseline History",
                                                "description": "Timefilter for the historical data range used to calculate baseline and anomaly metric. Default is last 180 days.",
                                                "valid_formats": [
                                                    "baseline_avg",
                                                    "baseline_compare",
                                                    "baseline_percent_compare",
                                                    "baseline",
                                                    "baseline_lwr",
                                                    "baseline_upr",
                                                    "anomaly_metric",
                                                    "anomaly_strength"
                                                ],
                                                "default": "range = now - 180d to now",
                                                "values": null
                                            },
                                            "lwr_percentile": {
                                                "title": "Lower Percentile",
                                                "description": "Baseline percentile to output for baseline lower bound",
                                                "valid_formats": [
                                                    "baseline_lwr"
                                                ],
                                                "default": 2.5,
                                                "values": null
                                            },
                                            "upr_percentile": {
                                                "valid_formats": [
                                                    "baseline_upr"
                                                ],
                                                "default": 97.5,
                                                "values": null,
                                                "description": "Baseline percentile to output for baseline upper bound",
                                                "title": "Upper Percentile"
                                            }
                                        }
                                    },
                                    "trendline": {
                                        "description": "Trendline related input options",
                                        "values": {
                                            "lwr_stddev": {
                                                "valid_formats": [
                                                    "trendline_lwr"
                                                ],
                                                "description": "The number of standard deviations to use for the trendline_lwr format",
                                                "values": null,
                                                "title": "Lower Standard Deviation"
                                            },
                                            "upr_stddev": {
                                                "title": "Upper Standard Deviation",
                                                "valid_formats": [
                                                    "trendline_upr"
                                                ],
                                                "description": "The number of standard deviations to use for the trendline_upr format",
                                                "values": null
                                            },
                                            "is_cumulative": {
                                                "title": "Is Cumulative",
                                                "values": [
                                                    true,
                                                    false
                                                ],
                                                "valid_formats": [
                                                    "trendline_fit",
                                                    "trendline_predict"
                                                ],
                                                "description": "whether to use cumulative trendline"
                                            },
                                            "predict_time": {
                                                "title": "Predict Time",
                                                "valid_formats": [
                                                    "trendline_predict"
                                                ],
                                                "values": null,
                                                "description": "The time to use for the trendline_predict value"
                                            },
                                            "constrained": {
                                                "valid_formats": [
                                                    "trendline_start",
                                                    "trendline_finish",
                                                    "trendline_daily_change",
                                                    "trendline_change",
                                                    "trendline_percent_change",
                                                    "trendline_predict"
                                                ],
                                                "values": [
                                                    true,
                                                    false
                                                ],
                                                "default": true,
                                                "description": "Whether to use a constrained trendline",
                                                "title": "Constrained"
                                            }
                                        },
                                        "title": "Trendline"
                                    }
                                },
                                "description": "Additional input options for certain formats"
                            },
                            "timefmt": {
                                "description": "Format a timestamp into a human readable string. Format specifier is identical to strftime(3)",
                                "values": null
                            }
                        }
                    },
                    "ping_outage": {
                        "title": "Ping Outage",
                        "description": "Number of seconds to wait before a device is considered to be down",
                        "polltype": "cfg",
                        "datatype": "integer"
                    },
                    "ping_poll": {
                        "title": "Ping Poll",
                        "description": "The ping polling status of the device",
                        "polltype": "cfg",
                        "datatype": "string"
                    },
                    "ping_rtt": {
                        "title": "Ping RTT",
                        "description": "The current ping state of the device",
                        "polltype": "tsg",
                        "interval": 60,
                        "units": "milliseconds",
                        "symbol": "ms",
                        "scale": "time",
                        "datatype": "integer",
                        "options": {
                            "value_time": {
                                "description": "The timestamp for a timeseries event",
                                "values": {
                                    "none": "Do not return a timestamp",
                                    "mid": "The midpoint of the start and end timestamps",
                                    "end": "The timestamp at which the event finished",
                                    "start": "The timestamp at which the event began",
                                    "all": "An array of start, mid and end"
                                }
                            },
                            "formats": {
                                "description": "The valid data formats",
                                "values": {
                                    "median": {
                                        "description": "Median of the data",
                                        "title": "Median"
                                    },
                                    "trendline_daily_change": {
                                        "title": "Trendline daily change",
                                        "description": "Slope of the trendline (units/day)"
                                    },
                                    "anomaly_metric": {
                                        "description": "Metric from -100 to 100 indicating whether requested timeseries values are unusually large or small",
                                        "title": "Anomaly metric"
                                    },
                                    "trendline_upr": {
                                        "datatype": "array",
                                        "description": "Trendline confidence interval values (upper)",
                                        "title": "Trendline upper confidence interval"
                                    },
                                    "count": {
                                        "description": "Number of non-null data points",
                                        "title": "Count"
                                    },
                                    "baseline": {
                                        "title": "Baseline",
                                        "description": "List of expected baseline values calculated from historical data. Corresponds to 0% anomaly metric.",
                                        "datatype": "array"
                                    },
                                    "forecast_min": {
                                        "title": "Forecast minimum",
                                        "description": "Lower boundary of feasible forecast value range"
                                    },
                                    "trendline_strength": {
                                        "title": "Trendline strength",
                                        "description": "Coefficient of determination (R-squared) of the trendline"
                                    },
                                    "forecast_boundary_time": {
                                        "datatype": "time",
                                        "description": "Time forecast exceeds feasible value range if before end of timefilter range",
                                        "title": "Forecast boundary time"
                                    },
                                    "95th": {
                                        "description": "95th percentile of the data",
                                        "title": "95th percentile"
                                    },
                                    "forecast_daily_change": {
                                        "description": "The average daily change of forecast values",
                                        "title": "Forecast daily change"
                                    },
                                    "min": {
                                        "description": "Minimum data value",
                                        "title": "Minimum"
                                    },
                                    "forecast_max": {
                                        "title": "Forecast maximum",
                                        "description": "Upper boundary of feasible forecast value range"
                                    },
                                    "current": {
                                        "title": "Current",
                                        "description": "The current value"
                                    },
                                    "baseline_percent_compare": {
                                        "description": "Percentage difference between data average and expected baseline calculated from historical data",
                                        "title": "Baseline Percent Comparison"
                                    },
                                    "start_tz_offset": {
                                        "datatype": "integer",
                                        "title": "Start TZ offset",
                                        "description": "The timezone offset of the first data point"
                                    },
                                    "forecast_vals": {
                                        "datatype": "array",
                                        "title": "Forecast values",
                                        "description": "An array of forecast values with periodic deviations at peak and offpeak times"
                                    },
                                    "max": {
                                        "title": "Maximum",
                                        "description": "Maximum data value"
                                    },
                                    "trendline_lwr": {
                                        "datatype": "array",
                                        "description": "Trendline confidence interval values (lower)",
                                        "title": "Trendline lower confidence interval"
                                    },
                                    "anomaly_strength": {
                                        "description": "Metric from 0 to 100 indicating whether requested timeseries values are extreme or unusual",
                                        "title": "Anomaly strength"
                                    },
                                    "forecast_predict_offpeak": {
                                        "description": "Long term prediction value calculated from historical data at offpeak times",
                                        "title": "Forecast prediction offpeak"
                                    },
                                    "start_time": {
                                        "datatype": "time",
                                        "title": "Start time",
                                        "description": "Time of the first data point"
                                    },
                                    "stddev": {
                                        "title": "Standard deviation",
                                        "description": "Standard deviation of the data"
                                    },
                                    "baseline_lwr": {
                                        "description": "List of baseline lower confidence interval values. Corresponds to -95% anomaly metric.",
                                        "title": "Baseline Lower Bound",
                                        "datatype": "array"
                                    },
                                    "trendline_percent_change": {
                                        "description": "Trendline change scaled by the average of data over requested time filter",
                                        "title": "Trendline percent change"
                                    },
                                    "vals": {
                                        "description": "Timeseries data values",
                                        "title": "Values",
                                        "datatype": "array"
                                    },
                                    "cvals": {
                                        "datatype": "array",
                                        "description": "Cumulative data values",
                                        "title": "Cumulative Values"
                                    },
                                    "last": {
                                        "title": "Last",
                                        "description": "The last value in the data"
                                    },
                                    "trendline_start": {
                                        "title": "Trendline Start",
                                        "description": "Value of the first trendline data point"
                                    },
                                    "forecast_fit": {
                                        "datatype": "array",
                                        "title": "Forecast fit",
                                        "description": "An array of forecast values without periodic deviations at peak and offpeak times"
                                    },
                                    "baseline_compare": {
                                        "description": "Difference between data average and expected baseline calculated from historical data",
                                        "title": "Baseline Comparison"
                                    },
                                    "first": {
                                        "title": "First",
                                        "description": "The first value in the data"
                                    },
                                    "percentile": {
                                        "title": "Percentile",
                                        "description": "Custom percentile of the data"
                                    },
                                    "trendline_predict": {
                                        "title": "Trendline Predict",
                                        "description": "Prediction value from the trendline"
                                    },
                                    "trendline_change": {
                                        "description": "Trendline change over the requested timefilter range",
                                        "title": "Trendline change"
                                    },
                                    "baseline_upr": {
                                        "title": "Baseline Upper Bound",
                                        "description": "List of baseline upper confidence interval values. Corresponds to 95% anomaly metric.",
                                        "datatype": "array"
                                    },
                                    "avg": {
                                        "title": "Average",
                                        "description": "Average of the data"
                                    },
                                    "baseline_avg": {
                                        "description": "Average of expected baseline values calculated from historical data. Corresponds to 0% anomaly metric.",
                                        "title": "Baseline Average"
                                    },
                                    "trendline_finish": {
                                        "title": "Trendline Finish",
                                        "description": "Value of the last trendline data point"
                                    },
                                    "total": {
                                        "description": "Sum of the data",
                                        "title": "Total"
                                    },
                                    "forecast_predict": {
                                        "description": "Long term prediction value calculated from historical data",
                                        "title": "Forecast prediction"
                                    },
                                    "forecast_predict_peak": {
                                        "description": "Long term prediction value calculated from historical data at peak times",
                                        "title": "Forecast prediction peak"
                                    },
                                    "trendline_fit": {
                                        "description": "Trendline data values",
                                        "title": "Trendline fit",
                                        "datatype": "array"
                                    }
                                }
                            },
                            "stats": {
                                "values": {
                                    "forecast": {
                                        "values": {
                                            "min": {
                                                "description": "Manually set lower boundary of feasible forecast value range",
                                                "valid_formats": [
                                                    "forecast_predict",
                                                    "forecast_predict_peak",
                                                    "forecast_predict_offpeak",
                                                    "forecast_min",
                                                    "forecast_max",
                                                    "forecast_boundary_time",
                                                    "forecast_daily_slope",
                                                    "forecast_fit",
                                                    "forecast_vals"
                                                ],
                                                "values": null,
                                                "title": "Minimum"
                                            },
                                            "data_range": {
                                                "title": "Baseline History",
                                                "default": "range = now - 180d to now",
                                                "valid_formats": [
                                                    "forecast_predict",
                                                    "forecast_predict_peak",
                                                    "forecast_predict_offpeak",
                                                    "forecast_min",
                                                    "forecast_max",
                                                    "forecast_boundary_time",
                                                    "forecast_daily_slope",
                                                    "forecast_fit",
                                                    "forecast_vals"
                                                ],
                                                "description": "Timefilter for the historical data range used to calculate forecasts. Default is last 180 days.",
                                                "values": null
                                            },
                                            "predict_time": {
                                                "values": null,
                                                "valid_formats": [
                                                    "forecast_predict",
                                                    "forecast_predict_peak",
                                                    "forecast_predict_offpeak"
                                                ],
                                                "description": "Time to use for the forecast_predict, forecast_predict_peak or forecast_predict_offpeak values (e.g. now + 10d)",
                                                "title": "Predict Time"
                                            },
                                            "max": {
                                                "valid_formats": [
                                                    "forecast_predict",
                                                    "forecast_predict_peak",
                                                    "forecast_predict_offpeak",
                                                    "forecast_min",
                                                    "forecast_max",
                                                    "forecast_boundary_time",
                                                    "forecast_daily_slope",
                                                    "forecast_fit",
                                                    "forecast_vals"
                                                ],
                                                "values": null,
                                                "description": "Manually set upper boundary of feasible forecast value range",
                                                "title": "Maximum"
                                            },
                                            "is_cumulative": {
                                                "valid_formats": [
                                                    "forecast_predict",
                                                    "forecast_predict_peak",
                                                    "forecast_predict_offpeak",
                                                    "forecast_min",
                                                    "forecast_max",
                                                    "forecast_boundary_time",
                                                    "forecast_daily_change",
                                                    "forecast_fit",
                                                    "forecast_vals"
                                                ],
                                                "description": "Whether to return the sum of forecast values",
                                                "values": [
                                                    true,
                                                    false
                                                ],
                                                "title": "Is Cumulative"
                                            }
                                        },
                                        "description": "Forecast related input options"
                                    },
                                    "percentile": {
                                        "title": "Percentile",
                                        "values": null,
                                        "valid_formats": [
                                            "percentile"
                                        ],
                                        "description": "The value to use for the percentile format (between 0 and 100)"
                                    },
                                    "baseline": {
                                        "description": "Baseline and anomaly metric related input options",
                                        "values": {
                                            "percentile": {
                                                "description": "Baseline percentile to output",
                                                "valid_formats": [
                                                    "baseline_avg",
                                                    "baseline_compare",
                                                    "baseline_percent_compare",
                                                    "baseline"
                                                ],
                                                "default": 50,
                                                "values": null,
                                                "title": "Percentile"
                                            },
                                            "data_range": {
                                                "title": "Baseline History",
                                                "description": "Timefilter for the historical data range used to calculate baseline and anomaly metric. Default is last 180 days.",
                                                "valid_formats": [
                                                    "baseline_avg",
                                                    "baseline_compare",
                                                    "baseline_percent_compare",
                                                    "baseline",
                                                    "baseline_lwr",
                                                    "baseline_upr",
                                                    "anomaly_metric",
                                                    "anomaly_strength"
                                                ],
                                                "default": "range = now - 180d to now",
                                                "values": null
                                            },
                                            "lwr_percentile": {
                                                "title": "Lower Percentile",
                                                "description": "Baseline percentile to output for baseline lower bound",
                                                "valid_formats": [
                                                    "baseline_lwr"
                                                ],
                                                "default": 2.5,
                                                "values": null
                                            },
                                            "upr_percentile": {
                                                "valid_formats": [
                                                    "baseline_upr"
                                                ],
                                                "default": 97.5,
                                                "values": null,
                                                "description": "Baseline percentile to output for baseline upper bound",
                                                "title": "Upper Percentile"
                                            }
                                        }
                                    },
                                    "trendline": {
                                        "description": "Trendline related input options",
                                        "values": {
                                            "lwr_stddev": {
                                                "valid_formats": [
                                                    "trendline_lwr"
                                                ],
                                                "description": "The number of standard deviations to use for the trendline_lwr format",
                                                "values": null,
                                                "title": "Lower Standard Deviation"
                                            },
                                            "upr_stddev": {
                                                "title": "Upper Standard Deviation",
                                                "valid_formats": [
                                                    "trendline_upr"
                                                ],
                                                "description": "The number of standard deviations to use for the trendline_upr format",
                                                "values": null
                                            },
                                            "is_cumulative": {
                                                "description": "Whether to fit a trendline to the sum of the data values",
                                                "valid_formats": [
                                                    "trendline_fit",
                                                    "trendline_predict"
                                                ],
                                                "values": [
                                                    true,
                                                    false
                                                ],
                                                "title": "Is Cumulative"
                                            },
                                            "predict_time": {
                                                "title": "Predict Time",
                                                "valid_formats": [
                                                    "trendline_predict"
                                                ],
                                                "values": null,
                                                "description": "The time to use for the trendline_predict value"
                                            },
                                            "constrained": {
                                                "valid_formats": [
                                                    "trendline_start",
                                                    "trendline_finish",
                                                    "trendline_daily_change",
                                                    "trendline_change",
                                                    "trendline_percent_change",
                                                    "trendline_predict"
                                                ],
                                                "values": [
                                                    true,
                                                    false
                                                ],
                                                "default": true,
                                                "description": "Whether to use a constrained trendline",
                                                "title": "Constrained"
                                            }
                                        },
                                        "title": "Trendline"
                                    }
                                },
                                "description": "Additional input options for certain formats"
                            },
                            "timefmt": {
                                "description": "Format a timestamp into a human readable string. Format specifier is identical to strftime(3)",
                                "values": null
                            }
                        }
                    },
                    "ping_rtt_ms": {
                        "title": "Ping RTT(High Precision)",
                        "description": "The current ping state of the device in ms to 3 decimal places",
                        "polltype": "tsg",
                        "interval": 60,
                        "units": "milliseconds",
                        "symbol": "ms",
                        "scale": "time",
                        "datatype": "float",
                        "options": {
                            "value_time": {
                                "description": "The timestamp for a timeseries event",
                                "values": {
                                    "none": "Do not return a timestamp",
                                    "mid": "The midpoint of the start and end timestamps",
                                    "end": "The timestamp at which the event finished",
                                    "start": "The timestamp at which the event began",
                                    "all": "An array of start, mid and end"
                                }
                            },
                            "formats": {
                                "description": "The valid data formats",
                                "values": {
                                    "median": {
                                        "description": "Median of the data",
                                        "title": "Median"
                                    },
                                    "trendline_daily_change": {
                                        "title": "Trendline daily change",
                                        "description": "Slope of the trendline (units/day)"
                                    },
                                    "anomaly_metric": {
                                        "description": "Metric from -100 to 100 indicating whether requested timeseries values are unusually large or small",
                                        "title": "Anomaly metric"
                                    },
                                    "trendline_upr": {
                                        "datatype": "array",
                                        "description": "Trendline confidence interval values (upper)",
                                        "title": "Trendline upper confidence interval"
                                    },
                                    "count": {
                                        "description": "Number of non-null data points",
                                        "title": "Count"
                                    },
                                    "baseline": {
                                        "title": "Baseline",
                                        "description": "List of expected baseline values calculated from historical data. Corresponds to 0% anomaly metric.",
                                        "datatype": "array"
                                    },
                                    "forecast_min": {
                                        "title": "Forecast minimum",
                                        "description": "Lower boundary of feasible forecast value range"
                                    },
                                    "trendline_strength": {
                                        "title": "Trendline strength",
                                        "description": "Coefficient of determination (R-squared) of the trendline"
                                    },
                                    "forecast_boundary_time": {
                                        "datatype": "time",
                                        "description": "Time forecast exceeds feasible value range if before end of timefilter range",
                                        "title": "Forecast boundary time"
                                    },
                                    "95th": {
                                        "description": "95th percentile of the data",
                                        "title": "95th percentile"
                                    },
                                    "forecast_daily_change": {
                                        "description": "The average daily change of forecast values",
                                        "title": "Forecast daily change"
                                    },
                                    "min": {
                                        "description": "Minimum data value",
                                        "title": "Minimum"
                                    },
                                    "forecast_max": {
                                        "title": "Forecast maximum",
                                        "description": "Upper boundary of feasible forecast value range"
                                    },
                                    "current": {
                                        "title": "Current",
                                        "description": "The current value"
                                    },
                                    "baseline_percent_compare": {
                                        "description": "Percentage difference between data average and expected baseline calculated from historical data",
                                        "title": "Baseline Percent Comparison"
                                    },
                                    "start_tz_offset": {
                                        "datatype": "integer",
                                        "title": "Start TZ offset",
                                        "description": "The timezone offset of the first data point"
                                    },
                                    "forecast_vals": {
                                        "datatype": "array",
                                        "title": "Forecast values",
                                        "description": "An array of forecast values with periodic deviations at peak and offpeak times"
                                    },
                                    "max": {
                                        "title": "Maximum",
                                        "description": "Maximum data value"
                                    },
                                    "trendline_lwr": {
                                        "datatype": "array",
                                        "description": "Trendline confidence interval values (lower)",
                                        "title": "Trendline lower confidence interval"
                                    },
                                    "anomaly_strength": {
                                        "description": "Metric from 0 to 100 indicating whether requested timeseries values are extreme or unusual",
                                        "title": "Anomaly strength"
                                    },
                                    "forecast_predict_offpeak": {
                                        "description": "Long term prediction value calculated from historical data at offpeak times",
                                        "title": "Forecast prediction offpeak"
                                    },
                                    "start_time": {
                                        "datatype": "time",
                                        "title": "Start time",
                                        "description": "Time of the first data point"
                                    },
                                    "stddev": {
                                        "title": "Standard deviation",
                                        "description": "Standard deviation of the data"
                                    },
                                    "baseline_lwr": {
                                        "description": "List of baseline lower confidence interval values. Corresponds to -95% anomaly metric.",
                                        "title": "Baseline Lower Bound",
                                        "datatype": "array"
                                    },
                                    "trendline_percent_change": {
                                        "description": "Trendline change scaled by the average of data over requested time filter",
                                        "title": "Trendline percent change"
                                    },
                                    "vals": {
                                        "description": "Timeseries data values",
                                        "title": "Values",
                                        "datatype": "array"
                                    },
                                    "cvals": {
                                        "datatype": "array",
                                        "description": "Cumulative data values",
                                        "title": "Cumulative Values"
                                    },
                                    "last": {
                                        "title": "Last",
                                        "description": "The last value in the data"
                                    },
                                    "trendline_start": {
                                        "title": "Trendline Start",
                                        "description": "Value of the first trendline data point"
                                    },
                                    "forecast_fit": {
                                        "datatype": "array",
                                        "title": "Forecast fit",
                                        "description": "An array of forecast values without periodic deviations at peak and offpeak times"
                                    },
                                    "baseline_compare": {
                                        "description": "Difference between data average and expected baseline calculated from historical data",
                                        "title": "Baseline Comparison"
                                    },
                                    "first": {
                                        "title": "First",
                                        "description": "The first value in the data"
                                    },
                                    "percentile": {
                                        "title": "Percentile",
                                        "description": "Custom percentile of the data"
                                    },
                                    "trendline_predict": {
                                        "title": "Trendline Predict",
                                        "description": "Prediction value from the trendline"
                                    },
                                    "trendline_change": {
                                        "description": "Trendline change over the requested timefilter range",
                                        "title": "Trendline change"
                                    },
                                    "baseline_upr": {
                                        "title": "Baseline Upper Bound",
                                        "description": "List of baseline upper confidence interval values. Corresponds to 95% anomaly metric.",
                                        "datatype": "array"
                                    },
                                    "avg": {
                                        "title": "Average",
                                        "description": "Average of the data"
                                    },
                                    "baseline_avg": {
                                        "description": "Average of expected baseline values calculated from historical data. Corresponds to 0% anomaly metric.",
                                        "title": "Baseline Average"
                                    },
                                    "trendline_finish": {
                                        "title": "Trendline Finish",
                                        "description": "Value of the last trendline data point"
                                    },
                                    "total": {
                                        "description": "Sum of the data",
                                        "title": "Total"
                                    },
                                    "forecast_predict": {
                                        "description": "Long term prediction value calculated from historical data",
                                        "title": "Forecast prediction"
                                    },
                                    "forecast_predict_peak": {
                                        "description": "Long term prediction value calculated from historical data at peak times",
                                        "title": "Forecast prediction peak"
                                    },
                                    "trendline_fit": {
                                        "description": "Trendline data values",
                                        "title": "Trendline fit",
                                        "datatype": "array"
                                    }
                                }
                            },
                            "stats": {
                                "values": {
                                    "forecast": {
                                        "values": {
                                            "min": {
                                                "description": "Manually set lower boundary of feasible forecast value range",
                                                "valid_formats": [
                                                    "forecast_predict",
                                                    "forecast_predict_peak",
                                                    "forecast_predict_offpeak",
                                                    "forecast_min",
                                                    "forecast_max",
                                                    "forecast_boundary_time",
                                                    "forecast_daily_slope",
                                                    "forecast_fit",
                                                    "forecast_vals"
                                                ],
                                                "values": null,
                                                "title": "Minimum"
                                            },
                                            "data_range": {
                                                "title": "Baseline History",
                                                "default": "range = now - 180d to now",
                                                "valid_formats": [
                                                    "forecast_predict",
                                                    "forecast_predict_peak",
                                                    "forecast_predict_offpeak",
                                                    "forecast_min",
                                                    "forecast_max",
                                                    "forecast_boundary_time",
                                                    "forecast_daily_slope",
                                                    "forecast_fit",
                                                    "forecast_vals"
                                                ],
                                                "description": "Timefilter for the historical data range used to calculate forecasts. Default is last 180 days.",
                                                "values": null
                                            },
                                            "predict_time": {
                                                "values": null,
                                                "valid_formats": [
                                                    "forecast_predict",
                                                    "forecast_predict_peak",
                                                    "forecast_predict_offpeak"
                                                ],
                                                "description": "Time to use for the forecast_predict, forecast_predict_peak or forecast_predict_offpeak values (e.g. now + 10d)",
                                                "title": "Predict Time"
                                            },
                                            "max": {
                                                "valid_formats": [
                                                    "forecast_predict",
                                                    "forecast_predict_peak",
                                                    "forecast_predict_offpeak",
                                                    "forecast_min",
                                                    "forecast_max",
                                                    "forecast_boundary_time",
                                                    "forecast_daily_slope",
                                                    "forecast_fit",
                                                    "forecast_vals"
                                                ],
                                                "values": null,
                                                "description": "Manually set upper boundary of feasible forecast value range",
                                                "title": "Maximum"
                                            },
                                            "is_cumulative": {
                                                "valid_formats": [
                                                    "forecast_predict",
                                                    "forecast_predict_peak",
                                                    "forecast_predict_offpeak",
                                                    "forecast_min",
                                                    "forecast_max",
                                                    "forecast_boundary_time",
                                                    "forecast_daily_change",
                                                    "forecast_fit",
                                                    "forecast_vals"
                                                ],
                                                "description": "Whether to return the sum of forecast values",
                                                "values": [
                                                    true,
                                                    false
                                                ],
                                                "title": "Is Cumulative"
                                            }
                                        },
                                        "description": "Forecast related input options"
                                    },
                                    "percentile": {
                                        "title": "Percentile",
                                        "values": null,
                                        "valid_formats": [
                                            "percentile"
                                        ],
                                        "description": "The value to use for the percentile format (between 0 and 100)"
                                    },
                                    "baseline": {
                                        "description": "Baseline and anomaly metric related input options",
                                        "values": {
                                            "percentile": {
                                                "description": "Baseline percentile to output",
                                                "valid_formats": [
                                                    "baseline_avg",
                                                    "baseline_compare",
                                                    "baseline_percent_compare",
                                                    "baseline"
                                                ],
                                                "default": 50,
                                                "values": null,
                                                "title": "Percentile"
                                            },
                                            "data_range": {
                                                "title": "Baseline History",
                                                "description": "Timefilter for the historical data range used to calculate baseline and anomaly metric. Default is last 180 days.",
                                                "valid_formats": [
                                                    "baseline_avg",
                                                    "baseline_compare",
                                                    "baseline_percent_compare",
                                                    "baseline",
                                                    "baseline_lwr",
                                                    "baseline_upr",
                                                    "anomaly_metric",
                                                    "anomaly_strength"
                                                ],
                                                "default": "range = now - 180d to now",
                                                "values": null
                                            },
                                            "lwr_percentile": {
                                                "title": "Lower Percentile",
                                                "description": "Baseline percentile to output for baseline lower bound",
                                                "valid_formats": [
                                                    "baseline_lwr"
                                                ],
                                                "default": 2.5,
                                                "values": null
                                            },
                                            "upr_percentile": {
                                                "valid_formats": [
                                                    "baseline_upr"
                                                ],
                                                "default": 97.5,
                                                "values": null,
                                                "description": "Baseline percentile to output for baseline upper bound",
                                                "title": "Upper Percentile"
                                            }
                                        }
                                    },
                                    "trendline": {
                                        "description": "Trendline related input options",
                                        "values": {
                                            "lwr_stddev": {
                                                "valid_formats": [
                                                    "trendline_lwr"
                                                ],
                                                "description": "The number of standard deviations to use for the trendline_lwr format",
                                                "values": null,
                                                "title": "Lower Standard Deviation"
                                            },
                                            "upr_stddev": {
                                                "title": "Upper Standard Deviation",
                                                "valid_formats": [
                                                    "trendline_upr"
                                                ],
                                                "description": "The number of standard deviations to use for the trendline_upr format",
                                                "values": null
                                            },
                                            "is_cumulative": {
                                                "description": "Whether to fit a trendline to the sum of the data values",
                                                "valid_formats": [
                                                    "trendline_fit",
                                                    "trendline_predict"
                                                ],
                                                "values": [
                                                    true,
                                                    false
                                                ],
                                                "title": "Is Cumulative"
                                            },
                                            "predict_time": {
                                                "title": "Predict Time",
                                                "valid_formats": [
                                                    "trendline_predict"
                                                ],
                                                "values": null,
                                                "description": "The time to use for the trendline_predict value"
                                            },
                                            "constrained": {
                                                "valid_formats": [
                                                    "trendline_start",
                                                    "trendline_finish",
                                                    "trendline_daily_change",
                                                    "trendline_change",
                                                    "trendline_percent_change",
                                                    "trendline_predict"
                                                ],
                                                "values": [
                                                    true,
                                                    false
                                                ],
                                                "default": true,
                                                "description": "Whether to use a constrained trendline",
                                                "title": "Constrained"
                                            }
                                        },
                                        "title": "Trendline"
                                    }
                                },
                                "description": "Additional input options for certain formats"
                            },
                            "timefmt": {
                                "description": "Format a timestamp into a human readable string. Format specifier is identical to strftime(3)",
                                "values": null
                            }
                        }
                    },
                    "ping_state": {
                        "title": "Ping State",
                        "description": "The current ping state of the device",
                        "polltype": "evt",
                        "interval": 60,
                        "datatype": "string",
                        "enum": {
                            "1": {
                                "label": "up",
                                "description": "Device is up"
                            },
                            "2": {
                                "label": "down",
                                "description": "Device is down"
                            }
                        },
                        "options": {
                            "formats": {
                                "description": "The valid data formats",
                                "values": {
                                    "avl_outTransitions": {
                                        "title": "Transitions out of states",
                                        "datatype": "integer",
                                        "description": "The number of transitions from a state that wasn't request to a requested state"
                                    },
                                    "avl_inTransitions": {
                                        "description": "The number of transitions from one of the requested states to a state not requested",
                                        "datatype": "integer",
                                        "title": "Transitions into states"
                                    },
                                    "avl_outTime": {
                                        "title": "Time not in states",
                                        "description": "The time the event has not been in any of the requested states",
                                        "datatype": "integer"
                                    },
                                    "avl_inTime": {
                                        "title": "Time in states",
                                        "datatype": "float",
                                        "description": "The time the event has been in any of the requested states"
                                    },
                                    "state_inTime": {
                                        "description": "The number of seconds that the current state has been active",
                                        "datatype": "integer",
                                        "title": "Time in current state"
                                    },
                                    "avl_outPercent": {
                                        "title": "Percent not in states",
                                        "description": "The percent of time the event has not been in any of the states",
                                        "datatype": "float"
                                    },
                                    "avl_inPercent": {
                                        "datatype": "float",
                                        "description": "The percent of time the event has been in any of the requested states",
                                        "title": "Percent in states"
                                    },
                                    "state_id": {
                                        "description": "The current state identifier of the event",
                                        "datatype": "integer",
                                        "title": "State ID"
                                    },
                                    "state_delta": {
                                        "title": "Time in previous state",
                                        "description": "The number of seconds to the previous record",
                                        "datatype": "integer"
                                    },
                                    "avl_totalTransitions": {
                                        "title": "Total transitions",
                                        "datatype": "integer",
                                        "description": "The total number of transition between all of the states"
                                    },
                                    "state_time": {
                                        "datatype": "time",
                                        "description": "The time of of the last transition",
                                        "title": "Time of last transition"
                                    },
                                    "poll": {
                                        "title": "Poll",
                                        "description": "Whether polling is enabled for the event",
                                        "datatype": "string"
                                    },
                                    "state": {
                                        "datatype": "string",
                                        "description": "The current state of the event",
                                        "title": "State"
                                    }
                                }
                            },
                            "states": {
                                "values": null,
                                "description": "Array of state names to use for the calculations"
                            }
                        }
                    },
                    "priv_method": {
                        "title": "SNMPv3 Privacy Method",
                        "description": "Privacy method for SNMPv3 devices",
                        "polltype": "cfg",
                        "datatype": "string"
                    },
                    "priv_pass": {
                        "title": "SNMPv3 Privacy Password",
                        "description": "Privacy password for SNMPv3 devices",
                        "polltype": "cfg",
                        "datatype": "string"
                    },
                    "retired": {
                        "title": "Retired",
                        "description": "The device has been Retired",
                        "polltype": "cfg",
                        "datatype": "string"
                    },
                    "snmpEngineID": {
                        "title": "SNMP Engine ID",
                        "description": "An SNMP engine's administratively-unique identifier",
                        "polltype": "cfg",
                        "datatype": "string"
                    },
                    "snmp_maxoid": {
                        "title": "SNMP Max OID",
                        "description": "Maximum number of oids to poll in a single request",
                        "polltype": "cfg",
                        "datatype": "integer"
                    },
                    "snmp_poll": {
                        "title": "SNMP Poll",
                        "description": "The SNMP polling status of the device",
                        "polltype": "cfg",
                        "datatype": "string"
                    },
                    "snmp_version": {
                        "title": "SNMP Version",
                        "description": "The SNMP version of the device",
                        "polltype": "cfg",
                        "datatype": "integer"
                    },
                    "sysContact": {
                        "title": "Contact",
                        "description": "The textual identification of the contact person for the entity",
                        "polltype": "cfg",
                        "datatype": "string"
                    },
                    "sysDescr": {
                        "title": "System Description",
                        "description": "A textual description of the entity",
                        "polltype": "cfg",
                        "datatype": "string"
                    },
                    "sysLocation": {
                        "title": "Location",
                        "description": "The physical location of the entity",
                        "polltype": "cfg",
                        "datatype": "string"
                    },
                    "sysName": {
                        "title": "System Name",
                        "description": "An administratively-assigned name for the entity",
                        "polltype": "cfg",
                        "datatype": "string"
                    },
                    "sysObjectID": {
                        "title": "Object ID",
                        "description": "The vendor's authoritative identification of the network management subsystem contained in the entity",
                        "polltype": "cfg",
                        "datatype": "string"
                    },
                    "sysServices": {
                        "title": "Services",
                        "description": "A value which indicates the set of services that the entity may potentially offer",
                        "polltype": "cfg",
                        "datatype": "integer"
                    },
                    "vendor": {
                        "title": "Vendor",
                        "description": "The vendor name for the device",
                        "polltype": "cfg",
                        "datatype": "string"
                    }
                },
                "commands": {
                    "add": {
                        "valid_fields": null,
                        "valid_data": {
                            "ipaddress": {
                                "required": true
                            },
                            "community": {
                                "required": false
                            },
                            "hostname": {
                                "required": false
                            },
                            "snmp_version": {
                                "required": false
                            },
                            "auth_method": {
                                "required": false
                            },
                            "auth_user": {
                                "required": false
                            },
                            "auth_pass": {
                                "required": false
                            },
                            "priv_method": {
                                "required": false
                            },
                            "priv_pass": {
                                "required": false
                            },
                            "context": {
                                "required": false
                            },
                            "snmp_poll": {
                                "required": false
                            },
                            "ping_poll": {
                                "required": false
                            },
                            "longitude": {
                                "required": false
                            },
                            "latitude": {
                                "required": false
                            }
                        }
                    },
                    "update": {
                        "valid_fields": {
                            "id": {
                                "required": false
                            },
                            "name": {
                                "required": false
                            },
                            "deviceid": {
                                "required": false
                            },
                            "idx": {
                                "required": false
                            },
                            "table": {
                                "required": false
                            },
                            "poll": {
                                "required": false
                            },
                            "auth_method": {
                                "required": false
                            },
                            "auth_pass": {
                                "required": false
                            },
                            "auth_user": {
                                "required": false
                            },
                            "community": {
                                "required": false
                            },
                            "context": {
                                "required": false
                            },
                            "custom_data_details": {
                                "required": false
                            },
                            "discover_getNext": {
                                "required": false
                            },
                            "discover_minimal": {
                                "required": false
                            },
                            "discover_snmpv1": {
                                "required": false
                            },
                            "hostname": {
                                "required": false
                            },
                            "ipaddress": {
                                "required": false
                            },
                            "latitude": {
                                "required": false
                            },
                            "longitude": {
                                "required": false
                            },
                            "manual_name": {
                                "required": false
                            },
                            "memorySize": {
                                "required": false
                            },
                            "mis": {
                                "required": false
                            },
                            "ping_dup": {
                                "required": false
                            },
                            "ping_lost1": {
                                "required": false
                            },
                            "ping_lost2": {
                                "required": false
                            },
                            "ping_lost3": {
                                "required": false
                            },
                            "ping_lost4": {
                                "required": false
                            },
                            "ping_outage": {
                                "required": false
                            },
                            "ping_poll": {
                                "required": false
                            },
                            "ping_rtt": {
                                "required": false
                            },
                            "ping_rtt_ms": {
                                "required": false
                            },
                            "ping_state": {
                                "required": false
                            },
                            "priv_method": {
                                "required": false
                            },
                            "priv_pass": {
                                "required": false
                            },
                            "retired": {
                                "required": false
                            },
                            "snmpEngineID": {
                                "required": false
                            },
                            "snmp_maxoid": {
                                "required": false
                            },
                            "snmp_poll": {
                                "required": false
                            },
                            "snmp_version": {
                                "required": false
                            },
                            "sysContact": {
                                "required": false
                            },
                            "sysDescr": {
                                "required": false
                            },
                            "sysLocation": {
                                "required": false
                            },
                            "sysName": {
                                "required": false
                            },
                            "sysObjectID": {
                                "required": false
                            },
                            "sysServices": {
                                "required": false
                            },
                            "vendor": {
                                "required": false
                            }
                        },
                        "valid_data": {
                            "poll": {
                                "required": false
                            },
                            "auth_method": {
                                "required": false
                            },
                            "auth_pass": {
                                "required": false
                            },
                            "auth_user": {
                                "required": false
                            },
                            "community": {
                                "required": false
                            },
                            "context": {
                                "required": false
                            },
                            "custom_data_details": {
                                "required": false
                            },
                            "discover_getNext": {
                                "required": false
                            },
                            "discover_minimal": {
                                "required": false
                            },
                            "discover_snmpv1": {
                                "required": false
                            },
                            "hostname": {
                                "required": false
                            },
                            "ipaddress": {
                                "required": false
                            },
                            "latitude": {
                                "required": false
                            },
                            "longitude": {
                                "required": false
                            },
                            "manual_name": {
                                "required": false
                            },
                            "mis": {
                                "required": false
                            },
                            "ping_outage": {
                                "required": false
                            },
                            "ping_poll": {
                                "required": false
                            },
                            "ping_state": {
                                "required": false
                            },
                            "priv_method": {
                                "required": false
                            },
                            "priv_pass": {
                                "required": false
                            },
                            "snmpEngineID": {
                                "required": false
                            },
                            "snmp_maxoid": {
                                "required": false
                            },
                            "snmp_poll": {
                                "required": false
                            },
                            "snmp_version": {
                                "required": false
                            },
                            "sysContact": {
                                "required": false
                            },
                            "sysDescr": {
                                "required": false
                            },
                            "sysLocation": {
                                "required": false
                            },
                            "sysName": {
                                "required": false
                            },
                            "sysObjectID": {
                                "required": false
                            },
                            "sysServices": {
                                "required": false
                            }
                        }
                    },
                    "delete": {
                        "valid_fields": {
                            "id": {
                                "required": false
                            },
                            "name": {
                                "required": false
                            },
                            "deviceid": {
                                "required": false
                            },
                            "idx": {
                                "required": false
                            },
                            "table": {
                                "required": false
                            },
                            "poll": {
                                "required": false
                            },
                            "auth_method": {
                                "required": false
                            },
                            "auth_pass": {
                                "required": false
                            },
                            "auth_user": {
                                "required": false
                            },
                            "community": {
                                "required": false
                            },
                            "context": {
                                "required": false
                            },
                            "custom_data_details": {
                                "required": false
                            },
                            "discover_getNext": {
                                "required": false
                            },
                            "discover_minimal": {
                                "required": false
                            },
                            "discover_snmpv1": {
                                "required": false
                            },
                            "hostname": {
                                "required": false
                            },
                            "ipaddress": {
                                "required": false
                            },
                            "latitude": {
                                "required": false
                            },
                            "longitude": {
                                "required": false
                            },
                            "manual_name": {
                                "required": false
                            },
                            "memorySize": {
                                "required": false
                            },
                            "mis": {
                                "required": false
                            },
                            "ping_dup": {
                                "required": false
                            },
                            "ping_lost1": {
                                "required": false
                            },
                            "ping_lost2": {
                                "required": false
                            },
                            "ping_lost3": {
                                "required": false
                            },
                            "ping_lost4": {
                                "required": false
                            },
                            "ping_outage": {
                                "required": false
                            },
                            "ping_poll": {
                                "required": false
                            },
                            "ping_rtt": {
                                "required": false
                            },
                            "ping_rtt_ms": {
                                "required": false
                            },
                            "ping_state": {
                                "required": false
                            },
                            "priv_method": {
                                "required": false
                            },
                            "priv_pass": {
                                "required": false
                            },
                            "retired": {
                                "required": false
                            },
                            "snmpEngineID": {
                                "required": false
                            },
                            "snmp_maxoid": {
                                "required": false
                            },
                            "snmp_poll": {
                                "required": false
                            },
                            "snmp_version": {
                                "required": false
                            },
                            "sysContact": {
                                "required": false
                            },
                            "sysDescr": {
                                "required": false
                            },
                            "sysLocation": {
                                "required": false
                            },
                            "sysName": {
                                "required": false
                            },
                            "sysObjectID": {
                                "required": false
                            },
                            "sysServices": {
                                "required": false
                            },
                            "vendor": {
                                "required": false
                            }
                        },
                        "valid_data": null
                    },
                    "get": {
                        "valid_fields": {
                            "id": {
                                "required": false
                            },
                            "name": {
                                "required": false
                            },
                            "deviceid": {
                                "required": false
                            },
                            "idx": {
                                "required": false
                            },
                            "table": {
                                "required": false
                            },
                            "poll": {
                                "required": false
                            },
                            "auth_method": {
                                "required": false
                            },
                            "auth_pass": {
                                "required": false
                            },
                            "auth_user": {
                                "required": false
                            },
                            "community": {
                                "required": false
                            },
                            "context": {
                                "required": false
                            },
                            "custom_data_details": {
                                "required": false
                            },
                            "discover_getNext": {
                                "required": false
                            },
                            "discover_minimal": {
                                "required": false
                            },
                            "discover_snmpv1": {
                                "required": false
                            },
                            "hostname": {
                                "required": false
                            },
                            "ipaddress": {
                                "required": false
                            },
                            "latitude": {
                                "required": false
                            },
                            "longitude": {
                                "required": false
                            },
                            "manual_name": {
                                "required": false
                            },
                            "memorySize": {
                                "required": false
                            },
                            "mis": {
                                "required": false
                            },
                            "ping_dup": {
                                "required": false
                            },
                            "ping_lost1": {
                                "required": false
                            },
                            "ping_lost2": {
                                "required": false
                            },
                            "ping_lost3": {
                                "required": false
                            },
                            "ping_lost4": {
                                "required": false
                            },
                            "ping_outage": {
                                "required": false
                            },
                            "ping_poll": {
                                "required": false
                            },
                            "ping_rtt": {
                                "required": false
                            },
                            "ping_rtt_ms": {
                                "required": false
                            },
                            "ping_state": {
                                "required": false
                            },
                            "priv_method": {
                                "required": false
                            },
                            "priv_pass": {
                                "required": false
                            },
                            "retired": {
                                "required": false
                            },
                            "snmpEngineID": {
                                "required": false
                            },
                            "snmp_maxoid": {
                                "required": false
                            },
                            "snmp_poll": {
                                "required": false
                            },
                            "snmp_version": {
                                "required": false
                            },
                            "sysContact": {
                                "required": false
                            },
                            "sysDescr": {
                                "required": false
                            },
                            "sysLocation": {
                                "required": false
                            },
                            "sysName": {
                                "required": false
                            },
                            "sysObjectID": {
                                "required": false
                            },
                            "sysServices": {
                                "required": false
                            },
                            "vendor": {
                                "required": false
                            }
                        },
                        "valid_data": null
                    },
                    "describe": {
                        "valid_fields": null,
                        "valid_data": null
                    }
                },
                "info": {
                    "tags": [],
                    "licenced": false,
                    "vendor": "Standard",
                    "category": "Device",
                    "inherited_by": [
                        "cdt_device_apic",
                        "cdt_device_freebsd"
                    ],
                    "inherits": null,
                    "allow_grouping": 1,
                    "allow_reporting": 1,
                    "allow_discovery": 0,
                    "poller": "snmp"
                },
                "allow_formula_fields": true,
                "links": {
                    "macLink": {
                        "title": "Link to MAC",
                        "object": "mac",
                        "default": 1
                    }
                },
                "global_field_options": {
                    "aggregation_format": {
                        "description": "Aggregation formats to apply when group_by option is provided",
                        "values": {
                            "first": {
                                "title": "First",
                                "description": "First value in the group (default)"
                            },
                            "last": {
                                "title": "Last",
                                "description": "Last value in the group"
                            },
                            "avg": {
                                "title": "Average",
                                "description": "Average of the values in the group"
                            },
                            "count": {
                                "title": "Count",
                                "description": "Number on non-null values in the group"
                            },
                            "count_all": {
                                "title": "Count (include NULL)",
                                "description": "Number of values in the group (including null values)"
                            },
                            "count_unique": {
                                "title": "Unique count",
                                "description": "Number of unique non-null values in the group"
                            },
                            "count_unique_all": {
                                "title": "Unique count (include NULL)",
                                "description": "Number of unique values in the group (including null values)"
                            },
                            "cat": {
                                "title": "Concatenate",
                                "description": "Concatenation of the values in the group"
                            },
                            "list": {
                                "title": "List",
                                "description": "Comma separated concatenation of the values in the group"
                            },
                            "list_unique": {
                                "title": "Unique List",
                                "description": "Comma separated concatenation of the unique values in the group"
                            },
                            "min": {
                                "title": "Minimum",
                                "description": "Minimum of the values in the group"
                            },
                            "max": {
                                "title": "Maximum",
                                "description": "Maximum of the values in the group"
                            },
                            "sum": {
                                "title": "Sum",
                                "description": "Sum of all values in the group (null if no valid values)"
                            },
                            "total": {
                                "title": "Total",
                                "description": "Sum of all values in the group (0 if no valid values)"
                            },
                            "median": {
                                "title": "Median",
                                "description": "Median of the values in the group"
                            },
                            "95th": {
                                "title": "95th percentile",
                                "description": "95th percentile of the values in the group"
                            },
                            "stddev": {
                                "title": "Standard deviation",
                                "description": "Standard deviation of the values in the group"
                            }
                        }
                    }
                }
            }
        ]
    },
    "links": [
        {
            "link": "/api/v2.1/cdt_device/describe",
            "rel": "self"
        },
        {
            "link": "/api/v2.1",
            "rel": "base"
        },
        {
            "link": "/api/v2.1/cdt_device",
            "rel": "collection"
        }
    ]
}
[top]

The Execute Endpoint (/api/v2.1/{resource}/execute)

The execute endpoint is used to run an execute command on a specific resource, currently this functionality is limited to:

  • the discover resource (/api/v2.1/discover/execute)
  • the config_build resource (/api/v2.1/config_build/execute)

[top]

GET

A GET request to a {resource}/execute endpoint will run the command associated with that resource.

The parameters that may be passed when sending a GET request depend upon the resource the execute is being run against.
For example, the valid parameters for running an execute against the discover resource are:

Parameters Type/Valid Values Description
getNext Boolean, defaults to false Discover using SNMP getNext. Only for use with mode=single.
snmpv3config Path The path to the configuration file containing details on the SNMPv3 devices to be added. Only for use with mode=snmpv3add
verbose Values:

  • 0 – least verbose
  • 1
  • 2
  • 3 – most verbose
Verbosity level to be used when outputting to the log file
ip IP address The IP address of the device to be discovered. Only for use with mode=single.
minimal Boolean, defaults to false Perform a minimal discovery on the specified device. A minimal discovery only walks the following tables:

  • SNMPv2-MIB.system
  • SNMP-FRAMEWORK-MIB.snmpEngine
  • IF-MIB.ifTable
  • IF-MIB.ifXTable


Only for use with mode=single

snmperrlog Boolean, defaults to false Enable SNMP error logging
device string The name of the device to rewalk. Only for use with mode=rewalk.
logfile Path, defaults to defaults to ~/nim/etc/discover.log The path to the discovery process log file ()
snmpv1 Boolean, defaults to false Force SNMPv1 collection. Only for use with mode=single
block Boolean, defaults to false If set to true, then the discovery process will not run if another discovery process is already in progress
mode Values:

  • hosts – discover by the Statseeker hosts file
  • ranges – discover by Statseeker ranges configuration
  • rewalk – rewalk the discovered network for changes
  • single – discover a single device
  • snmpv3add – add an SNMPv3 device
The mode of discovery to be used

[top]

Example: Discovering a Single Device

The device IP is 10.100.89.252.

cURLPythonRubyResponse

curl \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer myToken" \
	-X GET \
	"https://your.statseeker.server/api/v2.1/discover/execute/?mode=single&ip=10.100.89.252&verbose=0&links=none" 

# import requests for handling connection and encoding
import requests
import json
def do_request(server, query, user, pword):
    # Run auth request
    headers = { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' }
    url = f'https://{server}/ss-auth'
    authData = {'user': user, 'password': pword}
    resp = requests.post(url, headers=headers, data=authData, verify=False)
    headers['Content-Type'] = 'application/json'
    url = f'https://{server}/{query}'
    print(f'Get Auth Token: {resp.status_code}')
    if resp.status_code == 200:    
        # Authentication successful, Statseeker >= v5.5.4
        myToken = resp.json()
        headers['Authorization'] = f'Bearer {myToken["access_token"]}'
        resp = requests.get(url, headers=headers, verify=False)
    if resp.status_code == 401:
        print(f'Token auth failed: {resp.status_code}, trying basic auth')
        # Either Authentication was unsuccessful (Statseeker <  v5.5.4), or API set to use basic auth
        # Try basic auth
        resp = requests.get(url, headers=headers, auth=(user, pword), verify=False)
    return resp

# Statseeker Server IP
server = 'your.statseeker.server'
# credentials
user = 'api_user'
pword = 'user_password'
# API root endpoint
query = 'api/v2.1'
# specify target endpoint
query += '/discover/execute/'
# specify options
query += '?mode=single&ip=10.100.89.252&verbose=0'
query += '&indent=3&links=none'
# Run the request
resp = do_request(server, query, user, pword)
if resp.status_code == 200:
    print(resp.status_code)
    print(resp.json())
else:
    print(f'Error: {resp.status_code} {resp.reason}')


# install with: $ gem install rest-client
require "rest_client"
require "json"
require "base64"

def try_basic(server, query, user, pword)
	headers = {
		:content_type => "json"
	}
	url = "https://" + server + "/" + query
	headers["Authorization"] = "Basic " + Base64.encode64("#{user}:#{pword}")
	return RestClient::Request.execute(
		:method => :get,
		:url => url,
		:headers => headers,
		:verify_ssl => false
	)
end

def do_request(server, query, user, pword)
    # Run auth request
    headers = {
        :content_type => "application/x-www-form-urlencoded"
    }
    url = "https://" + server + "/ss-auth"
    authData = {
       :user => user,
       :password => pword
    }
    begin
        resp = RestClient::Request.execute(
            :method => :post,
            :url => url,
            :headers => headers,
            :verify_ssl => false,
            :payload => authData
        )
    rescue RestClient::Unauthorized
		# bad credentials or Statseeker not v5.5.4 or higher
        try_basic(server, query, user, pword)
    else
        # Authentication successful. Statseeker at least v5.5.4
        headers = {
			:content_type => "application/json"
		}	
        url = "https://" + server + "/" + query
        rdata = JSON.parse(resp)
        headers["Authorization"] = "Bearer " + rdata.fetch("access_token")
        return RestClient::Request.execute(
            :method => :get,
            :url => url,
            :headers => headers,
            :verify_ssl => false,
        )
    end
	rescue RestClient::Unauthorized
		# Statseeker = v5.5.4 but configured for basic auth
        try_basic(server, query, user, pword)
end
# Statseeker Server IP
$server = 'your.statseeker.server'
# api user credentials
$user = 'api_user'
$pword = 'user_password'
# api root endpoint
$query = 'api/v2.1'
# specify target endpoint
$query += '/user/describe'
# specify options
$query += "/?mode=single&ip=10.100.89.252&verbose=0"
# optional response formatting
$query += '&indent=3&links=none'
# Run the request
resp = do_request($server, $query, $user, $pword)
puts "#{resp.to_str}"


{
    "version": "2.1",
    "revision": "13",
    "info": "The Statseeker RESTful API",
    "data": {
        "success": true,
        "errmsg": "ok",
        "time": 1575867957,
        "objects": [
            {
                "type": "discover",
                "sequence": 1,
                "status": {
                    "success": true,
                    "errcode": 0
                }
            }
        ]
    }
}

Example: Discovering an SNMPv3 Device
  • Requires that the SNMPv3 configuration details for the device\s be provided in a CSV format – the syntax for this is the same as when adding multiple SNMPv3 devices via the Admin Tool, see Adding SNMPv3 Devices – Multiple Device Syntax for details
  • This file should be located on the Statseeker server in a location accessible by the statseeker user account
  • Depending on your API version, the last row of the file may require a trailing ‘newline’
cURLPythonRubyResponse

curl \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer myToken" \
	-X GET \
	"https://your.statseeker.server/api/v2.1/discover/execute/?mode=snmpv3add&snmpv3config=/path/to/config.csv&verbose=0&links=none" 

# import requests for handling connection and encoding
import requests
import json
def do_request(server, query, user, pword):
    # Run auth request
    headers = { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' }
    url = f'https://{server}/ss-auth'
    authData = {'user': user, 'password': pword}
    resp = requests.post(url, headers=headers, data=authData, verify=False)
    headers['Content-Type'] = 'application/json'
    url = f'https://{server}/{query}'
    print(f'Get Auth Token: {resp.status_code}')
    if resp.status_code == 200:    
        # Authentication successful, Statseeker >= v5.5.4
        myToken = resp.json()
        headers['Authorization'] = f'Bearer {myToken["access_token"]}'
        resp = requests.get(url, headers=headers, verify=False)
    if resp.status_code == 401:
        print(f'Token auth failed: {resp.status_code}, trying basic auth')
        # Either Authentication was unsuccessful (Statseeker <  v5.5.4), or API set to use basic auth
        # Try basic auth
        resp = requests.get(url, headers=headers, auth=(user, pword), verify=False)
    return resp

# Statseeker Server IP
server = 'your.statseeker.server'
# credentials
user = 'api_user'
pword = 'user_password'
# API root endpoint
query = 'api/v2.1'
# specify target endpoint
query += '/discover/execute/'
# specify options
query += '?mode=snmpv3add&snmpv3config=/path/to/config.csv&verbose=0'
query += '&indent=3&links=none'
# Run the request
resp = do_request(server, query, user, pword)
if resp.status_code == 200:
    print(resp.status_code)
    print(resp.json())
else:
    print(f'Error: {resp.status_code} {resp.reason}')


# install with: $ gem install rest-client
require "rest_client"
require "json"
require "base64"

def try_basic(server, query, user, pword)
	headers = {
		:content_type => "json"
	}
	url = "https://" + server + "/" + query
	headers["Authorization"] = "Basic " + Base64.encode64("#{user}:#{pword}")
	return RestClient::Request.execute(
		:method => :get,
		:url => url,
		:headers => headers,
		:verify_ssl => false
	)
end

def do_request(server, query, user, pword)
    # Run auth request
    headers = {
        :content_type => "application/x-www-form-urlencoded"
    }
    url = "https://" + server + "/ss-auth"
    authData = {
       :user => user,
       :password => pword
    }
    begin
        resp = RestClient::Request.execute(
            :method => :post,
            :url => url,
            :headers => headers,
            :verify_ssl => false,
            :payload => authData
        )
    rescue RestClient::Unauthorized
		# bad credentials or Statseeker not v5.5.4 or higher
        try_basic(server, query, user, pword)
    else
        # Authentication successful. Statseeker at least v5.5.4
        headers = {
			:content_type => "application/json"
		}	
        url = "https://" + server + "/" + query
        rdata = JSON.parse(resp)
        headers["Authorization"] = "Bearer " + rdata.fetch("access_token")
        return RestClient::Request.execute(
            :method => :get,
            :url => url,
            :headers => headers,
            :verify_ssl => false,
        )
    end
	rescue RestClient::Unauthorized
		# Statseeker = v5.5.4 but configured for basic auth
        try_basic(server, query, user, pword)
end
# Statseeker Server IP
$server = 'your.statseeker.server'
# api user credentials
$user = 'api_user'
$pword = 'user_password'
# api root endpoint
$query = 'api/v2.1'
# specify target endpoint
$query += '/user/describe'
# specify options
$query += "?mode=snmpv3add&snmpv3config=/path/to/config.csv&verbose=0"
# optional response formatting
$query += '&indent=3&links=none'
# Run the request
resp = do_request($server, $query, $user, $pword)
puts "#{resp.to_str}"


{
    "version": "2.1",
    "revision": "13",
    "info": "The Statseeker RESTful API",
    "data": {
        "success": true,
        "errmsg": "ok",
        "time": 1575867957,
        "objects": [
            {
                "type": "discover",
                "sequence": 1,
                "status": {
                    "success": true,
                    "errcode": 0
                }
            }
        ]
    }
}
[top]

ID Endpoint (/api/v2.1/{resource}/{id})

The ID endpoint is used to run queries on a specific resource.

[top]

GET

The parameters that may be passed when sending a GET request.

Parameters Type/Valid Values Description
fields A comma separated list of field names
E.g.fields=id,name,location
The list of fields that will be returned in the response. This parameter will be ignored if fields_adv is also specified.
fields_adv A JSON string detailing the fields to be returned
E.g.fields_adv={“Device Name”:{“field”:”name”}, “IP”:{“field”:”ipaddress”},”Location”:{“field”:”sysLocation”},”SNMP Polling”:{“field”:”snmp_poll”,”filter”:{“query”:”=\u0027off\u0027″}}}
The list of fields that will be returned in the response
interval positive integer
E.g.interval=300
The polling interval to be applied to all timeseries metrics specified in the fields parameter. When not specified, the default polling interval of 60 seconds is used.
limit positive integer
E.g.limit=100
The number of items to return per ‘page’ of the response, see Pagination for details. The API will automatically paginate response data with a default limit=50.
offset positive integer
E.g.offset=100
The number of result items to skip, see Pagination for details. The API will automatically paginate response data with a default offset={limit}.
groups A comma separated list of group names or group IDs A list of groups to be used to filter the response data, only data associated with members of the specified groups will be returned
grouping_mode
  • and
  • or
The mode to use when processing multiple values in the group parameter
filter An SQL filter string
E.g.“SNMP Polling”:{“field”:”snmp_poll”,”filter”:{“query”:”=\u0027off\u0027″}}
A filter to be applied to the response data


When the fields parameter has been specified, the following additional parameters may be used.

Parameters Type/Valid Values Description
{field}_field string A user defined variable name followed by a valid field name for the resource.

E.g.yesterday_RxUtil

See Named Fields for more information and examples.
{field}_formats Comma separated list, see Timeseries Data: Stats, Formats & Options The formats to request from the API for the given field, required for timeseries data fields

Note: a global formats key (formats=) may also be used to apply the same values to all timeseries metrics specified in fields
{field}_filter string The filter to apply to the given field
{field}_filter_format string The format to use for the filter, required for timeseries data fields
{field}_interval integer The polling interval (in seconds) to use for the specified field. When used, a field-specific timefilter for the specified field must also also be used.

Note: when not specified, the default interval of 60 seconds is used. A global interval key (interval=) may also be used to apply the same values to all timeseries metrics specified in fields
{field}_link string A user-defined field (i.e. named field), used in conjunction with {field}_field and {field}_object to define a link to a specific field-level endpoint.
{field}_object string An API Resource level endpoint (e.g. cdt_device), used in conjunction with {field}_field and {field}_link to define a link to a specific field-level endpoint.
{field}_timefilter string The timefilter to use for the given field, required for timeseries data fields.

Note: a global timefilter key (timefilter=) may also be used to apply the same values to all timeseries metrics specified in fields
{field}_tz string An alternate timezone to use for the {field}_timefilter.

All timefilters use the Statseeker server’s timezone unless an override is specified by supplying {field}_tz.

Note: a global timezone key (tz=) may also be used to apply the same values to all timeseries metrics specified in fields
{field}_sort Comma separated list specifying the sort hierarchy and direction, in the following format:{field}_sort={rank}{direction} and for Timeseries data:{field}_sort={rank}{direction}{format}
E.g.name_sort=1,asc
RxUtil_sort=1,desc,avg
{field}_stats Comma separated list, see Timeseries Data: Stats, Formats & Options The stats to use for the given field
{field}_aggregation_format One of:

Format Description
95th The 95th percentile of the values
avg The average of the values
cat Concatenation of the values. Not supported for non-scalar formats such as vals
count The number of rows that match, and have a non-null value
count_all The number of rows that match, including NULL values
first The first matching value
last The last matching value
list Concatenate values as per the cat format, but return the output as comma separated list of values
max The maximum value
median The median value
min The minimum value
stddev The standard deviation value
sum The sum of all values
total Similar to sum, but returns 0 instead of NULL if there are only NULL values in the data being aggregated
The aggregation format to use for the specified field

Note: using aggregation, the following rules apply:

  • When the aggregated data is a number – ignore all null values and return the aggregated value required based on non-null values only
  • When the aggregated data is NOT a number – attempt to convert all values to a number prior to aggregation. Any instance of null will result in the aggregated value being returned as null.

[top]

Example: Retrieving Details on a Device

Return specified details on a device with a specified ID. The details I am going to retrieve are:

  • name
  • id
  • community
  • ipaddress
  • snmp_version
cURLPythonRubyResponse

curl \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer myToken" \
	-X GET \
	"https://your.statseeker.server/api/v2.1/cdt_device/<DEVICE ID>/?fields=name,id,community,ipaddress,snmp_version&indent=3" 

# import requests for handling connection and encoding
import requests
import json
def do_request(server, query, user, pword):
    # Run auth request
    headers = { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' }
    url = f'https://{server}/ss-auth'
    authData = {'user': user, 'password': pword}
    resp = requests.post(url, headers=headers, data=authData, verify=False)
    headers['Content-Type'] = 'application/json'
    url = f'https://{server}/{query}'
    print(f'Get Auth Token: {resp.status_code}')
    if resp.status_code == 200:    
        # Authentication successful, Statseeker >= v5.5.4
        myToken = resp.json()
        headers['Authorization'] = f'Bearer {myToken["access_token"]}'
        resp = requests.get(url, headers=headers, verify=False)
    if resp.status_code == 401:
        print(f'Token auth failed: {resp.status_code}, trying basic auth')
        # Either Authentication was unsuccessful (Statseeker <  v5.5.4), or API set to use basic auth
        # Try basic auth
        resp = requests.get(url, headers=headers, auth=(user, pword), verify=False)
    return resp
# Statseeker Server IP
server = 'your.statseeker.server'
# credentials
user = 'api_user'
pword = 'user_password'
# API root endpoint
query = 'api/v2.1'
# specify target endpoint
query += '/cdt_device/<DEVICE ID>'
# specify fields to be returned
query += '/?fields=name,id,community,ipaddress,snmp_version'
# optional response formatting
query += '&indent=3&links=none'
# Run the request
resp = do_request(server, query, user, pword)
if resp.status_code == 200:
    print(resp.status_code)
    print(resp.json())
else:
    print(f'Error: {resp.status_code} {resp.reason}')


# install with: $ gem install rest-client
require "rest_client"
require "json"
require "base64"

def try_basic(server, query, user, pword)
	headers = {
		:content_type => "json"
	}
	url = "https://" + server + "/" + query
	headers["Authorization"] = "Basic " + Base64.encode64("#{user}:#{pword}")
	return RestClient::Request.execute(
		:method => :get,
		:url => url,
		:headers => headers,
		:verify_ssl => false
	)
end

def do_request(server, query, user, pword)
    # Run auth request
    headers = {
        :content_type => "application/x-www-form-urlencoded"
    }
    url = "https://" + server + "/ss-auth"
    authData = {
       :user => user,
       :password => pword
    }
    begin
        resp = RestClient::Request.execute(
            :method => :post,
            :url => url,
            :headers => headers,
            :verify_ssl => false,
            :payload => authData
        )
    rescue RestClient::Unauthorized
		# bad credentials or Statseeker not v5.5.4 or higher
        try_basic(server, query, user, pword)
    else
        # Authentication successful. Statseeker at least v5.5.4
        headers = {
			:content_type => "application/json"
		}	
        url = "https://" + server + "/" + query
        rdata = JSON.parse(resp)
        headers["Authorization"] = "Bearer " + rdata.fetch("access_token")
        return RestClient::Request.execute(
            :method => :get,
            :url => url,
            :headers => headers,
            :verify_ssl => false,
        )
    end
	rescue RestClient::Unauthorized
		# Statseeker = v5.5.4 but configured for basic auth
        try_basic(server, query, user, pword)
end
# Statseeker Server IP
$server = 'your.statseeker.server'
# api user credentials
$user = 'api_user'
$pword = 'user_password'
# api root endpoint
$query = 'api/v2.1'
# specify target endpoint
$query += '/cdt_device/<DEVICE ID>'
# specify fields to be returned
$query += '/?fields=name,id,community,ipaddress,snmp_version'
# optional response formatting
$query += '&indent=3&links=none'
# Run the request
resp = do_request($server, $query, $user, $pword)
puts "#{resp.to_str}"



{
    "version": "2.1",
    "revision": "13",
    "info": "The Statseeker RESTful API",
    "data": {
        "success": true,
        "errmsg": "ok",
        "time": 1623636846,
        "objects": [
            {
                "type": "cdt_device",
                "sequence": 0,
                "status": {
                    "success": true,
                    "errcode": 0
                },
                "data_total": 1,
                "data": [
                    {
                        "name": "Chicago-srv1",
                        "id": <DEVICE ID>,
                        "community": "public",
                        "ipaddress": "10.100.46.11",
                        "snmp_version": 2
                    }
                ]
            }
        ]
    }
}
[top]

PUT

The PUT request can be used to update the fields associated with the specified resource. Not all fields contained within a specific resource may be updated, use the /describe endpoint to view the requirements for a given resource.
[top]

Example: Updating a Group Name
cURLPythonRubyResponse

curl \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer myToken" \
	-X PUT \
	"https://your.statseeker.server/api/v2.1/group/<GROUP ID>/?indent=3" \
	-d '{"data":[{"name":"<NEW NAME>"}]}' 

# import requests for handling connection and encoding
import requests
import json
def do_request(server, query, user, pword, reqData):
    # Run auth request
    headers = { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' }
    url = f'https://{server}/ss-auth'
    authData = {'user': user, 'password': pword}
    resp = requests.post(url, headers=headers, data=authData, verify=False)
    headers['Content-Type'] = 'application/json'
    url = f'https://{server}/{query}'
    print(f'Get Auth Token: {resp.status_code}')
    if resp.status_code == 200:    
        # Authentication successful, Statseeker >= v5.5.4
        myToken = resp.json()
        headers['Authorization'] = f'Bearer {myToken["access_token"]}'
        resp = requests.put(url, headers=headers, data=reqData, verify=False)
    if resp.status_code == 401:
        print(f'Token auth failed: {resp.status_code}, trying basic auth')
        # Either Authentication was unsuccessful (Statseeker <  v5.5.4), or API set to use basic auth
        # Try basic auth
        resp = requests.put(url, headers=headers, auth=(user, pword), data=reqData, verify=False)
    return resp

# Statseeker Server IP
server = 'your.statseeker.server'
# credentials
user = 'api_user'
pword = 'user_password'
# API root endpoint
query = 'api/v2.1'
# specify target endpoint
query += '/group/<GROUP ID>'
# optional response formatting
query += '/?indent=3&links=none'
# data
reqData = json.dumps({"data":[{"name":"<NEW NAME>"}]})
# Run the request
resp = do_request(server, query, user, pword, reqData)
if resp.status_code == 200:
    print(resp.status_code)
    print(resp.json())
else:
    print(f'Error: {resp.status_code} {resp.reason}')



# install with: $ gem install rest-client
require "rest_client"
require "json"
require "base64"

def try_basic(server, query, user, pword, reqData)
	headers = {
		:content_type => "application/json"
	}
	url = "https://" + server + "/" + query
	headers["Authorization"] = "Basic " + Base64.encode64("#{user}:#{pword}")
	return RestClient::Request.execute(
		:method => :put,
		:url => url,
		:headers => headers,
		:verify_ssl => false,
		:payload => reqData
	)
end

def do_request(server, query, user, pword, reqData)
    # Run auth request
    headers = {
        :content_type => "application/x-www-form-urlencoded"
    }
    url = "https://" + server + "/ss-auth"
    authData = {
       :user => user,
       :password => pword
    }
    begin
        resp = RestClient::Request.execute(
            :method => :post,
            :url => url,
            :headers => headers,
            :verify_ssl => false,
            :payload => authData
        )
    rescue RestClient::Unauthorized
		# bad credentials or Statseeker not v5.5.4 or higher
        try_basic(server, query, user, pword, reqData)
    else		
        # Authentication successful. Statseeker at least v5.5.4
		headers = {
		:content_type => "application/json"
		}	
        url = "https://" + server + "/" + query
        rdata = JSON.parse(resp)
        headers["Authorization"] = "Bearer " + rdata.fetch("access_token")
        return RestClient::Request.execute(
			:method => :put,
			:url => url,
			:headers => headers,
			:verify_ssl => false,
			:payload => reqData
        )
    end
	rescue RestClient::Unauthorized
		# Statseeker = v5.5.4 but configured for basic auth
        try_basic(server, query, user, pword, reqData)
end
# Statseeker Server IP
$server = 'your.statseeker.server'
# api user credentials
$user = 'api_user'
$pword = 'user_password'
# api root endpoint
$query = 'api/v2.1'
# specify target endpoint
$query += '/group/<GROUP ID>'
# optional response formatting
$query += '/?indent=3&links=none'
# configure payload
$reqData = '{"data":[{"name":"<NEW NAME>"}]}'
# Run the request
resp = do_request($server, $query, $user, $pword, $reqData)
puts "#{resp.to_str}"



{
   "version":"2.1",
   "revision":"11",
   "info":"The Statseeker RESTful API",
   "data":{
      "success":true,
      "errmsg":"ok",
      "time":1623637436
   }
}
[top]

DELETE

The DELETE request can be used to delete the specified resource.

[top]

Example: Deleting a Group
cURLPythonRubyResponse

curl \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer myToken" \
	-X DELETE \
	"https://your.statseeker.server/api/v2.1/group/<GROUP ID>/?indent=3"

# import requests for handling connection and encoding
import requests
import json
def do_request(server, query, user, pword, reqData):
    # Run auth request
    headers = { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' }
    url = f'https://{server}/ss-auth'
    authData = {'user': user, 'password': pword}
    resp = requests.post(url, headers=headers, data=authData, verify=False)
    headers['Content-Type'] = 'application/json'
    url = f'https://{server}/{query}'
    print(f'Get Auth Token: {resp.status_code}')
    if resp.status_code == 200:    
        # Authentication successful, Statseeker >= v5.5.4
        myToken = resp.json()
        headers['Authorization'] = f'Bearer {myToken["access_token"]}'
        resp = requests.delete(url, headers=headers, data=reqData, verify=False)
    if resp.status_code == 401:
        print(f'Token auth failed: {resp.status_code}, trying basic auth')
        # Either Authentication was unsuccessful (Statseeker <  v5.5.4), or API set to use basic auth
        # Try basic auth
        resp = requests.delete(url, headers=headers, auth=(user, pword), data=reqData, verify=False)
    return resp

# Statseeker Server IP
server = 'your.statseeker.server'
# credentials
user = 'api_user'
pword = 'user_password'
# API root endpoint
query = 'api/v2.1'
# specify target endpoint
query += '/group/<GROUP ID>'
# optional response formatting
query += '/?indent=3&links=none'
# data
# Run the request
resp = do_request(server, query, user, pword)
if resp.status_code == 200:
    print(resp.status_code)
    print(resp.json())
else:
    print(f'Error: {resp.status_code} {resp.reason}') 


# install with: $ gem install rest-client
require "rest_client"
require "json"
require "base64"

def try_basic(server, query, user, pword, reqData)
	headers = {
		:content_type => "application/json"
	}
	url = "https://" + server + "/" + query
	headers["Authorization"] = "Basic " + Base64.encode64("#{user}:#{pword}")
	return RestClient::Request.execute(
		:method => :delete,
		:url => url,
		:headers => headers,
		:verify_ssl => false,
		:payload => reqData
	)
end

def do_request(server, query, user, pword, reqData)
    # Run auth request
    headers = {
        :content_type => "application/x-www-form-urlencoded"
    }
    url = "https://" + server + "/ss-auth"
    authData = {
       :user => user,
       :password => pword
    }
    begin
        resp = RestClient::Request.execute(
            :method => :post,
            :url => url,
            :headers => headers,
            :verify_ssl => false,
            :payload => authData
        )
    rescue RestClient::Unauthorized
		# bad credentials or Statseeker not v5.5.4 or higher
        try_basic(server, query, user, pword, reqData)
    else		
        # Authentication successful. Statseeker at least v5.5.4
		headers = {
		:content_type => "application/json"
		}	
        url = "https://" + server + "/" + query
        rdata = JSON.parse(resp)
        headers["Authorization"] = "Bearer " + rdata.fetch("access_token")
        return RestClient::Request.execute(
			:method => :delete,
			:url => url,
			:headers => headers,
			:verify_ssl => false,
			:payload => reqData
        )
    end
	rescue RestClient::Unauthorized
		# Statseeker = v5.5.4 but configured for basic auth
        try_basic(server, query, user, pword, reqData)
end
# Statseeker Server IP
$server = 'your.statseeker.server'
# api user credentials
$user = 'api_user'
$pword = 'user_password'
# api root endpoint
$query = 'api/v2.1'
# specify target endpoint
$query += '/group/<GROUP ID>'
# optional response formatting
$query += '/?indent=3&links=none'
# Run the request
resp = do_request($server, $query, $user, $pword)
puts "#{resp.to_str}"


{
   "version":"2.1",
   "revision":"11",
   "info":"The Statseeker RESTful API",
   "data":{
      "success":true,
      "errmsg":"ok",
      "time":1623637436
   }
}
[top]

Field Endpoint (/api/v2.1/{resource}/{id}/{field})

The Field endpoint is used to run queries on a specific field within a specified resource, use the /describe endpoint to view the field restrictions for a given resource.

[top]

GET

The parameters that may be passed when sending a GET request behave exactly like the {field}_* parameters for the Resource and ID endpoints. When targeting timeseries metrics, the following parameters may be specified.

Parameters Type/Valid Values Description
formats Comma separated list, see Timeseries Data: Stats, Formats & Options The formats to request from the API for the given field, required for timeseries data fields

Note: a global formats key (formats=) may also be used to apply the same values to all timeseries metrics specified in fields
filter string The filter to apply to the given field
filter_format string The format to use for the filter, required for the timeseries data field
interval integer The polling interval (in seconds) to use for the specified field.

Note: when not specified, the default interval of 60 seconds is used.
timefilter string The timefilter to use for the field
tz string An alternate timezone to use for the timefilter.

All timefilters use the Statseeker server’s timezone unless an override is specified
stats Comma separated list, see Timeseries Data: Stats, Formats & Options The stats to use for the given field

[top]

Example: Returning a User’s Time Zone
cURLPythonRubyResponse

curl \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer myToken" \
	-X GET \
	"https://your.statseeker.server/api/v2.1/user/<USER ID>/tz/?indent=3"

# import requests for handling connection and encoding
import requests
import json
def do_request(server, query, user, pword):
    # Run auth request
    headers = { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' }
    url = f'https://{server}/ss-auth'
    authData = {'user': user, 'password': pword}
    resp = requests.post(url, headers=headers, data=authData, verify=False)
    headers['Content-Type'] = 'application/json'
    url = f'https://{server}/{query}'
    print(f'Get Auth Token: {resp.status_code}')
    if resp.status_code == 200:    
        # Authentication successful, Statseeker >= v5.5.4
        myToken = resp.json()
        headers['Authorization'] = f'Bearer {myToken["access_token"]}'
        resp = requests.get(url, headers=headers, verify=False)
    if resp.status_code == 401:
        print(f'Token auth failed: {resp.status_code}, trying basic auth')
        # Either Authentication was unsuccessful (Statseeker <  v5.5.4), or API set to use basic auth
        # Try basic auth
        resp = requests.get(url, headers=headers, auth=(user, pword), verify=False)
    return resp

# Statseeker Server IP
server = 'your.statseeker.server'
# credentials
user = 'api_user'
pword = 'user_password'
# API root endpoint
query = 'api/v2.1'
# specify target endpoint
query += '/user/<USER ID>/tz'
# optional response formatting
query += '/?indent=3&links=none'
# Run the request
resp = do_request(server, query, user, pword)
if resp.status_code == 200:
    print(resp.status_code)
    print(resp.json())
else:
    print(f'Error: {resp.status_code} {resp.reason}') 


# install with: $ gem install rest-client
require "rest_client"
require "json"
require "base64"

def try_basic(server, query, user, pword)
	headers = {
		:content_type => "json"
	}
	url = "https://" + server + "/" + query
	headers["Authorization"] = "Basic " + Base64.encode64("#{user}:#{pword}")
	return RestClient::Request.execute(
		:method => :get,
		:url => url,
		:headers => headers,
		:verify_ssl => false
	)
end

def do_request(server, query, user, pword)
    # Run auth request
    headers = {
        :content_type => "application/x-www-form-urlencoded"
    }
    url = "https://" + server + "/ss-auth"
    authData = {
       :user => user,
       :password => pword
    }
    begin
        resp = RestClient::Request.execute(
            :method => :post,
            :url => url,
            :headers => headers,
            :verify_ssl => false,
            :payload => authData
        )
    rescue RestClient::Unauthorized
		# bad credentials or Statseeker not v5.5.4 or higher
        try_basic(server, query, user, pword)
    else
        # Authentication successful. Statseeker at least v5.5.4
        headers = {
			:content_type => "application/json"
		}	
        url = "https://" + server + "/" + query
        rdata = JSON.parse(resp)
        headers["Authorization"] = "Bearer " + rdata.fetch("access_token")
        return RestClient::Request.execute(
            :method => :get,
            :url => url,
            :headers => headers,
            :verify_ssl => false,
        )
    end
	rescue RestClient::Unauthorized
		# Statseeker = v5.5.4 but configured for basic auth
        try_basic(server, query, user, pword)
end
# Statseeker Server IP
$server = 'your.statseeker.server'
# api user credentials
$user = 'api_user'
$pword = 'user_password'
# api root endpoint
$query = 'api/v2.1'
# specify target endpoint
$query += '/user/<USER ID>/tz'
# optional response formatting
$query += '/?indent=3&links=none'
# Run the request
resp = do_request($server, $query, $user, $pword)
puts "#{resp.to_str}"


{
   "version":"2.1",
   "revision":"11",
   "info":"The Statseeker RESTful API",
   "data":{
      "success":true,
      "errmsg":"ok",
      "time":1623638836,
      "objects":[
         {
            "type":"user",
            "sequence":0,
            "status":{
               "success":true,
               "errcode":0
            },
            "data_total":1,
            "data":[
               {
                  "tz":"Australia/Brisbane",
                  "id":<USER ID>
               }
            ]
         }
      ]
   }
}
[top]

PUT

The PUT request can be used to update the specified field. Not all fields contained within a specific resource may be updated, use the /describe endpoint to view the restrictions for a given resource. The data object must contain a value key containing the new value/s to be set for the field.
[top]

Example: Updating a User’s Time Zone
cURLPythonRubyResponse

curl \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer myToken" \
	-X PUT \
	"https://your.statseeker.server/api/v2.1/user/<USER ID>/tz/?indent=3" \
	-d '{"value":"Europe/Paris"}'

# import requests for handling connection and encoding
import requests
import json
def do_request(server, query, user, pword, reqData):
    # Run auth request
    headers = { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' }
    url = f'https://{server}/ss-auth'
    authData = {'user': user, 'password': pword}
    resp = requests.post(url, headers=headers, data=authData, verify=False)
    headers['Content-Type'] = 'application/json'
    url = f'https://{server}/{query}'
    print(f'Get Auth Token: {resp.status_code}')
    if resp.status_code == 200:    
        # Authentication successful, Statseeker >= v5.5.4
        myToken = resp.json()
        headers['Authorization'] = f'Bearer {myToken["access_token"]}'
        resp = requests.put(url, headers=headers, data=reqData, verify=False)
    if resp.status_code == 401:
        print(f'Token auth failed: {resp.status_code}, trying basic auth')
        # Either Authentication was unsuccessful (Statseeker <  v5.5.4), or API set to use basic auth
        # Try basic auth
        resp = requests.put(url, headers=headers, auth=(user, pword), data=reqData, verify=False)
    return resp

# Statseeker Server IP
server = 'your.statseeker.server'
# credentials
user = 'api_user'
pword = 'user_password'
# API root endpoint
query = 'api/v2.1'
# specify target endpoint
query += '/user/<USER ID>/tz'
# optional response formatting
query += '/?indent=3&links=none'
# data
reqData = json.dumps({"value":"Europe/Paris"})
# Run the request
resp = do_request(server, query, user, pword, reqData)
if resp.status_code == 200:
    print(resp.status_code)
    print(resp.json())
else:
    print(f'Error: {resp.status_code} {resp.reason}')


# install with: $ gem install rest-client
require "rest_client"
require "json"
require "base64"

def try_basic(server, query, user, pword, reqData)
	headers = {
		:content_type => "application/json"
	}
	url = "https://" + server + "/" + query
	headers["Authorization"] = "Basic " + Base64.encode64("#{user}:#{pword}")
	return RestClient::Request.execute(
		:method => :put,
		:url => url,
		:headers => headers,
		:verify_ssl => false,
		:payload => reqData
	)
end

def do_request(server, query, user, pword, reqData)
    # Run auth request
    headers = {
        :content_type => "application/x-www-form-urlencoded"
    }
    url = "https://" + server + "/ss-auth"
    authData = {
       :user => user,
       :password => pword
    }
    begin
        resp = RestClient::Request.execute(
            :method => :post,
            :url => url,
            :headers => headers,
            :verify_ssl => false,
            :payload => authData
        )
    rescue RestClient::Unauthorized
		# bad credentials or Statseeker not v5.5.4 or higher
        try_basic(server, query, user, pword, reqData)
    else		
        # Authentication successful. Statseeker at least v5.5.4
		headers = {
		:content_type => "application/json"
		}	
        url = "https://" + server + "/" + query
        rdata = JSON.parse(resp)
        headers["Authorization"] = "Bearer " + rdata.fetch("access_token")
        return RestClient::Request.execute(
			:method => :put,
			:url => url,
			:headers => headers,
			:verify_ssl => false,
			:payload => reqData
        )
    end
	rescue RestClient::Unauthorized
		# Statseeker = v5.5.4 but configured for basic auth
        try_basic(server, query, user, pword, reqData)
end
# Statseeker Server IP
$server = 'your.statseeker.server'
# api user credentials
$user = 'api_user'
$pword = 'user_password'
# api root endpoint
$query = 'api/v2.1'
# specify target endpoint
$query += '/user/<USER ID>/tz'
# optional response formatting
$query += '/?indent=3&links=none'
# configure payload
$reqData = '{"value":"Europe/Paris"}'
# Run the request
resp = do_request($server, $query, $user, $pword, $reqData)
puts "#{resp.to_str}"



{
  "info": "The Statseeker RESTful API",
  "data": {
    "errmsg": "ok",
    "success": true,
    "time": 1496193864
  },
  "api_version": "2.1"
}
[top]



Common Resources: Examples and Sample Code

Most of the processes and objects that you are used to interacting with in Statseeker (network discovery, users, groups, devices, interfaces, alerts, etc.) are exposed as resources from the API standpoint and through querying the API these resources can be returned as data objects which you can review and modify.

Statseeker exposes many resources via the API but most API users will spend the majority of their time working with just a few. The most commonly used resources are presented below along with examples of interacting with those resources.

Note:

[top]

Users

The User resource allows you to interact with (create, edit, delete, and report on) Statseeker user records.

The user object
Field ID Field Title Type Get, Add, Update Description
api API Access string G, U, A User API access permission, one of:

  • r
  • rw
auth Authentication method string G, U, A User authentication method, one of:

  • File
  • LDAP
  • RADIUS
  • SAML
auth_refresh Authentication Refresh integer G, U, A The time allowed after a token has expired that it will be refreshed (in seconds)
auth_ttl Authentication TTL integer G, U, A The TTL for authentication tokens (in seconds)
email Email string G, U, A User email address
exportDateFormat Date Format string G, U, A User specified Date Format
id ID integer G User Identifier
is_admin Is Admin integer G, U, A Whether the user has admin access, one of:

  • 0
  • 1
name Name string G, A (required) User name
password Password string G, U, A User password
reportRowSpacing Report Row Spacing string G, U, A The report row spacing preference for the user
top_n Top N integer G, U, A The default Top N number for the user
tz Time Zone string G, U, A User time zone

[top]

Example: Creating a New User

cURLPythonRubyResponse

curl \ 
	-H "Accept: application/json" \ 
	-H "Content-Type: application/json" \
	-X POST \
	-H "Authorization: Bearer myToken" \
	"https://your.statseeker.server/api/v2.1/user/?indent=3" \
	-d '{"data":[{"name":"<USER NAME>","password":"<PASSWORD>","auth":"<AUTHENTICATION METHOD>","email":"<EMAIL ADDRESS>","api":"<API PERMISSION>","tz":"<TIMEZONE>"}]}' 

# import requests for handling connection and encoding
import requests
import json
def do_request(server, query, user, pword, reqData):
    # Run auth request
    headers = { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' }
    url = f'https://{server}/ss-auth'
    authData = {'user': user, 'password': pword}
    resp = requests.post(url, headers=headers, data=authData, verify=False)
    headers['Content-Type'] = 'application/json'
    url = f'https://{server}/{query}'
    print(f'Get Auth Token: {resp.status_code}')
    if resp.status_code == 200:    
        # Authentication successful, Statseeker >= v5.5.4
        myToken = resp.json()
        headers['Authorization'] = f'Bearer {myToken["access_token"]}'
        resp = requests.post(url, headers=headers, data=reqData, verify=False)
    if resp.status_code == 401:
        print(f'Token auth failed: {resp.status_code}, trying basic auth')
        # Either Authentication was unsuccessful (Statseeker <  v5.5.4), or API set to use basic auth
        # Try basic auth
        resp = requests.post(url, headers=headers, auth=(user, pword), data=reqData, verify=False)
    return resp

# Statseeker Server IP
server = 'your.statseeker.server'
# credentials
user = 'api_user'
pword = 'user_password'
# API root endpoint
query = 'api/v2.1'
# specify target endpoint
query += '/user'
# optional response formatting
query += '/?indent=3&links=none'
# data
reqData = json.dumps({"data":[{"name":"<USER NAME>","password":"<PASSWORD>","auth":"<AUTHENTICATION METHOD>","email":"<EMAIL ADDRESS>","api":"<API PERMISSION>","tz":"<TIMEZONE>"}]})
# Run the request
resp = do_request(server, query, user, pword, reqData)
if resp.status_code == 200:
    print(resp.status_code)
    print(resp.json())
else:
    print(f'Error: {resp.status_code} {resp.reason}') 

# install with: $ gem install rest-client
require "rest_client"
require "json"
require "base64"

def try_basic(server, query, user, pword, reqData)
	headers = {
		:content_type => "application/json"
	}
	url = "https://" + server + "/" + query
	headers["Authorization"] = "Basic " + Base64.encode64("#{user}:#{pword}")
	return RestClient::Request.execute(
		:method => :post,
		:url => url,
		:headers => headers,
		:verify_ssl => false,
		:payload => reqData
	)
end

def do_request(server, query, user, pword, reqData)
    # Run auth request
    headers = {
        :content_type => "application/x-www-form-urlencoded"
    }
    url = "https://" + server + "/ss-auth"
    authData = {
       :user => user,
       :password => pword
    }
    begin
        resp = RestClient::Request.execute(
            :method => :post,
            :url => url,
            :headers => headers,
            :verify_ssl => false,
            :payload => authData
        )
    rescue RestClient::Unauthorized
		# bad credentials or Statseeker not v5.5.4 or higher
        try_basic(server, query, user, pword, reqData)
    else		
        # Authentication successful. Statseeker at least v5.5.4
		headers = {
		:content_type => "application/json"
		}	
        url = "https://" + server + "/" + query
        rdata = JSON.parse(resp)
        headers["Authorization"] = "Bearer " + rdata.fetch("access_token")
        return RestClient::Request.execute(
			:method => :post,
			:url => url,
			:headers => headers,
			:verify_ssl => false,
			:payload => reqData
        )
    end
	rescue RestClient::Unauthorized
		# Statseeker = v5.5.4 but configured for basic auth
        try_basic(server, query, user, pword, reqData)
end
# Statseeker Server IP
$server = 'your.statseeker.server'
# api user credentials
$user = 'api_user'
$pword = 'user_password'
# api root endpoint
$query = 'api/v2.1'
# specify target endpoint
$query += '/user'
# optional response formatting
$query += '/?indent=3&links=none'
# configure payload
# define payload in json format
$reqData = '{"data":[{"name":"<USER NAME>","password":"<PASSWORD>","auth":"<AUTHENTICATION METHOD>","email":"<EMAIL ADDRESS>","api":"<API PERMISSION>","tz":"<TIMEZONE>"}]}'
# Run the request
resp = do_request($server, $query, $user, $pword, $reqData)
puts "#{resp.to_str}"


{
   "version":"2.1",
   "revision":"11",
   "info":"The Statseeker RESTful API",
   "data":{
      "success":true,
      "errmsg":"ok",
      "time":1623643182,
      "objects":[
         {
            "type":"user",
            "sequence":1,
            "status":{
               "success":true,
               "errcode":0
            },
            "data_total":1,
            "data":[
                  "api":"<API PERMISSION>",
                  "auth":"<AUTHENTICATION METHOD>",
                  "email":"<EMAIL ADDRESS>",
                  "name":"<USER NAME>",
                  "password":"<PASSWORD>",
                  "tz":"<TIMEZONE>",
                  "id":94551,
                  "is_admin":0
               }
            ]
         }
      ]
   }
}
[top]

Example: Updating an Existing User

cURLPythonRubyResponse

curl \ 
	-H "Accept: application/json" \ 
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer myToken" \
	-X PUT \
	"https://your.statseeker.server/api/v2.1/user/<USER ID>?indent=3" \
	-d '{"data":[{"api":"<API PERMISSION>","tz":"<NEW TIMEZONE>"}]}' 

# import requests for handling connection and encoding
import requests
import json
def do_request(server, query, user, pword, reqData):
    # Run auth request
    headers = { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' }
    url = f'https://{server}/ss-auth'
    authData = {'user': user, 'password': pword}
    resp = requests.post(url, headers=headers, data=authData, verify=False)
    headers['Content-Type'] = 'application/json'
    url = f'https://{server}/{query}'
    print(f'Get Auth Token: {resp.status_code}')
    if resp.status_code == 200:    
        # Authentication successful, Statseeker >= v5.5.4
        myToken = resp.json()
        headers['Authorization'] = f'Bearer {myToken["access_token"]}'
        resp = requests.put(url, headers=headers, data=reqData, verify=False)
    if resp.status_code == 401:
        print(f'Token auth failed: {resp.status_code}, trying basic auth')
        # Either Authentication was unsuccessful (Statseeker <  v5.5.4), or API set to use basic auth
        # Try basic auth
        resp = requests.put(url, headers=headers, auth=(user, pword), data=reqData, verify=False)
    return resp

# Statseeker Server IP
server = 'your.statseeker.server'
# credentials
user = 'api_user'
pword = 'user_password'
# API root endpoint
query = 'api/v2.1'
# specify target endpoint
query += '/user/<USER ID>'
# optional response formatting
query += '/?indent=3&links=none'
# data
reqData = json.dumps({"data":[{"api":"<API PERMISSION>","tz":"<NEW TIMEZONE>"}]})
# Run the request
resp = do_request(server, query, user, pword, reqData)
if resp.status_code == 200:
    print(resp.status_code)
    print(resp.json())
else:
    print(f'Error: {resp.status_code} {resp.reason}')


# install with: $ gem install rest-client
require "rest_client"
require "json"
require "base64"

def try_basic(server, query, user, pword, reqData)
	headers = {
		:content_type => "application/json"
	}
	url = "https://" + server + "/" + query
	headers["Authorization"] = "Basic " + Base64.encode64("#{user}:#{pword}")
	return RestClient::Request.execute(
		:method => :put,
		:url => url,
		:headers => headers,
		:verify_ssl => false,
		:payload => reqData
	)
end

def do_request(server, query, user, pword, reqData)
    # Run auth request
    headers = {
        :content_type => "application/x-www-form-urlencoded"
    }
    url = "https://" + server + "/ss-auth"
    authData = {
       :user => user,
       :password => pword
    }
    begin
        resp = RestClient::Request.execute(
            :method => :post,
            :url => url,
            :headers => headers,
            :verify_ssl => false,
            :payload => authData
        )
    rescue RestClient::Unauthorized
		# bad credentials or Statseeker not v5.5.4 or higher
        try_basic(server, query, user, pword, reqData)
    else		
        # Authentication successful. Statseeker at least v5.5.4
		headers = {
		:content_type => "application/json"
		}	
        url = "https://" + server + "/" + query
        rdata = JSON.parse(resp)
        headers["Authorization"] = "Bearer " + rdata.fetch("access_token")
        return RestClient::Request.execute(
			:method => :put,
			:url => url,
			:headers => headers,
			:verify_ssl => false,
			:payload => reqData
        )
    end
	rescue RestClient::Unauthorized
		# Statseeker = v5.5.4 but configured for basic auth
        try_basic(server, query, user, pword, reqData)
end
# Statseeker Server IP
$server = 'your.statseeker.server'
# api user credentials
$user = 'api_user'
$pword = 'user_password'
# api root endpoint
$query = 'api/v2.1'
# specify target endpoint
$query += '/user/<USER ID>'
# optional response formatting
$query += '/?indent=3&links=none'
# configure payload
$reqData = '{"data":[{"api":"<API PERMISSION>","tz":"<NEW TIMEZONE>"}]}'
# Run the request
resp = do_request($server, $query, $user, $pword, $reqData)
puts "#{resp.to_str}"


{
   "version":"2.1",
   "revision":"11",
   "info":"The Statseeker RESTful API",
   "data":{
      "success":true,
      "errmsg":"ok",
      "time":1623644832
   }
}
[top]

Devices (cdt_device)

The cdt_device resource allows you to interact with your currently discovered network devices.

The cdt_device object
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G, U The poll state of the entity

  • on
  • off
auth_method SNMPv3 Authentication Method string G, U, A Authentication method for SNMPv3 devices, one of:

  • md5
  • sha
auth_pass SNMPv3 Authentication Password string G, U, A Authentication password for SNMPv3 devices
auth_user SNMPv3 Authentication Username string G, U, A Authentication user for SNMPv3 devices
community Community string G, U, A The community string status of the device
context SNMPv3 Context string G, U, A Context for SNMPv3 devices
custom_data_details Custom Data Details string G, U A JSON string object indicating which custom entities have been found during a discovery
discover_getNext Use GetNext string G, U Walk this device using SNMP getNext instead of getBulk, one of:

  • 0
  • 1
discover_minimal Use Minimal Walk string G, U Walk this device using a minimal set of oids, one of:

  • 0
  • 1
discover_snmpv1 Use SNMPv1 string G, U Walk this device using SNMPv1, one of:

  • 0
  • 1
hostname Hostname string G, U, A The hostname of the device
ipaddress IP Address string G, U, A (required) The IP address of the device
latitude Latitude float G, U The user defined latitude of the device’s location
longitude Longitude float G, U The user defined longitude of the device’s location
manual_name User Defined Name string G, U The user defined name of the device
memorySize Memory Size integer G The amount of physical read-write memory contained by the entity
mis MAC/IP/Switch Collection State string G, U Include this device in the MIS report calculations, one of

  • on
  • off
ping_dup Ping Duplicate integer G Number of duplicate ping responses received
Timeseries Data: Stats, Formats & Options
ping_lost1 Ping Lost 1 integer G Number of times that a single ping request is lost
Timeseries Data: Stats, Formats & Options
ping_lost2 Ping Lost 2 integer G Number of times that two ping requests in a row have been lost
Timeseries Data: Stats, Formats & Options
ping_lost3 Ping Lost 3 integer G Number of times that three ping requests in a row have been lost
Timeseries Data: Stats, Formats & Options
ping_lost4 Ping Lost 4 integer G Number of times that four ping requests in a row have been lost
Timeseries Data: Stats, Formats & Options
ping_outage Ping Outage integer G, U Number of seconds to wait before a device is considered to be down
ping_poll Ping Poll string G, U, A The ping polling status of the device, one of:

  • on
  • off
ping_rtt Ping RTT integer G The current ping state of the device
Timeseries Data: Stats, Formats & Options
ping_rtt_ms Ping RTT(High Precision) float G The current ping state of the device in ms to 3 decimal places
Timeseries Data: Stats, Formats & Options
ping_state Ping State string G, U The current ping state of the device, one of:

  • up
  • down

Can be combined with an event format for event-based analytics, see Event Formats.

priv_method SNMPv3 Privacy Method string G, U, A Privacy method for SNMPv3 devices, one of:

  • aes
  • aes192
  • aes256
  • des
  • des3
priv_pass SNMPv3 Privacy Password string G, U, A Privacy password for SNMPv3 devices
retired Retired string G The device has been Retired, one of:

  • on
  • off
snmpEngineID SNMP Engine ID string G, U An SNMP engine’s administratively-unique identifier
snmp_maxoid SNMP Max OID integer G, U Maximum number of oids to poll in a single request
snmp_poll SNMP Poll string G, U, A The SNMP polling status of the device, one of:

  • on
  • off
snmp_version SNMP Version integer G, U, A The SNMP version of the device, one of:

  • 1
  • 2
  • 3
sysContact Contact string G, U The textual identification of the contact person for the entity
sysDescr System Description string G, U A textual description of the entity
sysLocation Location string G, U The physical location of the entity
sysName System Name string G, U An administratively-assigned name for the entity
sysObjectID Object ID string G, U The vendor’s authoritative identification of the network management subsystem contained in the entity
sysServices Services integer G, U A value which indicates the set of services that the entity may potentially offer
vendor Vendor string G The vendor name for the device
Links

This resource has links to the following:

[top]

Example: Configuring a Device as Ping-Only

cURLPythonRubyResponse

curl \ 
	-H "Accept: application/json" \ 
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer myToken" \
	-X PUT \
	"https://your.statseeker.server/api/v2.1/cdt_device/<DEVICE ID>/?indent=3" \
	-d '{"data":[{"ping_poll":"on","snmp_poll":"off"}]}'

# import requests for handling connection and encoding
import requests
import json
def do_request(server, query, user, pword, reqData):
    # Run auth request
    headers = { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' }
    url = f'https://{server}/ss-auth'
    authData = {'user': user, 'password': pword}
    resp = requests.post(url, headers=headers, data=authData, verify=False)
    headers['Content-Type'] = 'application/json'
    url = f'https://{server}/{query}'
    print(f'Get Auth Token: {resp.status_code}')
    if resp.status_code == 200:    
        # Authentication successful, Statseeker >= v5.5.4
        myToken = resp.json()
        headers['Authorization'] = f'Bearer {myToken["access_token"]}'
        resp = requests.put(url, headers=headers, data=reqData, verify=False)
    if resp.status_code == 401:
        print(f'Token auth failed: {resp.status_code}, trying basic auth')
        # Either Authentication was unsuccessful (Statseeker <  v5.5.4), or API set to use basic auth
        # Try basic auth
        resp = requests.put(url, headers=headers, auth=(user, pword), data=reqData, verify=False)
    return resp

# Statseeker Server IP
server = 'your.statseeker.server'
# credentials
user = 'api_user'
pword = 'user_password'
# API root endpoint
query = 'api/v2.1'
# specify target endpoint
query += '/cdt_device/<DEVICE ID>'
# optional response formatting
query += '/?indent=3&links=none'
# data
reqData = json.dumps({"data":[{"ping_poll":"on","snmp_poll":"off"}]})
# Run the request
resp = do_request(server, query, user, pword, reqData)
if resp.status_code == 200:
    print(resp.status_code)
    print(resp.json())
else:
    print(f'Error: {resp.status_code} {resp.reason}')


# install with: $ gem install rest-client
require "rest_client"
require "json"
require "base64"

def try_basic(server, query, user, pword, reqData)
	headers = {
		:content_type => "application/json"
	}
	url = "https://" + server + "/" + query
	headers["Authorization"] = "Basic " + Base64.encode64("#{user}:#{pword}")
	return RestClient::Request.execute(
		:method => :put,
		:url => url,
		:headers => headers,
		:verify_ssl => false,
		:payload => reqData
	)
end

def do_request(server, query, user, pword, reqData)
    # Run auth request
    headers = {
        :content_type => "application/x-www-form-urlencoded"
    }
    url = "https://" + server + "/ss-auth"
    authData = {
       :user => user,
       :password => pword
    }
    begin
        resp = RestClient::Request.execute(
            :method => :post,
            :url => url,
            :headers => headers,
            :verify_ssl => false,
            :payload => authData
        )
    rescue RestClient::Unauthorized
		# bad credentials or Statseeker not v5.5.4 or higher
        try_basic(server, query, user, pword, reqData)
    else		
        # Authentication successful. Statseeker at least v5.5.4
		headers = {
		:content_type => "application/json"
		}	
        url = "https://" + server + "/" + query
        rdata = JSON.parse(resp)
        headers["Authorization"] = "Bearer " + rdata.fetch("access_token")
        return RestClient::Request.execute(
			:method => :put,
			:url => url,
			:headers => headers,
			:verify_ssl => false,
			:payload => reqData
        )
    end
	rescue RestClient::Unauthorized
		# Statseeker = v5.5.4 but configured for basic auth
        try_basic(server, query, user, pword, reqData)
end
# Statseeker Server IP
$server = 'your.statseeker.server'
# api user credentials
$user = 'api_user'
$pword = 'user_password'
# api root endpoint
$query = 'api/v2.1'
# specify target endpoint
$query += '/cdt_device/<DEVICE ID>'
# optional response formatting
$query += '/?indent=3&links=none'
# configure payload
$reqData = '{"data":[{"ping_poll":"on","snmp_poll":"off"}]}'
# Run the request
resp = do_request($server, $query, $user, $pword, $reqData)
puts "#{resp.to_str}"


{
    "version": "2.1",
    "revision": "13",
    "info": "The Statseeker RESTful API",
    "data": {
        "success": true,
        "errmsg": "ok",
        "time": 1623646976,
        "objects": [
            {
                "type": "cdt_device",
                "sequence": 1,
                "status": {
                    "success": true,
                    "errcode": 0
                },
                "data_total": 1,
                "data": [
                    {
                        "name": "Houston-swt1",
                        "id": <DEVICE ID>,
                        "community": "public",
                        "ipaddress": "10.100.47.253",
                        "snmp_version": 2,
                        "poll": "off",
                        "ping_poll": "on"
                    }
                ]
            }
        ]
    }
}

[top]

Example: Returning Details on all Ping-Only Devices

cURLPythonRubyResponse

curl \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer myToken" \
	-X GET \
	"https://your.statseeker.server/api/v2.1/cdt_device/?fields=name,ipaddress,sysLocation,snmp_poll,ping_poll&snmp_poll_filter=IS(%27off%27)&ping_poll_filter=IS(%27on%27)" 

# import requests for handling connection and encoding
import requests
import json
def do_request(server, query, user, pword):
    # Run auth request
    headers = { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' }
    url = f'https://{server}/ss-auth'
    authData = {'user': user, 'password': pword}
    resp = requests.post(url, headers=headers, data=authData, verify=False)
    headers['Content-Type'] = 'application/json'
    url = f'https://{server}/{query}'
    print(f'Get Auth Token: {resp.status_code}')
    if resp.status_code == 200:    
        # Authentication successful, Statseeker >= v5.5.4
        myToken = resp.json()
        headers['Authorization'] = f'Bearer {myToken["access_token"]}'
        resp = requests.get(url, headers=headers, verify=False)
    if resp.status_code == 401:
        print(f'Token auth failed: {resp.status_code}, trying basic auth')
        # Either Authentication was unsuccessful (Statseeker <  v5.5.4), or API set to use basic auth
        # Try basic auth
        resp = requests.get(url, headers=headers, auth=(user, pword), verify=False)
    return resp

# Statseeker Server IP
server = 'your.statseeker.server'
# credentials
user = 'api_user'
pword = 'user_password'
# API root endpoint
query = 'api/v2.1'
# specify target endpoint
query += '/cdt_device'
# specify fields to be returned
query += '/?fields=name,ipaddress,sysLocation,snmp_poll,ping_poll'
# Filters
query += '&snmp_poll_filter=IS("off")&ping_poll_filter=IS("on")'
# optional response formatting
query += '&indent=3&links=none'
# Run the request
resp = do_request(server, query, user, pword)
if resp.status_code == 200:
    print(resp.status_code)
    print(resp.json())
else:
    print(f'Error: {resp.status_code} {resp.reason}')


# install with: $ gem install rest-client
require "rest_client"
require "json"
require "base64"

def try_basic(server, query, user, pword)
	headers = {
		:content_type => "json"
	}
	url = "https://" + server + '/' + query
	headers["Authorization"] = "Basic " + Base64.encode64("#{user}:#{pword}")
	return RestClient::Request.execute(
		:method => :get,
		:url => url,
		:headers => headers,
		:verify_ssl => false
	)
end

def do_request(server, query, user, pword)
    # Run auth request
    headers = {
        :content_type => "application/x-www-form-urlencoded"
    }
    url = "https://" + server + "/ss-auth"
    authData = {
       :user => user,
       :password => pword
    }
    begin
        resp = RestClient::Request.execute(
            :method => :post,
            :url => url,
            :headers => headers,
            :verify_ssl => false,
            :payload => authData
        )
    rescue RestClient::Unauthorized
		# bad credentials or Statseeker < v5.5.4
        try_basic(server, query, user, pword)
    else
        # Authentication successful. Statseeker >= v5.5.4
        headers = {
			:content_type => "application/json"
		}	
        url = "https://" + server + '/' + query
        rdata = JSON.parse(resp)
        headers["Authorization"] = "Bearer " + rdata.fetch("access_token")
        return RestClient::Request.execute(
            :method => :get,
            :url => url,
            :headers => headers,
            :verify_ssl => false,
        )
    end
	rescue RestClient::Unauthorized
		# Statseeker = v5.5.4 but configured for basic auth
        try_basic(server, query, user, pword)
end
# Statseeker Server IP
$server = 'your.statseeker.server'
# api user credentials
$user = 'api_user'
$pword = 'user_password'
# api root endpoint
$query = 'api/v2.1'
# specify target endpoint
$query += '/cdt_device'
# specify fields to be returned
$query += '/?fields=name,ipaddress,sysLocation,snmp_poll,ping_poll'
# Filters
$query += '&snmp_poll_filter=IS("off")&ping_poll_filter=IS("on")'
# optional response formatting
$query += '&indent=3&links=none'
# Run the request
resp = do_request($server, $query, $user, $pword)
puts "#{resp.to_str}"

{
   "version":"2.1",
   "revision":"11",
   "info":"The Statseeker RESTful API",
   "data":{
      "success":true,
      "errmsg":"ok",
      "time":1623647384,
      "objects":[
         {
            "type":"cdt_device",
            "sequence":1,
            "status":{
               "success":true,
               "errcode":0
            },
            "data_total":2,
            "data":[
               {
                  "name":"Houston-swt1",
                  "ipaddress":"10.100.47.253",
                  "sysLocation":"Houston",
                  "snmp_poll":"off",
                  "ping_poll":"on",
                  "id":425
               },
			   {				  
				  "name":"Adelaide-swt1",
				  "ipaddress":"10.100.89.253",
				  "sysLocation":"Adelaide",
				  "snmp_poll":"off",
				  "ping_poll":"on",
				  "id":433
				}
            ]
         }
      ]
   }
}
[top]

Example: Requesting Ping Metrics for a Device

Return ping times for the last 15 minutes as well as the average ping trip time for that period.

cURLPythonRubyResponse

curl \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer myToken" \
	-X GET \
	"https://your.statseeker.server/api/v2.1/cdt_device/cdt_device/<DEVICE ID>?fields=name,ping_rtt&ping_rtt_formats=avg,vals&ping_rtt_timefilter=range%3Dnow%20-%2015m%20TO%20now%20-1m" 



# import requests for handling connection and encoding
import requests, json
# import requests for handling connection and encoding
import requests
import json
def do_request(server, query, user, pword):
    # Run auth request
    headers = { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' }
    url = f'https://{server}/ss-auth'
    authData = {'user': user, 'password': pword}
    resp = requests.post(url, headers=headers, data=authData, verify=False)
    headers['Content-Type'] = 'application/json'
    url = f'https://{server}/{query}'
    print(f'Get Auth Token: {resp.status_code}')
    if resp.status_code == 200:    
        # Authentication successful, Statseeker >= v5.5.4
        myToken = resp.json()
        headers['Authorization'] = f'Bearer {myToken["access_token"]}'
        resp = requests.get(url, headers=headers, verify=False)
    if resp.status_code == 401:
        print(f'Token auth failed: {resp.status_code}, trying basic auth')
        # Either Authentication was unsuccessful (Statseeker <  v5.5.4), or API set to use basic auth
        # Try basic auth
        resp = requests.get(url, headers=headers, auth=(user, pword), verify=False)
    return resp

# Statseeker Server IP
server = 'your.statseeker.server'
# credentials
user = 'api_user'
pword = 'user_password'
# API root endpoint
query = 'api/v2.1'
# specify target endpoint
query += '/cdt_device/<DEVICE ID>'
# specify fields to be returned
query += '/?fields=name,ping_rtt'
# specify data formats
query += '&ping_rtt_formats=avg,vals'
# Filters
query += '&ping_rtt_timefilter=range%3Dnow%20-%2015m%20TO%20now%20-1m'
# optional response formatting
query += '&indent=3&links=none'
# Run the request
resp = do_request(server, query, user, pword)
if resp.status_code == 200:
    print(resp.status_code)
    print(resp.json())
else:
    print(f'Error: {resp.status_code} {resp.reason}')


# install with: $ gem install rest-client
require "rest_client"
require "json"
require "base64"

def try_basic(server, query, user, pword)
	headers = {
		:content_type => "json"
	}
	url = "https://" + server + "/" + query
	headers["Authorization"] = "Basic " + Base64.encode64("#{user}:#{pword}")
	return RestClient::Request.execute(
		:method => :get,
		:url => url,
		:headers => headers,
		:verify_ssl => false
	)
end

def do_request(server, query, user, pword)
    # Run auth request
    headers = {
        :content_type => "application/x-www-form-urlencoded"
    }
    url = "https://" + server + "/ss-auth"
    authData = {
       :user => user,
       :password => pword
    }
    begin
        resp = RestClient::Request.execute(
            :method => :post,
            :url => url,
            :headers => headers,
            :verify_ssl => false,
            :payload => authData
        )
    rescue RestClient::Unauthorized
		# bad credentials or Statseeker not v5.5.4 or higher
        try_basic(server, query, user, pword)
    else
        # Authentication successful. Statseeker at least v5.5.4
        headers = {
			:content_type => "application/json"
		}	
        url = "https://" + server + "/" + query
        rdata = JSON.parse(resp)
        headers["Authorization"] = "Bearer " + rdata.fetch("access_token")
        return RestClient::Request.execute(
            :method => :get,
            :url => url,
            :headers => headers,
            :verify_ssl => false,
        )
    end
	rescue RestClient::Unauthorized
		# Statseeker = v5.5.4 but configured for basic auth
        try_basic(server, query, user, pword)
end
# Statseeker Server IP
$server = 'your.statseeker.server'
# api user credentials
$user = 'api_user'
$pword = 'user_password'
# api root endpoint
$query = 'api/v2.1'
# specify target endpoint
$query += '/cdt_device/<DEVICE ID>'
# specify fields to be returned
$query += '/?fields=name,ping_rtt'
# specify data formats
$query += '&ping_rtt_formats=avg,vals'
# Filters
$query += '&ping_rtt_timefilter=range%3Dnow%20-%2015m%20TO%20now%20-1m'
# optional response formatting
$query += '&indent=3&links=none'
# Run the request
resp = do_request($server, $query, $user, $pword)
puts "#{resp.to_str}"



{
   "version":"2.1",
   "revision":"11",
   "info":"The Statseeker RESTful API",
   "data":{
      "success":true,
      "errmsg":"ok",
      "time":1623648677,
      "objects":[
         {
            "type":"cdt_device",
            "sequence":1,
            "status":{
               "success":true,
               "errcode":0
            },
            "data_total":1,
            "data":[
               {
                  "name":"Houston-rtr",
                  "ping_rtt":{
                     "vals":[
                        23,
                        28,
                        30,
                        26,
                        32,
                        21,
                        28,
                        27,
                        26,
                        25,
                        30,
                        27,
                        30,
                        27
                     ],
                     "avg":27.1429
                  },
                  "id":<DEVICE ID>
               }
            ]
         }
      ]
   }
}
[top]

Example: Return Ping Availability Percentage for a group of devices, during business hours last month

Show the ping availability for each device in a specified group during business hours (6am – 6pm) over the previous month

cURLPythonRubyResponse

curl \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer myToken" \
	-X GET \
	"https://your.statseeker.server/api/v2.1/cdt_device?fields=name,ipaddress,ping_state&ping_state_formats=avl_inPercent&ping_state_filter_format=state&ping_state_timefilter=range=start_of_last_month%20to%20end_of_last_month;%20time%20=%2006:00%20to%2018:00;&ping_state_states=up&groups=<GROUP NAME>&links=none&indent=3" 

# import requests for handling connection and encoding
import requests
import json
def do_request(server, query, user, pword):
    # Run auth request
    headers = { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' }
    url = f'https://{server}/ss-auth'
    authData = {'user': user, 'password': pword}
    resp = requests.post(url, headers=headers, data=authData, verify=False)
    headers['Content-Type'] = 'application/json'
    url = f'https://{server}/{query}'
    print(f'Get Auth Token: {resp.status_code}')
    if resp.status_code == 200:    
        # Authentication successful, Statseeker >= v5.5.4
        myToken = resp.json()
        headers['Authorization'] = f'Bearer {myToken["access_token"]}'
        resp = requests.get(url, headers=headers, verify=False)
    if resp.status_code == 401:
        print(f'Token auth failed: {resp.status_code}, trying basic auth')
        # Either Authentication was unsuccessful (Statseeker <  v5.5.4), or API set to use basic auth
        # Try basic auth
        resp = requests.get(url, headers=headers, auth=(user, pword), verify=False)
    return resp

# Statseeker Server IP
server = 'your.statseeker.server'
# credentials
user = 'api_user'
pword = 'user_password'
# API root endpoint
query = 'api/v2.1'
# specify target endpoint
query += '/cdt_device'
# specify fields to be returned
query += '/?fields=name,ipaddress,ping_state'
# specify data formats
query += '&ping_state_formats=avl_inPercent'
# Filters
query += '&ping_state_filter_format=state&ping_state_states=up&groups=<GROUP NAME>&ping_state_timefilter=range=start_of_last_month to end_of_last_month;time = 06:00 to 18:00;'
# optional response formatting
query += '&indent=3&links=none'
# Run the request
resp = do_request(server, query, user, pword)
if resp.status_code == 200:
    print(resp.status_code)
    print(resp.json())
else:
    print(f'Error: {resp.status_code} {resp.reason}')


# install with: $ gem install rest-client
require "rest_client"
require "json"
require "base64"

def try_basic(server, query, user, pword)
	headers = {
		:content_type => "json"
	}
	url = "https://" + server + "/" + query
	headers["Authorization"] = "Basic " + Base64.encode64("#{user}:#{pword}")
	return RestClient::Request.execute(
		:method => :get,
		:url => url,
		:headers => headers,
		:verify_ssl => false
	)
end

def do_request(server, query, user, pword)
    # Run auth request
    headers = {
        :content_type => "application/x-www-form-urlencoded"
    }
    url = "https://" + server + "/ss-auth"
    authData = {
       :user => user,
       :password => pword
    }
    begin
        resp = RestClient::Request.execute(
            :method => :post,
            :url => url,
            :headers => headers,
            :verify_ssl => false,
            :payload => authData
        )
    rescue RestClient::Unauthorized
		# bad credentials or Statseeker not v5.5.4 or higher
        try_basic(server, query, user, pword)
    else
        # Authentication successful. Statseeker at least v5.5.4
        headers = {
			:content_type => "application/json"
		}	
        url = "https://" + server + "/" + query
        rdata = JSON.parse(resp)
        headers["Authorization"] = "Bearer " + rdata.fetch("access_token")
        return RestClient::Request.execute(
            :method => :get,
            :url => url,
            :headers => headers,
            :verify_ssl => false,
        )
    end
	rescue RestClient::Unauthorized
		# Statseeker = v5.5.4 but configured for basic auth
        try_basic(server, query, user, pword)
end
# Statseeker Server IP
$server = 'your.statseeker.server'
# api user credentials
$user = 'api_user'
$pword = 'user_password'
# api root endpoint
$query = 'api/v2.1'
# specify target endpoint
$query += '/cdt_device/'
# specify fields to be returned
$query += '/?fields=name,ipaddress,ping_state'
# specify data formats
$query += '&ping_state_formats=avl_inPercent'
# Filters
$query += '&ping_state_filter_format=state&ping_state_states=up&groups=<GROUP NAME>&ping_state_timefilter=range=start_of_last_month to end_of_last_month; time = 06:00 to 18:00;'
# optional response formatting
$query += '&indent=3&links=none'
# Run the request
resp = do_request($server, $query, $user, $pword)
puts "#{resp.to_str}"


{
    "version": "2.1",
    "revision": "13",
    "info": "The Statseeker RESTful API",
    "data": {
        "success": true,
        "errmsg": "ok",
        "time": 1615862113,
        "objects": [
            {
                "type": "cdt_device",
                "sequence": 307,
                "status": {
                    "success": true,
                    "errcode": 0
                },
                "data_total": 59,
                "data": [
                    {
                        "name": "NewYork-rtr",
                        "ipaddress": "10.100.44.254",
                        "ping_state": {
                            "avl_inPercent": 93.4969
                        },
                        "id": 175
                    },
                    {
                        "name": "Chicago-rtr",
                        "ipaddress": "10.100.46.254",
                        "ping_state": {
                            "avl_inPercent": 98.1472
                        },
                        "id": 195
                    },
                    {
                        "name": "Rome-rtr",
                        "ipaddress": "10.100.52.254",
                        "ping_state": {
                            "avl_inPercent": 96.6486
                        },
                        "id": 247
                    },
                    {
                        "name": "Paris-rtr",
                        "ipaddress": "10.100.53.254",
                        "ping_state": {
                            "avl_inPercent": 96.6329
                        },
                        "id": 260
                    },
                    {
                        "name": "Barcelona-rtr",
                        "ipaddress": "10.100.54.254",
                        "ping_state": {
                            "avl_inPercent": 97.481
                        },
                        "id": 269
                    },
                    {
                        "name": "Hamburg-rtr",
                        "ipaddress": "10.100.55.254",
                        "ping_state": {
                            "avl_inPercent": 97.6203
                        },
                        "id": 276
                    },
                    {
                        "name": "Budapest-rtr",
                        "ipaddress": "10.100.56.254",
                        "ping_state": {
                            "avl_inPercent": 91.905
                        },
                        "id": 284
                    },
                    {
                        "name": "Warsaw-rtr",
                        "ipaddress": "10.100.57.254",
                        "ping_state": {
                            "avl_inPercent": 97.7061
                        },
                        "id": 292
                    },
                    {
                        "name": "Istanbul-rtr",
                        "ipaddress": "10.100.61.254",
                        "ping_state": {
                            "avl_inPercent": 96.1347
                        },
                        "id": 313
                    },
                    {
                        "name": "Helsinki-rtr",
                        "ipaddress": "10.100.62.254",
                        "ping_state": {
                            "avl_inPercent": 96.4435
                        },
                        "id": 320
                    },
                    {
                        "name": "Lisbon-rtr",
                        "ipaddress": "10.100.64.254",
                        "ping_state": {
                            "avl_inPercent": 98.4008
                        },
                        "id": 331
                    },
                    {
                        "name": "Copenhagen-rtr",
                        "ipaddress": "10.100.66.254",
                        "ping_state": {
                            "avl_inPercent": 96.6578
                        },
                        "id": 341
                    },
                    {
                        "name": "Zurich-rtr",
                        "ipaddress": "10.100.67.254",
                        "ping_state": {
                            "avl_inPercent": 97.0897
                        },
                        "id": 346
                    },
                    {
                        "name": "Auckland-rtr",
                        "ipaddress": "10.100.68.254",
                        "ping_state": {
                            "avl_inPercent": 97.4721
                        },
                        "id": 350
                    },
                    {
                        "name": "Wellington-rtr",
                        "ipaddress": "10.100.69.254",
                        "ping_state": {
                            "avl_inPercent": 96.656
                        },
                        "id": 353
                    },
                    {
                        "name": "Shanghai-rtr",
                        "ipaddress": "10.100.71.254",
                        "ping_state": {
                            "avl_inPercent": 97.1329
                        },
                        "id": 358
                    },
                    {
                        "name": "Taipei-rtr",
                        "ipaddress": "10.100.72.254",
                        "ping_state": {
                            "avl_inPercent": 95.4515
                        },
                        "id": 361
                    },
                    {
                        "name": "Tokyo-rtr",
                        "ipaddress": "10.100.73.254",
                        "ping_state": {
                            "avl_inPercent": 96.988
                        },
                        "id": 364
                    },
                    {
                        "name": "Singapore-rtr",
                        "ipaddress": "10.100.75.254",
                        "ping_state": {
                            "avl_inPercent": 96.3195
                        },
                        "id": 370
                    },
                    {
                        "name": "Jakarta-rtr",
                        "ipaddress": "10.100.76.254",
                        "ping_state": {
                            "avl_inPercent": 96.5654
                        },
                        "id": 373
                    },
                    {
                        "name": "Manila-rtr",
                        "ipaddress": "10.100.77.254",
                        "ping_state": {
                            "avl_inPercent": 95.6723
                        },
                        "id": 378
                    },
                    {
                        "name": "KualaLumpur-rtr",
                        "ipaddress": "10.100.78.254",
                        "ping_state": {
                            "avl_inPercent": 96.1833
                        },
                        "id": 381
                    },
                    {
                        "name": "Delhi-rtr",
                        "ipaddress": "10.100.80.254",
                        "ping_state": {
                            "avl_inPercent": 97.6462
                        },
                        "id": 387
                    },
                    {
                        "name": "Mumbai-rtr",
                        "ipaddress": "10.100.81.254",
                        "ping_state": {
                            "avl_inPercent": 96.5621
                        },
                        "id": 390
                    },
                    {
                        "name": "Bangalore-rtr",
                        "ipaddress": "10.100.82.254",
                        "ping_state": {
                            "avl_inPercent": 93.9592
                        },
                        "id": 393
                    },
                    {
                        "name": "Chennai-rtr",
                        "ipaddress": "10.100.84.254",
                        "ping_state": {
                            "avl_inPercent": 94.9474
                        },
                        "id": 399
                    },
                    {
                        "name": "Brisbane-rtr",
                        "ipaddress": "10.100.86.254",
                        "ping_state": {
                            "avl_inPercent": 95.2075
                        },
                        "id": 405
                    },
                    {
                        "name": "Melbourne-rtr",
                        "ipaddress": "10.100.87.254",
                        "ping_state": {
                            "avl_inPercent": 96.4931
                        },
                        "id": 408
                    },
                    {
                        "name": "Perth-rtr",
                        "ipaddress": "10.100.88.254",
                        "ping_state": {
                            "avl_inPercent": 95.4568
                        },
                        "id": 411
                    },
                    {
                        "name": "Cairo-rtr",
                        "ipaddress": "10.100.90.254",
                        "ping_state": {
                            "avl_inPercent": 95.8718
                        },
                        "id": 417
                    },
                    {
                        "name": "Johannesburg-rtr",
                        "ipaddress": "10.100.91.254",
                        "ping_state": {
                            "avl_inPercent": 93.7854
                        },
                        "id": 420
                    },
                    {
                        "name": "PortElizabeth-rtr",
                        "ipaddress": "10.100.93.254",
                        "ping_state": {
                            "avl_inPercent": 94.4832
                        },
                        "id": 426
                    },
                    {
                        "name": "Pretoria-rtr",
                        "ipaddress": "10.100.94.254",
                        "ping_state": {
                            "avl_inPercent": 95.6376
                        },
                        "id": 432
                    },
                    {
                        "name": "LosAngeles-rtr",
                        "ipaddress": "10.100.45.254",
                        "ping_state": {
                            "avl_inPercent": 97.3842
                        },
                        "id": 21115
                    },
                    {
                        "name": "Athens-rtr",
                        "ipaddress": "10.100.59.254",
                        "ping_state": {
                            "avl_inPercent": 94.7204
                        },
                        "id": 21118
                    },
                    {
                        "name": "Dublin-rtr",
                        "ipaddress": "10.100.65.254",
                        "ping_state": {
                            "avl_inPercent": 96.4443
                        },
                        "id": 21121
                    },
                    {
                        "name": "Beijing-rtr",
                        "ipaddress": "10.100.70.254",
                        "ping_state": {
                            "avl_inPercent": 96.2173
                        },
                        "id": 21122
                    },
                    {
                        "name": "Houston-rtr",
                        "ipaddress": "10.100.47.254",
                        "ping_state": {
                            "avl_inPercent": 97.7115
                        },
                        "id": 26477
                    },
                    {
                        "name": "London-rtr",
                        "ipaddress": "10.100.49.254",
                        "ping_state": {
                            "avl_inPercent": 97.5155
                        },
                        "id": 26478
                    },
                    {
                        "name": "CapeTown-rtr",
                        "ipaddress": "10.100.92.254",
                        "ping_state": {
                            "avl_inPercent": 95.6713
                        },
                        "id": 26480
                    },
                    {
                        "name": "Kolkata-rtr",
                        "ipaddress": "10.100.83.254",
                        "ping_state": {
                            "avl_inPercent": 95.9105
                        },
                        "id": 54838
                    },
                    {
                        "name": "Adelaide-rtr",
                        "ipaddress": "10.100.89.254",
                        "ping_state": {
                            "avl_inPercent": 96.9231
                        },
                        "id": 55175
                    },
                    {
                        "name": "Berlin-rtr",
                        "ipaddress": "10.119.50.254",
                        "ping_state": {
                            "avl_inPercent": 96.1095
                        },
                        "id": 90353
                    },
                    {
                        "name": "Madrid-rtr",
                        "ipaddress": "10.119.51.254",
                        "ping_state": {
                            "avl_inPercent": 94.8712
                        },
                        "id": 90357
                    },
                    {
                        "name": "Vienna-rtr",
                        "ipaddress": "10.119.58.254",
                        "ping_state": {
                            "avl_inPercent": 96.621
                        },
                        "id": 90419
                    },
                    {
                        "name": "Stockholm-rtr",
                        "ipaddress": "10.119.63.254",
                        "ping_state": {
                            "avl_inPercent": 94.0744
                        },
                        "id": 90448
                    },
                    {
                        "name": "Bangkok-rtr",
                        "ipaddress": "10.119.79.254",
                        "ping_state": {
                            "avl_inPercent": 94.4871
                        },
                        "id": 90506
                    },
                    {
                        "name": "Phoenix-rtr",
                        "ipaddress": "10.100.48.254",
                        "ping_state": {
                            "avl_inPercent": 93.6085
                        },
                        "id": 158201
                    },
                    {
                        "name": "Seoul-rtr",
                        "ipaddress": "10.100.74.254",
                        "ping_state": {
                            "avl_inPercent": 93.8363
                        },
                        "id": 209909
                    },
                    {
                        "name": "Sydney-rtr",
                        "ipaddress": "10.100.85.254",
                        "ping_state": {
                            "avl_inPercent": 96.3044
                        },
                        "id": 209912
                    }
                ]
            }
        ]
    }
}
[top]

Example: Deleting Multiple Devices via IP Address

Delete multiple devices in a single call by filter the device list by ipaddress.

We will delete devices with ipaddress = 10.100.59.251, 10.100.59.251.

cURLPythonRubyResponse

curl \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer myToken" \
	-X DELETE \
	"https://your.statseeker.server/api/v2.1/cdt_device/cdt_device/" 
	-d '{"fields":{"ipaddress":{"field":"ipaddress","filter":{"query":"IN(\"<IP ADDRESS 1>",\"<IP ADDRESS 2>\")"}}}}'
	

# import requests for handling connection and encoding
import requests
import json
def do_request(server, query, user, pword, reqData):
    # Run auth request
    headers = { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' }
    url = f'https://{server}/ss-auth'
    authData = {'user': user, 'password': pword}
    resp = requests.post(url, headers=headers, data=authData, verify=False)
    headers['Content-Type'] = 'application/json'
    url = f'https://{server}/{query}'
    print(f'Get Auth Token: {resp.status_code}')
    if resp.status_code == 200:    
        # Authentication successful, Statseeker >= v5.5.4
        myToken = resp.json()
        headers['Authorization'] = f'Bearer {myToken["access_token"]}'
        resp = requests.delete(url, headers=headers, data=reqData, verify=False)
    if resp.status_code == 401:
        print(f'Token auth failed: {resp.status_code}, trying basic auth')
        # Either Authentication was unsuccessful (Statseeker <  v5.5.4), or API set to use basic auth
        # Try basic auth
        resp = requests.delete(url, headers=headers, auth=(user, pword), data=reqData, verify=False)
    return resp

# Statseeker Server IP
server = 'your.statseeker.server'
# credentials
user = 'api_user'
pword = 'user_password'
# API root endpoint
query = 'api/v2.1'
# specify target endpoint
query += '/cdt_device'
# optional response formatting
query += '/?indent=3&links=none'
# data
reqData = json.dumps({"fields":{"ipaddress":{"field":"ipaddress","filter":{"query":"IN(\"<IP ADDRESS 1>\",\"<IP ADDRESS 2>\")"}}}})
# Run the request
resp = do_request(server, query, user, pword, reqData)
if resp.status_code == 200:
    print(resp.status_code)
    print(resp.json())
else:
    print(f'Error: {resp.status_code} {resp.reason}')


# install with: $ gem install rest-client
require "rest_client"
require "json"
require "base64"

def try_basic(server, query, user, pword, reqData)
	headers = {
		:content_type => "application/json"
	}
	url = "https://" + server + "/" + query
	headers["Authorization"] = "Basic " + Base64.encode64("#{user}:#{pword}")
	return RestClient::Request.execute(
		:method => :delete,
		:url => url,
		:headers => headers,
		:verify_ssl => false,
		:payload => reqData
	)
end

def do_request(server, query, user, pword, reqData)
    # Run auth request
    headers = {
        :content_type => "application/x-www-form-urlencoded"
    }
    url = "https://" + server + "/ss-auth"
    authData = {
       :user => user,
       :password => pword
    }
    begin
        resp = RestClient::Request.execute(
            :method => :post,
            :url => url,
            :headers => headers,
            :verify_ssl => false,
            :payload => authData
        )
    rescue RestClient::Unauthorized
		# bad credentials or Statseeker not v5.5.4 or higher
        try_basic(server, query, user, pword, reqData)
    else		
        # Authentication successful. Statseeker at least v5.5.4
		headers = {
		:content_type => "application/json"
		}	
        url = "https://" + server + "/" + query
        rdata = JSON.parse(resp)
        headers["Authorization"] = "Bearer " + rdata.fetch("access_token")
        return RestClient::Request.execute(
			:method => :delete,
			:url => url,
			:headers => headers,
			:verify_ssl => false,
			:payload => reqData
        )
    end
	rescue RestClient::Unauthorized
		# Statseeker = v5.5.4 but configured for basic auth
        try_basic(server, query, user, pword, reqData)
end
# Statseeker Server IP
$server = 'your.statseeker.server'
# api user credentials
$user = 'api_user'
$pword = 'user_password'
# api root endpoint
$query = 'api/v2.1'
# specify target endpoint
$query += '/cdt_device'
# optional response formatting
$query += '/?indent=3&links=none'
# configure payload
$reqData = '{"fields":{"ipaddress":{"field":"ipaddress","filter":{"query":"IN(\'<IP ADDRESS 1>\',\'<IP ADDRESS 2>\')"}}}}'
# Run the request
resp = do_request($server, $query, $user, $pword, $reqData)
puts "#{resp.to_str}"



{
   "version":"2.1",
   "revision":"11",
   "info":"The Statseeker RESTful API",
   "data":{
      "success":true,
      "errmsg":"ok",
      "time":1623649404
   }
}
[top]

Interface (cdt_port)

The cdt_port resource allows you to interact with the network interfaces being monitored by Statseeker.

The cdt_port object
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G, U The poll state of the entity

  • on
  • off
InBroadcastPkts Rx Bcast Pkts integer G Number of received broadcast packets
Timeseries Data: Stats, Formats & Options
InBroadcastPps Rx Bcast Pps float G Number of received broadcast packets per second
Timeseries Data: Stats, Formats & Options
InDiscards Rx Discards integer G Number of received discards
Timeseries Data: Stats, Formats & Options
InErrors Rx Errors integer G Number of received errors
Timeseries Data: Stats, Formats & Options
InMulticastPkts Rx Mcast Pkts integer G Number of received multicast packets
Timeseries Data: Stats, Formats & Options
InMulticastPps Rx Mcast Pps float G Number of received multicast packets per second
Timeseries Data: Stats, Formats & Options
InOctets Rx Bytes integer G Number of received bytes
Timeseries Data: Stats, Formats & Options
InOutBroadcastPkts Total Bcast Pkts integer G Combined Rx and Tx broadcast packets
Timeseries Data: Stats, Formats & Options
InOutDiscards Total Discards integer G Combined Rx and Tx Discards
Timeseries Data: Stats, Formats & Options
InOutErrors Total Errors integer G Combined Rx and Tx Errors
Timeseries Data: Stats, Formats & Options
InOutMulticastPkts Total Mcast Pkts integer G Combined Rx and Tx multicast packets
Timeseries Data: Stats, Formats & Options
InOutOctets Total Bytes integer G Combined Rx and Tx Bytes
Timeseries Data: Stats, Formats & Options
InOutSpeed Total Speed integer G Combined Rx and Tx Speed
InOutUcastPkts Total Ucast Pkts integer G Combined Rx and Tx unicast packets
Timeseries Data: Stats, Formats & Options
InUcastPkts Rx Ucast Pkts integer G Number of received unicast packets
Timeseries Data: Stats, Formats & Options
InUcastPps Rx Ucast Pps float G Number of received unicast packets per second
Timeseries Data: Stats, Formats & Options
OutBroadcastPkts Tx Bcast Pkts integer G Number of transmitted broadcast packets
Timeseries Data: Stats, Formats & Options
OutBroadcastPps Tx Bcast Pps float G Number of transmitted broadcast packets per second
Timeseries Data: Stats, Formats & Options
OutDiscards Tx Discards integer G Number of transmitted discards
Timeseries Data: Stats, Formats & Options
OutErrors Tx Errors integer G Number of transmitted errors
Timeseries Data: Stats, Formats & Options
OutMulticastPkts Tx Mcast Pkts integer G Number of transmitted multicast packets
Timeseries Data: Stats, Formats & Options
OutMulticastPps Tx Mcast Pps float G Number of transmitted multicast packets per second
Timeseries Data: Stats, Formats & Options
OutOctets Tx Bytes integer G Number of transmitted bytes
Timeseries Data: Stats, Formats & Options
OutUcastPkts Tx Ucast Pkts integer G Number of transmitted unicast packets
Timeseries Data: Stats, Formats & Options
OutUcastPps Tx Ucast Pps float G Number of transmitted unicast packets per second
Timeseries Data: Stats, Formats & Options
RxBps Rx Bps float G Received bits per second
Timeseries Data: Stats, Formats & Options
RxDiscardsPercent Rx Discards Percent float G Rx discards percentage
Timeseries Data: Stats, Formats & Options
RxErrorPercent Rx Errors Percent float G Rx errors percentage
Timeseries Data: Stats, Formats & Options
RxTxDiscardsPercent Total Discards Percent float G Total discards percentage
Timeseries Data: Stats, Formats & Options
RxTxErrorPercent Total Errors Percent float G Total errors percentage
Timeseries Data: Stats, Formats & Options
RxUtil Rx Util float G Rx Utilization
Timeseries Data: Stats, Formats & Options
TxBps Tx Bps float G Transmitted bits per second
Timeseries Data: Stats, Formats & Options
TxDiscardsPercent Tx Discards Percent float G Tx discards percentage
Timeseries Data: Stats, Formats & Options
TxErrorPercent Tx Errors Percent float G Tx errors percentage
Timeseries Data: Stats, Formats & Options
TxUtil Tx Util float G Tx Utilization
Timeseries Data: Stats, Formats & Options
if90day if90day integer G, U Status of port usage over 90 days, one of:

  • 0
  • 1
ifAdminStatus ifAdminStatus string G, U The desired state of the interface, one of:

  • up
  • down
  • testing

Can be combined with an event format for event-based analytics, see Event Formats.

ifAlias Alias string G, U Interface Alias (ifAlias)
ifDescr Description string G, U Interface Description (ifDescr)
ifDuplex ifDuplex string G, U Interface Duplex, one of:

  • auto
  • half
  • full
  • unknown
ifInSpeed Rx Speed integer G, U Interface Input Speed (Statseeker custom attribute)
ifIndex ifIndex string G, U Interface Index (IF-MIB.ifIndex)
ifName ifName string G, U Interface Name (IF-MIB.ifName)
ifNonUnicast NUcast Polling string G, U NonUnicast Polling status of the port, one of:

  • on
  • off
  • global
ifOperStatus ifOperStatus string G, U Current operational status of port, one of:

  • dormant
  • down
  • lowerLayerDown
  • notPresent
  • testing
  • unknown
  • up

Can be combined with an event format for event-based analytics, see Event Formats.

ifOutSpeed Tx Speed integer G, U Interface Output Speed (Statseeker custom attribute)
ifPhysAddress PhysAddress string G, U Interface MAC Address (ifPhysAddress)
ifPoll ifPoll string G, U Polling status of the port, one of:

  • on
  • off
ifSpeed Speed integer G, U Interface Speed (based on ifSpeed or ifHighSpeed)
ifTitle Title string G, U Interface Title (Statseeker custom attribute – ifTitle)
ifType Type string G, U Interface Type, one of:

  • a12MppSwitch
  • aal2
  • aal5
  • actelisMetaLOOP
  • adsl
  • adsl2
  • adsl2plus
  • aflane8023
  • aflane8025
  • arap
  • arcnet
  • arcnetPlus
  • async
  • atm
  • atmbond
  • atmDxi
  • atmFuni
  • atmIma
  • atmLogical
  • atmRadio
  • atmSubInterface
  • atmVciEndPt
  • atmVirtual
  • aviciOpticalEther
  • basicISDN
  • bgppolicyaccounting
  • bridge
  • bsc
  • cblVectaStar
  • cctEmul
  • ces
  • channel
  • ciscoISLvlan
  • cnr
  • coffee
  • compositeLink
  • dcn
  • ddnX25
  • digitalPowerline
  • digitalWrapperOverheadChannel
  • dlsw
  • docsCableDownstream
  • docsCableMaclayer
  • docsCableMCmtsDownstream
  • docsCableUpstream
  • docsCableUpstreamChannel
  • ds0
  • ds0Bundle
  • ds1
  • ds1FDL
  • ds3
  • dtm
  • dvbAsiIn
  • dvbAsiOut
  • dvbRccDownstream
  • dvbRccMacLayer
  • dvbRccUpstream
  • e1
  • econet
  • eon
  • eplrs
  • escon
  • ethernet3Mbit
  • ethernetCsmacd
  • fast
  • fastEther
  • fastEtherFX
  • fcipLink
  • fddi
  • fibreChannel
  • frameRelay
  • frameRelayInterconnect
  • frameRelayMPI
  • frameRelayService
  • frDlciEndPt
  • frf16MfrBundle
  • frForward
  • g703at2mb
  • g703at64k
  • gfp
  • gigabitEthernet
  • gr303IDT
  • gr303RDT
  • gtp
  • h323Gatekeeper
  • h323Proxy
  • hdh1822
  • hdlc
  • hdsl2
  • hiperlan2
  • hippi
  • hippiInterface
  • homepna
  • hostPad
  • hssi
  • hyperchannel
  • ibm370parChan
  • idsl
  • ieee1394
  • ieee80211
  • ieee80212
  • ieee80216WMAN
  • ieee8023adLag
  • if-gsn
  • imt
  • infiniband
  • interleave
  • ip
  • ipForward
  • ipOverAtm
  • ipOverCdlc
  • ipOverClaw
  • ipSwitch
  • isdn
  • isdns
  • isdnu
  • iso88022llc
  • iso88023Csmacd
  • iso88024TokenBus
  • iso88025CRFPInt
  • iso88025Dtr
  • iso88025Fiber
  • iso88025TokenRing
  • iso88026Man
  • isup
  • l2vlan
  • l3ipvlan
  • l3ipxvlan
  • lapb
  • lapd
  • lapf
  • linegroup
  • lmp
  • localTalk
  • macSecControlledIF
  • macSecUncontrolledIF
  • mediaMailOverIp
  • mfSigLink
  • miox25
  • mocaVersion1
  • modem
  • mpc
  • mpegTransport
  • mpls
  • mplsTunnel
  • msdsl
  • mvl
  • myrinet
  • nfas
  • nsip
  • opticalChannel
  • opticalChannelGroup
  • opticalTransport
  • other
  • para
  • pdnEtherLoop1
  • pdnEtherLoop2
  • plc
  • pon155
  • pon622
  • pos
  • ppp
  • pppMultilinkBundle
  • primaryISDN
  • propAtm
  • propBWAp2Mp
  • propCnls
  • propDocsWirelessDownstream
  • propDocsWirelessMaclayer
  • propDocsWirelessUpstream
  • propMultiplexor
  • propPointToPointSerial
  • propVirtual
  • propWirelessP2P
  • proteon10Mbit
  • proteon80Mbit
  • q2931
  • qam
  • qllc
  • radioMAC
  • radsl
  • reachDSL
  • regular1822
  • rfc1483
  • rfc877x25
  • rpr
  • rs232
  • rsrb
  • sdlc
  • sdsl
  • shdsl
  • sip
  • sipSig
  • sipTg
  • sixToFour
  • slip
  • smdsDxi
  • smdsIcip
  • softwareLoopback
  • sonet
  • sonetOverheadChannel
  • sonetPath
  • sonetVT
  • srp
  • ss7SigLink
  • stackToStack
  • starLan
  • tdlc
  • teLink
  • termPad
  • tr008
  • trasnpHdlc
  • tunnel
  • ultra
  • usb
  • v11
  • v35
  • v36
  • v37
  • vdsl
  • virtualIpAddress
  • virtualTg
  • voiceDID
  • voiceEM
  • voiceEMFGD
  • voiceEncap
  • voiceFGDEANA
  • voiceFGDOS
  • voiceFXO
  • voiceFXS
  • voiceOverAtm
  • voiceOverCable
  • voiceOverFrameRelay
  • voiceOverIp
  • x213
  • x25huntGroup
  • x25mlp
  • x25ple
Links

This resource has links to the following:

Links

This resource has links to the following:

[top]

Example: Turning Off an Interface

In this example we will use the device and interface name to identify the interface and then update the polling status on the selected interface.

  • Start with a device name and an interface name, Use these to get the interface ID
  • Use the interface ID to update the polling status of the interface
cURLPythonRubyResponse

curl \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
	-H "Authorization: Bearer myToken" \
    -X GET \
	"https://your.statseeker.server/api/v2.1/cdt_port/?fields=name,cdt_device.name&name_filter=IS(%27<INTERFACE NAME>%27)&cdt_device.name_filter=IS(%27<DEVICE NAME>%27)&indent=3&links=none"
	
	
curl \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
	-H "Authorization: Bearer myToken" \
    -X PUT \
	"https://your.statseeker.server/api/v2.1/cdt_port/<INTERFACE ID>/?indent=3"
    -d '{"data":[{%27poll%27:%27off%27}]}'
	

# import requests for handling connection and encoding
import requests
import json

def do_request(server, query, user, pword, reqType, reqData):
    # Run auth request
    headers = { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' }
    url = f'https://{server}/ss-auth'
    authData = {'user': user, 'password': pword}
    resp = requests.post(url, headers=headers, data=authData, verify=False)
    headers['Content-Type'] = 'application/json'
    url = f'https://{server}/{query}'
    print(f'Get Auth Token: {resp.status_code}')
    if resp.status_code == 200:    
        # Authentication successful, Statseeker >= v5.5.4
        myToken = resp.json()
        headers['Authorization'] = f'Bearer {myToken["access_token"]}'
        if reqType == "get":
            resp = requests.get(url, headers=headers, verify=False)
        else:
            resp = requests.put(url, headers=headers, data=reqData, verify=False)
    if resp.status_code == 401:
        print(f'Token auth failed: {resp.status_code}, trying basic auth')
        # Either Authentication was unsuccessful (Statseeker <  v5.5.4), or API set to use basic auth
        # Try basic auth
        if reqType == "get":
            resp = requests.get(url, headers=headers, auth=(user, pword), verify=False)
        else:
            resp = requests.put(url, headers=headers, auth=(user, pword), data=reqData, verify=False)        
    return resp

# Statseeker Server IP
server = 'your.statseeker.server'
# credentials
user = 'api_user'
pword = 'user_password'
# API root endpoint
query = 'api/v2.1'
# specify target endpoint
query += '/cdt_port'
# specify fields to be returned
query += '/?fields=name,cdt_device.name'
# Filters
query += '&name_filter=IS("<INTERFACE NAME>")&cdt_device.name_filter=IS("<DEVICE NAME>")'
# optional response formatting
query += '&indent=3&links=none'
# set request type
reqType = 'get'
data=''
portId=''

# Run the request
resp = do_request(server, query, user, pword, reqType, data)
if resp.status_code == 200:
    print(resp.status_code)
    print(resp.json())
    portId=str(resp.json()['data']['objects'][0]['data'][0]['id'])
    print("Interface ID: " + portId)
else:
    print(f'Error: {resp.status_code} {resp.reason}')

# build next query
# API root endpoint
query = 'api/v2.1'
# specify target endpoint
query += '/cdt_port/' + portId
# optional response formatting
query += '/?indent=3&links=none'
# update poll status to turn off polling
data = json.dumps({"data":[{"poll":"off"}]})
# set request type
reqType = 'put'
# Run the request
resp = do_request(server, query, user, pword, reqType, data)
if resp.status_code == 200:
    print(resp.status_code)
    print(resp.json())
else:
    print(f'Error: {resp.status_code} {resp.reason}')

# install with: $ gem install rest-client
require "rest_client"
require "json"
require "base64"

def try_basic(server, query, user, pword, reqType, reqData)
	headers = {
		:content_type => "json"
	}
	url = "https://" + server + "/" + query
	headers["Authorization"] = "Basic " + Base64.encode64("#{user}:#{pword}")
	return RestClient::Request.execute(
		:method => reqType,
		:url => url,
		:headers => headers,
		:verify_ssl => false,
		:payload => reqData
	)
end

def do_request(server, query, user, pword, reqType, reqData)
    # Run auth request
    headers = {
        :content_type => "application/x-www-form-urlencoded"
    }
    url = "https://" + server + "/ss-auth"
    authData = {
       :user => user,
       :password => pword
    }
    begin
        resp = RestClient::Request.execute(
            :method => :post,
            :url => url,
            :headers => headers,
            :verify_ssl => false,
            :payload => authData
        )
    rescue RestClient::Unauthorized
		# bad credentials or Statseeker not v5.5.4 or higher
        try_basic(server, query, user, pword, reqType, reqData)
    else
        # Authentication successful. Statseeker at least v5.5.4
        headers = {
			:content_type => "application/json"
		}	
        url = "https://" + server + "/" + query
        rdata = JSON.parse(resp)
        headers["Authorization"] = "Bearer " + rdata.fetch("access_token")
        return RestClient::Request.execute(
            :method => reqType,
            :url => url,
            :headers => headers,
            :verify_ssl => false,
			:payload => reqData
        )
    end
	rescue RestClient::Unauthorized
		# Statseeker = v5.5.4 but configured for basic auth
        try_basic(server, query, user, pword, reqType, reqData)
end
# Statseeker Server IP
$server = 'your.statseeker.server'
# api user credentials
$user = 'api_user'
$pword = 'user_password'
# api root endpoint
$query = 'api/v2.1'
# specify target endpoint
$query += '/cdt_port'
# specify fields to be returned
$query += '/?fields=name,cdt_device.name'
# Filters
$query += '&name_filter=IS("<INTERFACE NAME>")&cdt_device.name_filter=IS("<DEVICE NAME>")'
# optional response formatting
$query += '&indent=3&links=none'
$reqData = ''
# Set request type
$reqType = 'get'
# Run the request
resp = do_request($server, $query, $user, $pword, $reqType, $reqData)
puts "#{resp.to_str}"
rData = JSON.parse(resp)
$p = rData['data']['objects'][0]['data'][0]['id']

# output interface ID to screen
puts "#{'interfaceID: ' + $p.to_s}"

# build next query
# API root endpoint
$query = 'api/v2.1'
# specify target endpoint
$query += '/cdt_port/' + $p.to_s
# specify fields to be returned
$query += '/?indent=3&links=none'
# update poll status to turn off polling
$reqData = '{"data":[{"poll":"off"}]}'
# set request type
$reqType = 'put'
# Run the request
resp = do_request($server, $query, $user, $pword, $reqType, $reqData)
puts "#{resp.to_str}"


#This response includes some logging (preceding the response data object) which is only relevant to the Python and Ruby implementations
200
{
   "version":"2.1",
   "revision":"11",
   "info":"The Statseeker RESTful API",
   "data":{
      "success":true,
      "errmsg":"ok",
      "time":1623655171,
      "objects":[
         {
            "type":"cdt_port",
            "sequence":5,
            "status":{
               "success":true,
               "errcode":0
            },
            "data_total":1,
            "data":[
               {
                  "name":"<INTERFACE NAME>",
                  "cdt_device.name":"<DEVICE NAME>",
                  "id":<INTERFACE ID>"
               }
            ]
         }
      ]
   }
}
"Interface ID":<INTERFACE ID>"
200
{
   "version":"2.1",
   "revision":"11",
   "info":"The Statseeker RESTful API",
   "data":{
      "success":true,
      "errmsg":"ok",
      "time":1623655172
   }
}

[top]

Example: Requesting Timeseries Data from all Interfaces on a Device

Request:

  • Identifying data: the name and ID of the interface
  • Timeseries data: total inbound/outbound discard percentage for the reporting period, minimum, average, and 95th percentile values for inbound/outbound utilization
  • Time filter of ‘start of the day until now’
  • Sort results on the average inbound utilization, descending
  • Filter the results to show only those interfaces on a specific device
cURLPythonRubyResponse

curl \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
	-H "Authorization: Bearer myToken" \
    -X GET \
	"https://your.statseeker.server/api/v2.1/cdt_port/?fields=deviceid,id,name,RxTxDiscardsPercent,TxUtil,RxUtil&RxUtil_sort=1,desc,avg&deviceid_filter=IS(%22<DEVICE ID>%22)&RxUtil_formats=95th,avg,min&TxUtil_formats=95th,avg,min&RxTxDiscardsPercent_formats=total&timefilter=range=start_of_today%20to%20now"
	
	
	

# import requests for handling connection and encoding
import requests
import json
def do_request(server, query, user, pword):
    # Run auth request
    headers = { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' }
    url = f'https://{server}/ss-auth'
    authData = {'user': user, 'password': pword}
    resp = requests.post(url, headers=headers, data=authData, verify=False)
    headers['Content-Type'] = 'application/json'
    url = f'https://{server}/{query}'
    print(f'Get Auth Token: {resp.status_code}')
    if resp.status_code == 200:    
        # Authentication successful, Statseeker >= v5.5.4
        myToken = resp.json()
        headers['Authorization'] = f'Bearer {myToken["access_token"]}'
        resp = requests.get(url, headers=headers, verify=False)
    if resp.status_code == 401:
        print(f'Token auth failed: {resp.status_code}, trying basic auth')
        # Either Authentication was unsuccessful (Statseeker <  v5.5.4), or API set to use basic auth
        # Try basic auth
        resp = requests.get(url, headers=headers, auth=(user, pword), verify=False)
    return resp

# Statseeker Server IP
server = 'your.statseeker.server'
# credentials
user = 'api_user'
pword = 'user_password'
# API root endpoint
query = 'api/v2.1'
# specify target endpoint
query += '/cdt_port'
# specify fields to be returned
query += '/?fields=deviceid,id,name,RxTxDiscardsPercent,TxUtil,RxUtil'
# specify data formats
query += '&formats=95th,avg,min&RxTxDiscardsPercent_formats=total'
# specify filters
query += '&deviceid_filter=IS("<DEVICE ID>")&timefilter=range=start_of_today to now'
# optional response formatting
query += '&indent=3&links=none'
# Run the request
resp = do_request(server, query, user, pword)
if resp.status_code == 200:
    print(resp.status_code)
    print(resp.json())
else:
    print(f'Error: {resp.status_code} {resp.reason}')


# install with: $ gem install rest-client
require "rest_client"
require "json"
require "base64"

def try_basic(server, query, user, pword)
	headers = {
		:content_type => "json"
	}
	url = "https://" + server + "/" + query
	headers["Authorization"] = "Basic " + Base64.encode64("#{user}:#{pword}")
	return RestClient::Request.execute(
		:method => :get,
		:url => url,
		:headers => headers,
		:verify_ssl => false
	)
end

def do_request(server, query, user, pword)
    # Run auth request
    headers = {
        :content_type => "application/x-www-form-urlencoded"
    }
    url = "https://" + server + "/ss-auth"
    authData = {
       :user => user,
       :password => pword
    }
    begin
        resp = RestClient::Request.execute(
            :method => :post,
            :url => url,
            :headers => headers,
            :verify_ssl => false,
            :payload => authData
        )
    rescue RestClient::Unauthorized
		# bad credentials or Statseeker not v5.5.4 or higher
        try_basic(server, query, user, pword)
    else
        # Authentication successful. Statseeker at least v5.5.4
        headers = {
			:content_type => "application/json"
		}	
        url = "https://" + server + "/" + query
        rdata = JSON.parse(resp)
        headers["Authorization"] = "Bearer " + rdata.fetch("access_token")
        return RestClient::Request.execute(
            :method => :get,
            :url => url,
            :headers => headers,
            :verify_ssl => false,
        )
    end
	rescue RestClient::Unauthorized
		# Statseeker = v5.5.4 but configured for basic auth
        try_basic(server, query, user, pword)
end
# Statseeker Server IP
$server = 'your.statseeker.server'
# api user credentials
$user = 'api_user'
$pword = 'user_password'
# api root endpoint
$query = 'api/v2.1'
# specify target endpoint
$query += '/cdt_port'
# specify fields to be returned
$query += '/?fields=deviceid,id,name,RxTxDiscardsPercent,TxUtil,RxUtil'
# specify data formats
$query += '&formats=95th,avg,min&RxTxDiscardsPercent_formats=total'
# Filters
$query += '&timefilter=range=start_of_today to now&deviceid_filter=IS('<DEVICE ID>')'
# optional response formatting
$query += '&indent=3&links=none'
# Run the request
resp = do_request($server, $query, $user, $pword)
puts "#{resp.to_str}"


{

    'version':'2.1',
    'revision':'11',
    'info':'The Statseeker RESTful API',
    'data':{
        'success':True,
        'errmsg':'ok',
        'time':1623714662,
        'objects':[
            {
                'type':'cdt_port',
                'sequence':11,
                'status':{
                    'success':True,
                    'errcode':0
                },
                'data_total':5,
                'data':[
                    {
                        'deviceid':<DEVICE ID>,
                        'id':5267,
                        'name':'Gi0/1',
                        'RxTxDiscardsPercent':{
                            'total':0
                        },
                        'TxUtil':{
                            'min':1.40207,
                            'avg':1.88639,
                            '95th':2.19703
                        },
                        'RxUtil':{
                            'min':1.27934,
                            'avg':1.87145,
                            '95th':2.11322
                        }
                    },
                    {
                        'deviceid':<DEVICE ID>,
                        'id':5268,
                        'name':'Gi0/2',
                        'RxTxDiscardsPercent':{
                            'total':0
                        },
                        'TxUtil':{
                            'min':1.20236,
                            'avg':1.9108,
                            '95th':2.26653
                        },
                        'RxUtil':{
                            'min':1.52055,
                            'avg':1.8971,
                            '95th':2.14601
                        }
                    },
                    {
                        'deviceid':<DEVICE ID>,
                        'id':5269,
                        'name':'Gi0/3',
                        'RxTxDiscardsPercent':{
                            'total':0.00919672
                        },
                        'TxUtil':{
                            'min':9.02538,
                            'avg':32.583,
                            '95th':71.7206
                        },
                        'RxUtil':{
                            'min':9.19671,
                            'avg':45.9247,
                            '95th':71.0976
                        }
                    },
                    {
                        'deviceid':<DEVICE ID>,
                        'id':5270,
                        'name':'Gi0/4',
                        'RxTxDiscardsPercent':{
                            'total':0
                        },
                        'TxUtil':{
                            'min':1.19819,
                            'avg':25.2168,
                            '95th':37.0137
                        },
                        'RxUtil':{
                            'min':0.948108,
                            'avg':23.3934,
                            '95th':37.0401
                        }
                    },
                    {
                        'deviceid':<DEVICE ID>,
                        'id':5271,
                        'name':'Gi0/5',
                        'RxTxDiscardsPercent':{
                            'total':0
                        },
                        'TxUtil':{
                            'min':0.833396,
                            'avg':0.933941,
                            '95th':0.950772
                        },
                        'RxUtil':{
                            'min':0.833468,
                            'avg':0.933937,
                            '95th':0.950873
                        }
                    }
                ]
            }
        ]
    }

}
[top]

Example: Return the 10 Most Congested Interfaces (inbound) over the Last 30mins
cURLPythonRubyResponse

curl \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
	-H "Authorization: Bearer myToken" \
    -X GET \
    'https://your.statseeker.server/api/v2.1/cdt_port/?fields=deviceid,id,name,RxUtil&RxUtil_formats=vals,avg&RxUtil_timefilter=range=now%20-%2030m%20to%20now%20-%201m&RxUtil_sort=1,desc,avg&limit=10&indent=3'	

# import requests for handling connection and encoding
import requests
import json
def do_request(server, query, user, pword):
    # Run auth request
    headers = { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' }
    url = f'https://{server}/ss-auth'
    authData = {'user': user, 'password': pword}
    resp = requests.post(url, headers=headers, data=authData, verify=False)
    headers['Content-Type'] = 'application/json'
    url = f'https://{server}/{query}'
    print(f'Get Auth Token: {resp.status_code}')
    if resp.status_code == 200:    
        # Authentication successful, Statseeker >= v5.5.4
        myToken = resp.json()
        headers['Authorization'] = f'Bearer {myToken["access_token"]}'
        resp = requests.get(url, headers=headers, verify=False)
    if resp.status_code == 401:
        print(f'Token auth failed: {resp.status_code}, trying basic auth')
        # Either Authentication was unsuccessful (Statseeker <  v5.5.4), or API set to use basic auth
        # Try basic auth
        resp = requests.get(url, headers=headers, auth=(user, pword), verify=False)
    return resp

# Statseeker Server IP
server = 'your.statseeker.server'
# credentials
user = 'api_user'
pword = 'user_password'
# API root endpoint
query = 'api/v2.1'
# specify target endpoint
query += '/cdt_port'
# specify fields to be returned
query += '/?fields=deviceid,id,name,RxUtil'
# specify data formats
query += '&RxUtil_formats=vals,avg'
# Filters and sorting
query += '&RxUtil_timefilter=range=now - 30m to now - 1m&limit=10&RxUtil_sort=1,desc,avg'
# optional response formatting
query += '&indent=3&links=none'
# Run the request
resp = do_request(server, query, user, pword)
if resp.status_code == 200:
    print(resp.status_code)
    print(resp.json())
else:
    print(f'Error: {resp.status_code} {resp.reason}')


# install with: $ gem install rest-client
require "rest_client"
require "json"
require "base64"

def try_basic(server, query, user, pword)
	headers = {
		:content_type => "json"
	}
	url = "https://" + server + "/" + query
	headers["Authorization"] = "Basic " + Base64.encode64("#{user}:#{pword}")
	return RestClient::Request.execute(
		:method => :get,
		:url => url,
		:headers => headers,
		:verify_ssl => false
	)
end

def do_request(server, query, user, pword)
    # Run auth request
    headers = {
        :content_type => "application/x-www-form-urlencoded"
    }
    url = "https://" + server + "/ss-auth"
    authData = {
       :user => user,
       :password => pword
    }
    begin
        resp = RestClient::Request.execute(
            :method => :post,
            :url => url,
            :headers => headers,
            :verify_ssl => false,
            :payload => authData
        )
    rescue RestClient::Unauthorized
		# bad credentials or Statseeker not v5.5.4 or higher
        try_basic(server, query, user, pword)
    else
        # Authentication successful. Statseeker at least v5.5.4
        headers = {
			:content_type => "application/json"
		}	
        url = "https://" + server + "/" + query
        rdata = JSON.parse(resp)
        headers["Authorization"] = "Bearer " + rdata.fetch("access_token")
        return RestClient::Request.execute(
            :method => :get,
            :url => url,
            :headers => headers,
            :verify_ssl => false,
        )
    end
	rescue RestClient::Unauthorized
		# Statseeker = v5.5.4 but configured for basic auth
        try_basic(server, query, user, pword)
end
# Statseeker Server IP
$server = 'your.statseeker.server'
# api user credentials
$user = 'api_user'
$pword = 'user_password'
# api root endpoint
$query = 'api/v2.1'
# specify target endpoint
$query += '/cdt_port'
# specify fields to be returned
$query += '/?fields=deviceid,id,name,RxUtil'
# specify data formats
$query += '&RxUtil_formats=vals,avg'
# Filters and sorting
$query += '&RxUtil_timefilter=range=now - 30m to now - 1m&limit=10&RxUtil_sort=1,desc,avg'
# optional response formatting
$query += '&indent=3&links=none'
# Run the request
resp = do_request($server, $query, $user, $pword)
puts "#{resp.to_str}"

{
   "version":"2.1",
   "revision":"11",
   "info":"The Statseeker RESTful API",
   "data":{
      "success":true,
      "errmsg":"ok",
      "time":1623715763,
      "objects":[
         {
            "type":"cdt_port",
            "sequence":11,
            "status":{
               "success":true,
               "errcode":0
            },
            "data_total":21178,
            "data":[
               {
                  "deviceid":666,
                  "id":25349,
                  "name":"int.673",
                  "RxUtil":{
                     "vals":[
                        58.412,
                        59.2569,
                        62.7188,
                        62.8199,
                        60.9338,
                        61.2049,
                        62.5076,
                        64.7656,
                        68.891,
                        74.0913,
                        76.311,
                        79.5807,
                        82.8285,
                        89.1304,
                        93.4463,
                        94.0603,
                        97.8606,
                        102.481,
                        108.23,
                        108.733,
                        109.634,
                        111.784,
                        110.537,
                        118.258,
                        120.432,
                        121.998,
                        124.984,
                        131.161,
                        129.887
                     ],
                     "avg":91.2737
                  }
               },
               {
                  "deviceid":576,
                  "id":14508,
                  "name":"Gi2/6",
                  "RxUtil":{
                     "vals":[
                        14.7061,
                        84.3344,
                        91.9828,
                        93.1667,
                        94.9071,
                        95.082,
                        94.8615,
                        91.9828,
                        94.6667,
                        95,
                        95.1452,
                        94.8721,
                        93.4828,
                        93.3333,
                        96.3333,
                        95.2404,
                        91.9404,
                        93.1525,
                        93.3333,
                        91.8333,
                        94.8118,
                        96.3663,
                        93.6552,
                        91.8333,
                        91.6667,
                        94.8118,
                        94.8721,
                        93.4828,
                        93.3333
                     ],
                     "avg":90.8341
                  }
               },
               {
                  "deviceid":607,
                  "id":19079,
                  "name":"Gi5/1",
                  "RxUtil":{
                     "vals":[
                        32.9511,
                        82.6984,
                        94.9561,
                        93.7022,
                        92.1038,
                        93.1148,
                        95.8307,
                        92.4708,
                        94.5127,
                        90.6501,
                        91.9098,
                        95.467,
                        95.2381,
                        95,
                        95.0683,
                        92.6169,
                        95.4101,
                        95.1675,
                        93.6635,
                        93.4426,
                        94.8462,
                        94.8999,
                        94.8992,
                        92.2081,
                        94.4444,
                        93.8757,
                        95.8758,
                        18.9708,
                        2.16111
                     ],
                     "avg":85.7985
                  }
               },
               {
                  "deviceid":560,
                  "id":12370,
                  "name":"Gi4/24",
                  "RxUtil":{
                     "vals":[
                        93.6138,
                        96.0178,
                        93.7018,
                        94.878,
                        95.082,
                        95.0123,
                        94.928,
                        94.9887,
                        95,
                        91.9887,
                        94.7371,
                        94.8776,
                        96.4521,
                        95.2669,
                        94.9375,
                        82.538,
                        13.7182,
                        1.89558,
                        null,
                        null,
                        null,
                        null,
                        null,
                        null,
                        null,
                        null,
                        null,
                        null,
                        null
                     ],
                     "avg":84.4241
                  }
               },
               {
                  "deviceid":572,
                  "id":14061,
                  "name":"Gi1/16",
                  "RxUtil":{
                     "vals":[
                        94.9785,
                        94.8721,
                        91.9828,
                        93.1667,
                        94.9071,
                        95.082,
                        94.8615,
                        91.9828,
                        94.6667,
                        95,
                        95.1452,
                        94.8721,
                        94.9828,
                        93.5,
                        93.2316,
                        93.521,
                        91.7614,
                        93.1525,
                        94.8333,
                        92,
                        94.8118,
                        96.3663,
                        93.6552,
                        60.9933,
                        7.39,
                        1.83817,
                        1.91872,
                        1.8731,
                        1.86667
                     ],
                     "avg":77.2143
                  }
               },
               {
                  "deviceid":591,
                  "id":17044,
                  "name":"Gi6/20",
                  "RxUtil":{
                     "vals":[
                        1.87849,
                        36.1878,
                        87.6018,
                        93.6762,
                        94.8087,
                        95.082,
                        96.2094,
                        93.8999,
                        94.7404,
                        93.517,
                        93.6706,
                        95.8482,
                        95.2143,
                        95.0697,
                        95.0137,
                        92.5529,
                        95.5319,
                        95.1779,
                        93.5706,
                        93.3333,
                        94.9524,
                        94.9097,
                        96.3131,
                        95.2415,
                        93.5833,
                        22.1281,
                        3.58259,
                        1.87595,
                        1.895
                     ],
                     "avg":77.1402
                  }
               },
               {
                  "deviceid":92491,
                  "id":93714,
                  "name":"Gi5/21",
                  "RxUtil":{
                     "vals":[
                        75.9317,
                        76.1367,
                        75.4496,
                        74.7143,
                        74.1968,
                        75.9783,
                        76.6457,
                        76.8767,
                        76.9577,
                        76.8083,
                        76.3996,
                        76.9991,
                        77.3082,
                        76.5974,
                        75.1579,
                        74.208,
                        75.7776,
                        74.1712,
                        75.5847,
                        76.9485,
                        73.8196,
                        73.5756,
                        74.4403,
                        73.1962,
                        73.1154,
                        70.7376,
                        71.3308,
                        74.8943,
                        76.6727
                     ],
                     "avg":75.1942
                  }
               },
               {
                  "deviceid":468,
                  "id":7245,
                  "name":"Gi0/4",
                  "RxUtil":{
                     "vals":[
                        74.404,
                        74.1828,
                        76.5702,
                        77.0775,
                        77.3333,
                        75.5785,
                        73.5372,
                        74.079,
                        74.8937,
                        73.9347,
                        72.175,
                        73.2957,
                        72.9874,
                        76.0928,
                        76.1607,
                        74.4128,
                        74.838,
                        75.9916,
                        77.3333,
                        77.2873,
                        74.482,
                        72.616,
                        74.6077,
                        73.5125,
                        71.4153,
                        70.4813,
                        76.5989,
                        77.155,
                        74.8029
                     ],
                     "avg":74.753
                  }
               },
               {
                  "deviceid":542,
                  "id":11260,
                  "name":"Gi2/20",
                  "RxUtil":{
                     "vals":[
                        95.1452,
                        94.9481,
                        93.4181,
                        94.8958,
                        93.6339,
                        94.7923,
                        93.3563,
                        91.9333,
                        94.6271,
                        93.428,
                        94.9672,
                        94.8721,
                        94.9828,
                        93.5984,
                        94.7434,
                        95.1367,
                        93.3778,
                        93.3103,
                        96.3333,
                        93.6667,
                        94.9785,
                        94.9481,
                        62.6062,
                        7.5439,
                        1.87197,
                        1.89782,
                        1.86734,
                        1.83621,
                        1.89333
                     ],
                     "avg":74.2969
                  }
               },
               {
                  "deviceid":603,
                  "id":18345,
                  "name":"Gi3/11",
                  "RxUtil":{
                     "vals":[
                        75.2432,
                        76.9031,
                        74.3828,
                        73.5258,
                        73.8093,
                        74.4585,
                        75.7062,
                        73.6734,
                        74.6045,
                        74.9261,
                        73.7239,
                        74.2233,
                        75.8226,
                        75.2778,
                        74.8531,
                        76.0055,
                        74.3657,
                        75.7361,
                        73.3104,
                        70.7072,
                        72.137,
                        71.5355,
                        75.3817,
                        72.7648,
                        72.9251,
                        73.4308,
                        72.6468,
                        73.2978,
                        72.2705
                     ],
                     "avg":74.0568
                  }
               }
            ]
         }
      ]
   }
}
[top]

Example: Return the 10 Busiest Interfaces, According to their 90th Percentile Values, over the Last Hour

We are returning the deviceid and interface name to identify the interface.

cURLPythonRubyResponse

curl \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
	-H "Authorization: Bearer myToken" \
    -X GET \
	"https://your.statseeker.server/api/v2.1/cdt_port/?fields=cdt_device.name,name,RxUtil,InOctets&timefilter=range=now%20-%201h%20to%20now&RxUtil_formats=avg,max&InOctets_formats=percentile&InOctets_stats=%7B%22percentile%22:90%7D&InOctets_sort=1,desc,percentile&limit=10&indent=3&links=none"

# import requests for handling connection and encoding
import requests
import json
def do_request(server, query, user, pword):
    # Run auth request
    headers = { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' }
    url = f'https://{server}/ss-auth'
    authData = {'user': user, 'password': pword}
    resp = requests.post(url, headers=headers, data=authData, verify=False)
    headers['Content-Type'] = 'application/json'
    url = f'https://{server}/{query}'
    print(f'Get Auth Token: {resp.status_code}')
    if resp.status_code == 200:    
        # Authentication successful, Statseeker >= v5.5.4
        myToken = resp.json()
        headers['Authorization'] = f'Bearer {myToken["access_token"]}'
        resp = requests.get(url, headers=headers, verify=False)
    if resp.status_code == 401:
        print(f'Token auth failed: {resp.status_code}, trying basic auth')
        # Either Authentication was unsuccessful (Statseeker <  v5.5.4), or API set to use basic auth
        # Try basic auth
        resp = requests.get(url, headers=headers, auth=(user, pword), verify=False)
    return resp

# Statseeker Server IP
server = 'your.statseeker.server'
# credentials
user = 'api_user'
pword = 'user_password'
# API root endpoint
query = 'api/v2.1'
# specify target endpoint
query += '/cdt_port'
# specify fields to be returned
query += '?fields=cdt_device.name,name,RxUtil,InOctets'
# specify data formats
query += '&RxUtil_formats=avg,max&InOctets_formats=percentile&InOctets_stats={%22percentile%22:90}'
# Filters and sorting
query += '&timefilter=range=now -1h to now&InOctets_sort=1,desc,percentile&limit=10'
# optional response formatting
query += '&indent=3&links=none'
# Run the request
resp = do_request(server, query, user, pword)
if resp.status_code == 200:
    print(resp.status_code)
    print(resp.json())
else:
    print(f'Error: {resp.status_code} {resp.reason}')


# install with: $ gem install rest-client
require "rest_client"
require "json"
require "base64"

def try_basic(server, query, user, pword)
	headers = {
		:content_type => "json"
	}
	url = "https://" + server + "/" + query
	headers["Authorization"] = "Basic " + Base64.encode64("#{user}:#{pword}")
	return RestClient::Request.execute(
		:method => :get,
		:url => url,
		:headers => headers,
		:verify_ssl => false
	)
end

def do_request(server, query, user, pword)
    # Run auth request
    headers = {
        :content_type => "application/x-www-form-urlencoded"
    }
    url = "https://" + server + "/ss-auth"
    authData = {
       :user => user,
       :password => pword
    }
    begin
        resp = RestClient::Request.execute(
            :method => :post,
            :url => url,
            :headers => headers,
            :verify_ssl => false,
            :payload => authData
        )
    rescue RestClient::Unauthorized
		# bad credentials or Statseeker not v5.5.4 or higher
        try_basic(server, query, user, pword)
    else
        # Authentication successful. Statseeker at least v5.5.4
        headers = {
			:content_type => "application/json"
		}	
        url = "https://" + server + "/" + query
        rdata = JSON.parse(resp)
        headers["Authorization"] = "Bearer " + rdata.fetch("access_token")
        return RestClient::Request.execute(
            :method => :get,
            :url => url,
            :headers => headers,
            :verify_ssl => false,
        )
    end
	rescue RestClient::Unauthorized
		# Statseeker = v5.5.4 but configured for basic auth
        try_basic(server, query, user, pword)
end
# Statseeker Server IP
$server = 'your.statseeker.server'
# api user credentials
$user = 'api_user'
$pword = 'user_password'
# api root endpoint
$query = 'api/v2.1'
# specify target endpoint
$query += '/cdt_port'
# specify fields to be returned
$query += '/?fields=cdt_device.name,name,RxUtil,InOctets'
# specify data formats
$query += '&RxUtil_formats=avg,max&InOctets_formats=percentile&InOctets_stats={"percentile":90}'
# Filters and sorting
$query += '&timefilter=range=now -1h to now&InOctets_sort=1,desc,percentile&limit=10'
# optional response formatting
$query += '&indent=3&links=none'
# Run the request
resp = do_request($server, $query, $user, $pword)
puts "#{resp.to_str}"

{
   "version":"2.1",
   "revision":"11",
   "info":"The Statseeker RESTful API",
   "data":{
      "success":true,
      "errmsg":"ok",
      "time":1623720470,
      "objects":[
         {
            "type":"cdt_port",
            "sequence":11,
            "status":{
               "success":true,
               "errcode":0
            },
            "data_total":21178,
            "data":[
               {
                  "cdt_device.name":"R-GMM-AGG-07",
                  "name":"Po15",
                  "RxUtil":{
                     "max":15.4582,
                     "avg":13.5477
                  },
                  "InOctets":{
                     "percentile":112727000000.0
                  },
                  "id":28487
               },
               {
                  "cdt_device.name":"R-GMM-AGG-07",
                  "name":"Tu2924",
                  "RxUtil":{
                     "max":7.72051,
                     "avg":6.92405
                  },
                  "InOctets":{
                     "percentile":57139800000.0
                  },
                  "id":28512
               },
               {
                  "cdt_device.name":"R-GMM-AGG-07",
                  "name":"Tu3937",
                  "RxUtil":{
                     "max":7.71764,
                     "avg":6.82324
                  },
                  "InOctets":{
                     "percentile":54429300000.0
                  },
                  "id":28563
               },
               {
                  "cdt_device.name":"R-GMM-AGG-07",
                  "name":"Tu2942",
                  "RxUtil":{
                     "max":7.61665,
                     "avg":5.65903
                  },
                  "InOctets":{
                     "percentile":53692000000.0
                  },
                  "id":28528
               },
               {
                  "cdt_device.name":"R-GMM-AGG-07",
                  "name":"Tu2912",
                  "RxUtil":{
                     "max":4.5065,
                     "avg":3.86295
                  },
                  "InOctets":{
                     "percentile":32249500000.0
                  },
                  "id":28504
               },
               {
                  "cdt_device.name":"CDT-IP-Interface-Stats",
                  "name":"Ethernet3/30",
                  "RxUtil":{
                     "max":38.799,
                     "avg":35.7174
                  },
                  "InOctets":{
                     "percentile":28524500000.0
                  },
                  "id":25042
               },
               {
                  "cdt_device.name":"CDT-IP-Interface-Stats",
                  "name":"Ethernet3/27",
                  "RxUtil":{
                     "max":38.9375,
                     "avg":34.1723
                  },
                  "InOctets":{
                     "percentile":28171200000.0
                  },
                  "id":25038
               },
               {
                  "cdt_device.name":"R-GMM-AGG-07",
                  "name":"Tu3936",
                  "RxUtil":{
                     "max":3.8409,
                     "avg":3.41211
                  },
                  "InOctets":{
                     "percentile":27906200000.0
                  },
                  "id":28562
               },
               {
                  "cdt_device.name":"CDT-IP-Interface-Stats",
                  "name":"Ethernet3/18",
                  "RxUtil":{
                     "max":38.4306,
                     "avg":35.0934
                  },
                  "InOctets":{
                     "percentile":27854000000.0
                  },
                  "id":25028
               },
               {
                  "cdt_device.name":"CDT-IP-Interface-Stats",
                  "name":"Ethernet3/11",
                  "RxUtil":{
                     "max":35.2323,
                     "avg":28.6036
                  },
                  "InOctets":{
                     "percentile":25326800000.0
                  },
                  "id":25021
               }
            ]
         }
      ]
   }
}
[top]

Example: Return the Inbound Traffic 90th Percentile for the Last Hour on a specific Interface

cURLPythonRubyResponse

curl \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
	-H "Authorization: Bearer myToken" \
    -X GET \
    "https://your.statseeker.server/api/v2.1/cdt_port/<INTERFACE ID>/RxUtil?timefilter=range=%20now%20-%201h%20to%20now&formats=percentile&stats=%7B%22percentile%22:90%7D&links=none&indent=3"
	

# import requests for handling connection and encoding
import requests
import json
def do_request(server, query, user, pword):
    # Run auth request
    headers = { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' }
    url = f'https://{server}/ss-auth'
    authData = {'user': user, 'password': pword}
    resp = requests.post(url, headers=headers, data=authData, verify=False)
    headers['Content-Type'] = 'application/json'
    url = f'https://{server}/{query}'
    print(f'Get Auth Token: {resp.status_code}')
    if resp.status_code == 200:    
        # Authentication successful, Statseeker >= v5.5.4
        myToken = resp.json()
        headers['Authorization'] = f'Bearer {myToken["access_token"]}'
        resp = requests.get(url, headers=headers, verify=False)
    if resp.status_code == 401:
        print(f'Token auth failed: {resp.status_code}, trying basic auth')
        # Either Authentication was unsuccessful (Statseeker <  v5.5.4), or API set to use basic auth
        # Try basic auth
        resp = requests.get(url, headers=headers, auth=(user, pword), verify=False)
    return resp
# Statseeker Server IP
server = 'your.statseeker.server'
# credentials
user = 'api_user'
pword = 'user_password'
# API root endpoint
query = 'api/v2.1'
# specify target endpoint
query += '/cdt_port/<INTERFACE ID>/RxUtil'
# specify data formats
query += '/?formats=percentile&stats={"percentile":90}'
# Filters
query += '&timefilter=range=now -1h to now'
# optional response formatting
query += '&indent=3&links=none'
# Run the request
resp = do_request(server, query, user, pword)
if resp.status_code == 200:
    print(resp.status_code)
    print(resp.json())
else:
    print(f'Error: {resp.status_code} {resp.reason}')


# install with: $ gem install rest-client
require "rest_client"
require "json"
require "base64"

def try_basic(server, query, user, pword)
	headers = {
		:content_type => "json"
	}
	url = "https://" + server + "/" + query
	headers["Authorization"] = "Basic " + Base64.encode64("#{user}:#{pword}")
	return RestClient::Request.execute(
		:method => :get,
		:url => url,
		:headers => headers,
		:verify_ssl => false
	)
end

def do_request(server, query, user, pword)
    # Run auth request
    headers = {
        :content_type => "application/x-www-form-urlencoded"
    }
    url = "https://" + server + "/ss-auth"
    authData = {
       :user => user,
       :password => pword
    }
    begin
        resp = RestClient::Request.execute(
            :method => :post,
            :url => url,
            :headers => headers,
            :verify_ssl => false,
            :payload => authData
        )
    rescue RestClient::Unauthorized
		# bad credentials or Statseeker < v5.5.4
        try_basic(server, query, user, pword)
    else
        # Authentication successful. Statseeker >= v5.5.4
        headers = {
			:content_type => "application/json"
		}	
        url = "https://" + server + "/" + query
        rdata = JSON.parse(resp)
        headers["Authorization"] = "Bearer " + rdata.fetch("access_token")
        return RestClient::Request.execute(
            :method => :get,
            :url => url,
            :headers => headers,
            :verify_ssl => false,
        )
    end
	rescue RestClient::Unauthorized
		# Statseeker = v5.5.4 but configured for basic auth
        try_basic(server, query, user, pword)
end
# Statseeker Server IP
$server = 'your.statseeker.server'
# api user credentials
$user = 'api_user'
$pword = 'user_password'
# api root endpoint
$query = 'api/v2.1'
# specify target endpoint
$query += '/cdt_port/<INTERFACE ID>/RxUtil'
# specify data formats
$query += '/?formats=percentile&stats={"percentile":90}'
# Filters
$query += '&timefilter=range=now -1h to now'
# optional response formatting
$query += '&indent=3&links=none'
# Run the request
resp = do_request($server, $query, $user, $pword)
puts "#{resp.to_str}"

{

    'version':'2.1',
    'revision':'11',
    'info':'The Statseeker RESTful API',
    'data':{
        'success':True,
        'errmsg':'ok',
        'time':1623730579,
        'objects':[
            {
                'type':'cdt_port',
                'sequence':11,
                'status':{
                    'success':True,
                    'errcode':0
                },
                'data_total':1,
                'data':[
                    {
                        'RxUtil':{
                            'percentile':96.375
                        },
                        'id':<INTERFACE ID>
                    }
                ]
            }
        ]
    }

}
[top]

Example: Return traffic rate metrics for an interface, during business hours on a specific date

We are:

  • Filtering to a specified interface on a specified device
  • Restricting the response to between 6am – 6pm, on March 5th 2020
cURLPythonRubyResponse

curl \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
	-H "Authorization: Bearer myToken" \
    -X GET \
	'https://your.statseeker.server/api/v2.1/cdt_port?fields=name,deviceid,cdt_device.name,ifAlias,ifDescr,RxBps&name_filter=IS("<INTERFACE NAME>")&cdt_device.name_filter=IS("<DEVICE NAME>")&formats=95th,median,avg&timefilter=range=2020-03-05 to 2020-03-06;time=08:00 to 18:00&indent=3&links=none'	
	

# import requests for handling connection and encoding
import requests
import json
def do_request(server, query, user, pword):
    # Run auth request
    headers = { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' }
    url = f'https://{server}/ss-auth'
    authData = {'user': user, 'password': pword}
    resp = requests.post(url, headers=headers, data=authData, verify=False)
    headers['Content-Type'] = 'application/json'
    url = f'https://{server}/{query}'
    print(f'Get Auth Token: {resp.status_code}')
    if resp.status_code == 200:    
        # Authentication successful, Statseeker >= v5.5.4
        myToken = resp.json()
        headers['Authorization'] = f'Bearer {myToken["access_token"]}'
        resp = requests.get(url, headers=headers, verify=False)
    if resp.status_code == 401:
        print(f'Token auth failed: {resp.status_code}, trying basic auth')
        # Either Authentication was unsuccessful (Statseeker <  v5.5.4), or API set to use basic auth
        # Try basic auth
        resp = requests.get(url, headers=headers, auth=(user, pword), verify=False)
    return resp

# Statseeker Server IP
server = 'your.statseeker.server'
# credentials
user = 'api_user'
pword = 'user_password'
# API root endpoint
query = 'api/v2.1'
# specify target endpoint
query += '/cdt_port'
# specify fields to be returned
query += '/?fields=name,deviceid,cdt_device.name,ifAlias,ifDescr,RxBps'
# specify data formats
query += '&formats=95th,median,avg'
# Filters
query += '&name_filter=IS(%22<INTERFACE NAME>%22)&cdt_device.name_filter=IS(%22<DEVICE NAME>%22)&timefilter=range=2020-03-05 to 2020-03-06;time=08:00 to 18:00'
# optional response formatting
query += '&indent=3&links=none'
# Run the request
resp = do_request(server, query, user, pword)
if resp.status_code == 200:
    print(resp.status_code)
    print(resp.json())
else:
    print(f'Error: {resp.status_code} {resp.reason}')

# install with: $ gem install rest-client
require "rest_client"
require "json"
require "base64"

def try_basic(server, query, user, pword)
	headers = {
		:content_type => "json"
	}
	url = "https://" + server + "/" + query
	headers["Authorization"] = "Basic " + Base64.encode64("#{user}:#{pword}")
	return RestClient::Request.execute(
		:method => :get,
		:url => url,
		:headers => headers,
		:verify_ssl => false
	)
end

def do_request(server, query, user, pword)
    # Run auth request
    headers = {
        :content_type => "application/x-www-form-urlencoded"
    }
    url = "https://" + server + "/ss-auth"
    authData = {
       :user => user,
       :password => pword
    }
    begin
        resp = RestClient::Request.execute(
            :method => :post,
            :url => url,
            :headers => headers,
            :verify_ssl => false,
            :payload => authData
        )
    rescue RestClient::Unauthorized
		# bad credentials or Statseeker < v5.5.4
        try_basic(server, query, user, pword)
    else
        # Authentication successful. Statseeker >= v5.5.4
        headers = {
			:content_type => "application/json"
		}	
        url = "https://" + server + "/" + query
        rdata = JSON.parse(resp)
        headers["Authorization"] = "Bearer " + rdata.fetch("access_token")
        return RestClient::Request.execute(
            :method => :get,
            :url => url,
            :headers => headers,
            :verify_ssl => false,
        )
    end
	rescue RestClient::Unauthorized
		# Statseeker = v5.5.4 but configured for basic auth
        try_basic(server, query, user, pword)
end
# Statseeker Server IP
$server = 'your.statseeker.server'
# api user credentials
$user = 'api_user'
$pword = 'user_password'
# api root endpoint
$query = 'api/v2.1'
# specify target endpoint
$query += '/cdt_port'
# specify fields to be returned
$query += '/?fields=name,deviceid,cdt_device.name,ifAlias,ifDescr,RxBps'
# specify data formats
$query += '&formats=95th,median,avg'
# Filters
$query += '&name_filter=IS("<INTERFACE NAME>")&cdt_device.name_filter=IS("<DEVICE NAME>")&timefilter=range=2020-03-05 to 2020-03-06;time=08:00 to 18:00'
# optional response formatting
$query += '&indent=3&links=none'
# Run the request
resp = do_request($server, $query, $user, $pword)
puts "#{resp.to_str}"

{
    "version": "2.1",
    "revision": "13",
    "info": "The Statseeker RESTful API",
    "data": {
        "success": true,
        "errmsg": "ok",
        "time": 1615501619,
        "objects": [
            {
                "type": "cdt_port",
                "sequence": 1,
                "status": {
                    "success": true,
                    "errcode": 0
                },
                "data_total": 1,
                "data": [
                    {
                        "name": "<INTERFACE NAME>",
                        "deviceid": 26478,
                        "cdt_device.name": "<DEVICE NAME>",
                        "ifAlias": "Link to SanJose-core",
                        "ifDescr": "GigabitEthernet0/1",
                        "RxBps": {
                            "avg": 19653900.0,
                            "median": 19410600.0,
                            "95th": 23579900.0
                        }
						"id": 26486,
                    }
                ]
            }
        ]
    }
}
[top]

Group

The group resource allows you to create and populate the groups used by Statseeker for reporting, and for authorization when restricting visibility and access to functionality for users within Statseeker.

The group object
Field ID Field Title Type Get, Add, Update Description
entities Entities object G, U The entities that are assigned to this group

Formats Description
count Number of entities assigned to the group
exc_count Number of entities assigned to the group (excluding child entities not explicitly assigned)
exc_hexstr Hex bitstring representation of assigned entities (excluding child entities not explicitly assigned)
exc_list Array of entity ids assigned to the group (excluding child entities not explicitly assigned)
hexstr Hex bitstring representation of assigned entities
list Array of entity ids assigned to the group
objects Array of object names that have entities assigned to the group
id ID integer G ID of the group
name Name string G, A (required), U Name of the group


Group Mode

The Group object requires a mode be specified when performing PUT requests to make changes to the group’s members (entities). The mode specifies what the API should do with the entities when making changes.

Mode Description
clear Remove the specified entities from the group
set Remove all existing entities and then add the specified entities to the group
add Add the specified entities to the group

[top]

Example: Create a Group

cURLPythonRubyResponse

curl \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer myToken" \
	-X POST \
	"https://your.statseeker.server/api/v2.1/group/?indent=3" \
	-d '{"data":[{"name":"<GROUP NAME>"}]}'

# import requests for handling connection and encoding
import requests
import json
def do_request(server, query, user, pword, reqData):
    # Run auth request
    headers = { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' }
    url = f'https://{server}/ss-auth'
    authData = {'user': user, 'password': pword}
    resp = requests.post(url, headers=headers, data=authData, verify=False)
    headers['Content-Type'] = 'application/json'
    url = f'https://{server}/{query}'
    print(f'Get Auth Token: {resp.status_code}')
    if resp.status_code == 200:    
        # Authentication successful, Statseeker >= v5.5.4
        myToken = resp.json()
        headers['Authorization'] = f'Bearer {myToken["access_token"]}'
        resp = requests.post(url, headers=headers, data=reqData, verify=False)
    if resp.status_code == 401:
        print(f'Token auth failed: {resp.status_code}, trying basic auth')
        # Either Authentication was unsuccessful (Statseeker <  v5.5.4), or API set to use basic auth
        # Try basic auth
        resp = requests.post(url, headers=headers, auth=(user, pword), data=reqData, verify=False)
    return resp

# Statseeker Server IP
server = 'your.statseeker.server'
# credentials
user = 'api_user'
pword = 'user_password'
# API root endpoint
query = 'api/v2.1'
# specify target endpoint
query += '/group'
# optional response formatting
query += '/?indent=3&links=none'
# data
reqData = json.dumps({"data":[{"name":"<GROUP NAME>"}]})
# Run the request
resp = do_request(server, query, user, pword, reqData)
if resp.status_code == 200:
    print(resp.status_code)
    print(resp.json())
else:
    print(f'Error: {resp.status_code} {resp.reason}')

# install with: $ gem install rest-client
require "rest_client"
require "json"
require "base64"

def try_basic(server, query, user, pword, reqData)
	headers = {
		:content_type => "application/json"
	}
	url = "https://" + server + "/" + query
	headers["Authorization"] = "Basic " + Base64.encode64("#{user}:#{pword}")
	return RestClient::Request.execute(
		:method => :post,
		:url => url,
		:headers => headers,
		:verify_ssl => false,
		:payload => reqData
	)
end

def do_request(server, query, user, pword, reqData)
    # Run auth request
    headers = {
        :content_type => "application/x-www-form-urlencoded"
    }
    url = "https://" + server + "/ss-auth"
    authData = {
       :user => user,
       :password => pword
    }
    begin
        resp = RestClient::Request.execute(
            :method => :post,
            :url => url,
            :headers => headers,
            :verify_ssl => false,
            :payload => authData
        )
    rescue RestClient::Unauthorized
		# bad credentials or Statseeker < v5.5.4
        try_basic(server, query, user, pword, reqData)
    else		
        # Authentication successful. Statseeker >= v5.5.4
		headers = {
		:content_type => "application/json"
		}	
        url = "https://" + server + "/" + query
        rdata = JSON.parse(resp)
        headers["Authorization"] = "Bearer " + rdata.fetch("access_token")
        return RestClient::Request.execute(
			:method => :post,
			:url => url,
			:headers => headers,
			:verify_ssl => false,
			:payload => reqData
        )
    end
	rescue RestClient::Unauthorized
		# Statseeker = v5.5.4 but configured for basic auth
        try_basic(server, query, user, pword, reqData)
end
# Statseeker Server IP
$server = 'your.statseeker.server'
# api user credentials
$user = 'api_user'
$pword = 'user_password'
# api root endpoint
$query = 'api/v2.1'
# specify target endpoint
$query += '/group'
# optional response formatting
$query += '/?indent=3&links=none'
# configure payload
$reqData = '{"data":[{"name":"<GROUP NAME>"}]}'
# Run the request
resp = do_request($server, $query, $user, $pword, $reqData)
puts "#{resp.to_str}"

{
   "version":"2.1",
   "revision":"11",
   "info":"The Statseeker RESTful API",
   "data":{
      "success":true,
      "errmsg":"ok",
      "time":1623731624,
      "objects":[
         {
            "type":"group",
            "sequence":8,
            "status":{
               "success":true,
               "errcode":0
            },
            "data_total":1,
            "data":[
               {
                  "name":"<GROUP NAME>",
                  "id":94551
               }
            ]
         }
      ]
   }
}
[top]

Example: Populate a Group

When populating a group you use the /entities field endpoint and must specify a mode instructing the API on how to populate the group.

cURLPythonRubyResponse

curl \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer myToken" \
	-X PUT \
	"https://your.statseeker.server/api/v2.1/group/<GROUP ID>/entities/?indent=3" \
	-d '{"value":[286,287,288,289,290,291,292,293],"mode":"add"}'

# import requests for handling connection and encoding
import requests
import json
def do_request(server, query, user, pword, reqData):
    # Run auth request
    headers = { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' }
    url = f'https://{server}/ss-auth'
    authData = {'user': user, 'password': pword}
    resp = requests.post(url, headers=headers, data=authData, verify=False)
    headers['Content-Type'] = 'application/json'
    url = f'https://{server}/{query}'
    print(f'Get Auth Token: {resp.status_code}')
    if resp.status_code == 200:    
        # Authentication successful, Statseeker >= v5.5.4
        myToken = resp.json()
        headers['Authorization'] = f'Bearer {myToken["access_token"]}'
        resp = requests.put(url, headers=headers, data=reqData, verify=False)
    if resp.status_code == 401:
        print(f'Token auth failed: {resp.status_code}, trying basic auth')
        # Either Authentication was unsuccessful (Statseeker <  v5.5.4), or API set to use basic auth
        # Try basic auth
        resp = requests.put(url, headers=headers, auth=(user, pword), data=reqData, verify=False)
    return resp

# Statseeker Server IP
server = 'your.statseeker.server'
# credentials
user = 'api_user'
pword = 'user_password'
# API root endpoint
query = 'api/v2.1'
# specify target endpoint
query += '/group/<GROUP ID>/entities'
# optional response formatting
query += '/?indent=3&links=none'
# data
reqData = json.dumps({"value":[286,287,288,289,290,291,292,293],"mode":"add"})
# Run the request
resp = do_request(server, query, user, pword, reqData)
if resp.status_code == 200:
    print(resp.status_code)
    print(resp.json())
else:
    print(f'Error: {resp.status_code} {resp.reason}')

# install with: $ gem install rest-client
require "rest_client"
require "json"
require "base64"

def try_basic(server, query, user, pword, reqData)
	headers = {
		:content_type => "application/json"
	}
	url = "https://" + server + "/" + query
	headers["Authorization"] = "Basic " + Base64.encode64("#{user}:#{pword}")
	return RestClient::Request.execute(
		:method => :put,
		:url => url,
		:headers => headers,
		:verify_ssl => false,
		:payload => reqData
	)
end

def do_request(server, query, user, pword, reqData)
    # Run auth request
    headers = {
        :content_type => "application/x-www-form-urlencoded"
    }
    url = "https://" + server + "/ss-auth"
    authData = {
       :user => user,
       :password => pword
    }
    begin
        resp = RestClient::Request.execute(
            :method => :post,
            :url => url,
            :headers => headers,
            :verify_ssl => false,
            :payload => authData
        )
    rescue RestClient::Unauthorized
		# bad credentials or Statseeker < v5.5.4
        try_basic(server, query, user, pword, reqData)
    else		
        # Authentication successful. Statseeker >= v5.5.4
		headers = {
		:content_type => "application/json"
		}	
        url = "https://" + server + "/" + query
        rdata = JSON.parse(resp)
        headers["Authorization"] = "Bearer " + rdata.fetch("access_token")
        return RestClient::Request.execute(
			:method => :put,
			:url => url,
			:headers => headers,
			:verify_ssl => false,
			:payload => reqData
        )
    end
	rescue RestClient::Unauthorized
		# Statseeker = v5.5.4 but configured for basic auth
        try_basic(server, query, user, pword, reqData)
end
# Statseeker Server IP
$server = 'your.statseeker.server'
# api user credentials
$user = 'api_user'
$pword = 'user_password'
# api root endpoint
$query = 'api/v2.1'
# specify target endpoint
$query += '/group/<GROUP ID>/entities'
# optional response formatting
$query += '/?indent=3&links=none'
# configure payload
$reqData = '{"value":[286,287,288,289,290,291,292,293],"mode":"add"}'
# Run the request
resp = do_request($server, $query, $user, $pword, $reqData)
puts "#{resp.to_str}"

{
   "info":"The Statseeker RESTful API",
   "data":{
      "errmsg":"ok",
      "success":true,
      "time":1496200162
   },
   "links":[
      {
         "link":"/api/v2.1/group/<GROUP ID>/entities?&indent=3",
         "rel":"self"
      },
      {
         "link":"/api/v2.1",
         "rel":"base"
      },
      {
         "link":"/api/v2.1/group/<GROUP ID>",
         "rel":"collection"
      }
   ],
   "api_version":"2.1"
}
[top]

Example: Deleting a Group

cURLPythonRubyResponse

curl \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer myToken" \
	-X DELETE \
	"https://your.statseeker.server/api/v2.1/group/<GROUP ID>/?indent=3&links=none" 

# import requests for handling connection and encoding
import requests
import json
def do_request(server, query, user, pword):
    # Run auth request
    headers = { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' }
    url = f'https://{server}/ss-auth'
    authData = {'user': user, 'password': pword}
    resp = requests.post(url, headers=headers, data=authData, verify=False)
    headers['Content-Type'] = 'application/json'
    url = f'https://{server}/{query}'
    print(f'Get Auth Token: {resp.status_code}')
    if resp.status_code == 200:    
        # Authentication successful, Statseeker >= v5.5.4
        myToken = resp.json()
        headers['Authorization'] = f'Bearer {myToken["access_token"]}'
        resp = requests.delete(url, headers=headers, data=reqData, verify=False)
    if resp.status_code == 401:
        print(f'Token auth failed: {resp.status_code}, trying basic auth')
        # Either Authentication was unsuccessful (Statseeker <  v5.5.4), or API set to use basic auth
        # Try basic auth
        resp = requests.delete(url, headers=headers, auth=(user, pword), data=reqData, verify=False)
    return resp

# Statseeker Server IP
server = 'your.statseeker.server'
# credentials
user = 'api_user'
pword = 'user_password'
# API root endpoint
query = 'api/v2.1'
# specify target endpoint
query += '/group/<GROUP ID>'
# optional response formatting
query += '/?indent=3&links=none'
# Run the request
resp = do_request(server, query, user, pword)
if resp.status_code == 200:
    print(resp.status_code)
    print(resp.json())
else:
    print(f'Error: {resp.status_code} {resp.reason}')

# install with: $ gem install rest-client
require "rest_client"
require "json"
require "base64"

def try_basic(server, query, user, pword)
	headers = {
		:content_type => "application/json"
	}
	url = "https://" + server + "/" + query
	headers["Authorization"] = "Basic " + Base64.encode64("#{user}:#{pword}")
	return RestClient::Request.execute(
		:method => :delete,
		:url => url,
		:headers => headers,
		:verify_ssl => false
	)
end

def do_request(server, query, user, pword)
    # Run auth request
    headers = {
        :content_type => "application/x-www-form-urlencoded"
    }
    url = "https://" + server + "/ss-auth"
    authData = {
       :user => user,
       :password => pword
    }
    begin
        resp = RestClient::Request.execute(
            :method => :post,
            :url => url,
            :headers => headers,
            :verify_ssl => false,
            :payload => authData
        )
    rescue RestClient::Unauthorized
		# bad credentials or Statseeker < v5.5.4
        try_basic(server, query, user, pword, reqData)
    else		
        # Authentication successful. Statseeker >= v5.5.4
		headers = {
		:content_type => "application/json"
		}	
        url = "https://" + server + "/" + query
        rdata = JSON.parse(resp)
        headers["Authorization"] = "Bearer " + rdata.fetch("access_token")
        return RestClient::Request.execute(
			:method => :delete,
			:url => url,
			:headers => headers,
			:verify_ssl => false
        )
    end
	rescue RestClient::Unauthorized
		# Statseeker = v5.5.4 but configured for basic auth
        try_basic(server, query, user, pword)
end
# Statseeker Server IP
$server = 'your.statseeker.server'
# api user credentials
$user = 'api_user'
$pword = 'user_password'
# api root endpoint
$query = 'api/v2.1'
# specify target endpoint
$query += '/group/<GROUP ID>'
# optional response formatting
$query += '/?indent=3&links=none'
# Run the request
resp = do_request($server, $query, $user, $pword)
puts "#{resp.to_str}"

{
  "info": "The Statseeker RESTful API",
  "data": {
    "errmsg": "ok",
    "success": true,
    "time": 1496200297
  },
  "api_version": "2.1"
}
[top]

Example: Which Groups contain a specific entity (device, interface, user, etc.)

Return details on all groups containing a specified device.

Note: the id is returned in the response of any request which returns the device. Simply send a GET to the /api/v2.1/cdt_device resource-level endpoint (filtering by the device name) to retrieve the id.
cURLPythonRubyResponse

curl \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer myToken" \
	-X GET \
	"https://your.statseeker.server/api/v2.1/group/?fields=id,name,entities&entities_formats=count&entities_filter==<DEVICE ID>&entities_filter_format=list

# import requests for handling connection and encoding
import requests
import json
def do_request(server, query, user, pword):
    # Run auth request
    headers = { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' }
    url = f'https://{server}/ss-auth'
    authData = {'user': user, 'password': pword}
    resp = requests.post(url, headers=headers, data=authData, verify=False)
    headers['Content-Type'] = 'application/json'
    url = f'https://{server}/{query}'
    print(f'Get Auth Token: {resp.status_code}')
    if resp.status_code == 200:    
        # Authentication successful, Statseeker >= v5.5.4
        myToken = resp.json()
        headers['Authorization'] = f'Bearer {myToken["access_token"]}'
        resp = requests.get(url, headers=headers, verify=False)
    if resp.status_code == 401:
        print(f'Token auth failed: {resp.status_code}, trying basic auth')
        # Either Authentication was unsuccessful (Statseeker <  v5.5.4), or API set to use basic auth
        # Try basic auth
        resp = requests.get(url, headers=headers, auth=(user, pword), verify=False)
    return resp

# Statseeker Server IP
server = 'your.statseeker.server'
# credentials
user = 'api_user'
pword = 'user_password'
# API root endpoint
query = 'api/v2.1'
# specify target endpoint
query += '/group'
# specify fields to be returned
query += '/?fields=id,name,entities'
# specify data formats
query += '&entities_formats=count'
# Filters
query += '&entities_filter==<DEVICE ID>&entities_filter_format=list'
# optional response formatting
query += '&indent=3&links=none'
# Run the request
resp = do_request(server, query, user, pword)
if resp.status_code == 200:
    print(resp.status_code)
    print(resp.json())
else:
    print(f'Error: {resp.status_code} {resp.reason}') 

# install with: $ gem install rest-client
require "rest_client"
require "json"
require "base64"

def try_basic(server, query, user, pword)
	headers = {
		:content_type => "json"
	}
	url = "https://" + server + "/" + query
	headers["Authorization"] = "Basic " + Base64.encode64("#{user}:#{pword}")
	return RestClient::Request.execute(
		:method => :get,
		:url => url,
		:headers => headers,
		:verify_ssl => false
	)
end

def do_request(server, query, user, pword)
    # Run auth request
    headers = {
        :content_type => "application/x-www-form-urlencoded"
    }
    url = "https://" + server + "/ss-auth"
    authData = {
       :user => user,
       :password => pword
    }
    begin
        resp = RestClient::Request.execute(
            :method => :post,
            :url => url,
            :headers => headers,
            :verify_ssl => false,
            :payload => authData
        )
    rescue RestClient::Unauthorized
		# bad credentials or Statseeker < v5.5.4
        try_basic(server, query, user, pword)
    else
        # Authentication successful. Statseeker >= v5.5.4
        headers = {
			:content_type => "application/json"
		}	
        url = "https://" + server + "/" + query
        rdata = JSON.parse(resp)
        headers["Authorization"] = "Bearer " + rdata.fetch("access_token")
        return RestClient::Request.execute(
            :method => :get,
            :url => url,
            :headers => headers,
            :verify_ssl => false,
        )
    end
	rescue RestClient::Unauthorized
		# Statseeker = v5.5.4 but configured for basic auth
        try_basic(server, query, user, pword)
end
# Statseeker Server IP
$server = 'your.statseeker.server'
# api user credentials
$user = 'api_user'
$pword = 'user_password'
# api root endpoint
$query = 'api/v2.1'
# specify target endpoint
$query += '/group'
# specify fields to be returned
$query += '/?fields=id,name,entities'
# specify data formats
$query += '&entities_formats=count'
# Filters
$query += '&entities_filter==<DEVICE ID>&entities_filter_format=list'
# optional response formatting
$query += '&indent=3&links=none'
# Run the request
resp = do_request($server, $query, $user, $pword)
puts "#{resp.to_str}"

{
    "version": "2.1",
    "revision": "13",
    "info": "The Statseeker RESTful API",
    "data": {
        "success": true,
        "errmsg": "ok",
        "time": 1615841935,
        "objects": [
            {
                "type": "group",
                "sequence": 9,
                "status": {
                    "success": true,
                    "errcode": 0
                },
                "data_total": 5,
                "data": [
                    {
                        "id": 156472,
                        "name": "10.100.*.*",
                        "entities": {
                            "count": 51173
                        }
                    },
                    {
                        "id": 156893,
                        "name": "US Hardware",
                        "entities": {
                            "count": 12044
                        }
                    },
                    {
                        "id": 233023,
                        "name": "Switches",
                        "entities": {
                            "count": 58583
                        }
                    },
                    {
                        "id": 233024,
                        "name": "Chicago",
                        "entities": {
                            "count": 2347
                        }
                    },
                    {
                        "id": 233025,
                        "name": "Chicago Switches",
                        "entities": {
                            "count": 1985
                        }
                    }
                ]
            }
        ]
    }
}
[top]

Discovery Configuration

The discover_config resource allows you to configure Statseeker’s discovery process.

The discover_config Object
An array of Discover Configuration objects associated to IP Address Ranges. Each configuration in the array contains the following fields:

Field ID Field Title Type Get, Add, Update Description
communities Community Strings object G, U Comma separated SNMPv1 and SNMPv2 community strings
id ID integer G Discover config identifier/key
iftype Interface Types object G, U Comma separated list of interface types to include
ip_range_configurations Per IP Address Range Configuration object G, U An array of Discover Configuration objects associated to IP Address Ranges. Each configuration in the array contains the following fields:

Field ID Type Description
communities string Comma separated SNMPv1 and SNMPv2 community strings
enabled boolean Set the range configuration to be enabled/disabled
excludes string Comma separated sysdescr strings for entities to exclude from the configuration
iftypes string Comma separated iftypes strings for entities to include in the configuration
includes string Comma separated sysdescr strings for entities to include in the configuration
ip_range_text string Include range string specifying the IP range to be covered by the configuration
title string Name for the configuration rule

These configurations are in addition to the global discovery settings for the IP range specified in ranges. This allows you to apply specific include/exclude rules based on sysDescr and iftype to select IP ranges, and to restrict which community strings are sent to a given IP.

Note: community strings, and include/exclude rules, added in this way are in addition to the global rules, they do not replace the global rules. All exclude rules take precedence over any include rule.
ping_count Ping Run Count integer G, U Number of passes for the ping discover
ping_skip Ping Skip integer G, U Number of ipaddress to skip between each ping
ranges Ranges object G, U Comma separated discover ranges (using include/exclude syntax)
sysdescr SysDescr object G, U Comma separated SysDescr values to decide which devices to discover
ping_rate Ping Rate integer G, U Number of pings to send per second


Example: Updating the IP Ranges to be used during Discovery

cURLPythonRubyResponse

curl \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer myToken" \
	-X PUT \
	"https://your.statseeker.server/api/v2.1/discover_config/1?indent=3" \
	-d "{"data":[{"ranges":["include 10.100.0.0/16","exclude 10.100.[50-100].*","include 10.101.0.0/16","include 10.116.0.0/16"]}]}"

# import requests for handling connection and encoding
import requests
import json
def do_request(server, query, user, pword, reqData):
    # Run auth request
    headers = { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' }
    url = f'https://{server}/ss-auth'
    authData = {'user': user, 'password': pword}
    resp = requests.post(url, headers=headers, data=authData, verify=False)
    headers['Content-Type'] = 'application/json'
    url = f'https://{server}/{query}'
    print(f'Get Auth Token: {resp.status_code}')
    if resp.status_code == 200:    
        # Authentication successful, Statseeker >= v5.5.4
        myToken = resp.json()
        headers['Authorization'] = f'Bearer {myToken["access_token"]}'
        resp = requests.put(url, headers=headers, data=reqData, verify=False)
    if resp.status_code == 401:
        print(f'Token auth failed: {resp.status_code}, trying basic auth')
        # Either Authentication was unsuccessful (Statseeker <  v5.5.4), or API set to use basic auth
        # Try basic auth
        resp = requests.put(url, headers=headers, auth=(user, pword), data=reqData, verify=False)
    return resp

# Statseeker Server IP
server = 'your.statseeker.server'
# credentials
user = 'api_user'
pword = 'user_password'
# API root endpoint
query = 'api/v2.1'
# specify target endpoint
query += '/discover_config/1'
# optional response formatting
query += '/?indent=3&links=none'
# data
reqData = json.dumps({"data":[{"ranges":["include 10.100.0.0/16","exclude 10.100.[50-100].*","include 10.101.0.0/16","include 10.116.0.0/16"]}]})
# Run the request
resp = do_request(server, query, user, pword, reqData)
if resp.status_code == 200:
    print(resp.status_code)
    print(resp.json())
else:
    print(f'Error: {resp.status_code} {resp.reason}')

# install with: $ gem install rest-client
require "rest_client"
require "json"
require "base64"

def try_basic(server, query, user, pword, reqData)
	headers = {
		:content_type => "application/json"
	}
	url = "https://" + server + "/" + query
	headers["Authorization"] = "Basic " + Base64.encode64("#{user}:#{pword}")
	return RestClient::Request.execute(
		:method => :put,
		:url => url,
		:headers => headers,
		:verify_ssl => false,
		:payload => reqData
	)
end

def do_request(server, query, user, pword, reqData)
    # Run auth request
    headers = {
        :content_type => "application/x-www-form-urlencoded"
    }
    url = "https://" + server + "/ss-auth"
    authData = {
       :user => user,
       :password => pword
    }
    begin
        resp = RestClient::Request.execute(
            :method => :post,
            :url => url,
            :headers => headers,
            :verify_ssl => false,
            :payload => authData
        )
    rescue RestClient::Unauthorized
		# bad credentials or Statseeker < v5.5.4
        try_basic(server, query, user, pword, reqData)
    else		
        # Authentication successful. Statseeker >= v5.5.4
		headers = {
		:content_type => "application/json"
		}	
        url = "https://" + server + "/" + query
        rdata = JSON.parse(resp)
        headers["Authorization"] = "Bearer " + rdata.fetch("access_token")
        return RestClient::Request.execute(
			:method => :put,
			:url => url,
			:headers => headers,
			:verify_ssl => false,
			:payload => reqData
        )
    end
	rescue RestClient::Unauthorized
		# Statseeker = v5.5.4 but configured for basic auth
        try_basic(server, query, user, pword, reqData)
end
# Statseeker Server IP
$server = 'your.statseeker.server'
# api user credentials
$user = 'api_user'
$pword = 'user_password'
# api root endpoint
$query = 'api/v2.1'
# specify target endpoint
$query += '/discover_config/1'
# optional response formatting
$query += '/?indent=3&links=none'
# configure payload
$reqData = '{"data":[{"ranges":["include 10.100.0.0/16","exclude 10.100.[50-100].*","include 10.101.0.0/16","include 10.116.0.0/16"]}]}'
# Run the request
resp = do_request($server, $query, $user, $pword, $reqData)
puts "#{resp.to_str}"

{
  "info": "The Statseeker RESTful API",
  "data": {
    "errmsg": "ok",
    "success": true,
    "time": 1496200675
  },
  "api_version": "2.1"
}
[top]

Syslog

The syslog resource provides access to the syslog messages collected by Statseeker. The contents of these records can be reported on and used to trigger alerts.

The syslog Object
Field ID Field Title Type Get, Add, Update Description
entity Entity string G The name of the entity that owns this message
entityid Entity ID integer G, A (required) The ID of the entity that owns this message
id ID integer G Message Identifier
text Message Text string G, A (required) The message text
time Time integer G Message Time
type Type string G, A (required) Message Type
Options
  • lastx – Display the last x records, rather than using a timefilter
Links

This resource has links to the following:

[top]

Example: Retrieving details, from Syslog Records, on devices that ‘went down’ in the previous 24hrs

In this example we will retrieve details on all Syslog messages that contain a specified string, in the previous 24h hours.

cURLPythonRubyResponse

curl \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer myToken" \
	-X GET \
	-u user:pword "https://your.statseeker.server/api/v2.1/syslog/?indent=3&links=none&fields=entity,entityid,text,type,time&text_filter=LIKE(%22<FILTER STRING>%22)&time_timefilter=range%20=%20now%20-%201d%20to%20now"


# import requests for handling connection and encoding
import requests
import json
def do_request(server, query, user, pword):
    # Run auth request
    headers = { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' }
    url = f'https://{server}/ss-auth'
    authData = {'user': user, 'password': pword}
    resp = requests.post(url, headers=headers, data=authData, verify=False)
    headers['Content-Type'] = 'application/json'
    url = f'https://{server}/{query}'
    print(f'Get Auth Token: {resp.status_code}')
    if resp.status_code == 200:    
        # Authentication successful, Statseeker >= v5.5.4
        myToken = resp.json()
        headers['Authorization'] = f'Bearer {myToken["access_token"]}'
        resp = requests.get(url, headers=headers, verify=False)
    if resp.status_code == 401:
        print(f'Token auth failed: {resp.status_code}, trying basic auth')
        # Either Authentication was unsuccessful (Statseeker <  v5.5.4), or API set to use basic auth
        # Try basic auth
        resp = requests.get(url, headers=headers, auth=(user, pword), verify=False)
    return resp

# Statseeker Server IP
server = 'your.statseeker.server'
# credentials
user = 'api_user'
pword = 'user_password'
# API root endpoint
query = 'api/v2.1'
# specify target endpoint
query += '/syslog'
# specify fields to be returned
query += '/?fields=entity,entityid,text,type,time'
# Filters
query += '&text_filter=LIKE("<FILTER STRING>")&time_timefilter=range = now - 1d to now'
# optional response formatting
query += '&indent=3&links=none'
# Run the request
resp = do_request(server, query, user, pword)
if resp.status_code == 200:
    print(resp.status_code)
    print(resp.json())
else:
    print(f'Error: {resp.status_code} {resp.reason}')

# install with: $ gem install rest-client
require "rest_client"
require "json"
require "base64"

def try_basic(server, query, user, pword)
	headers = {
		:content_type => "json"
	}
	url = "https://" + server + "/" + query
	headers["Authorization"] = "Basic " + Base64.encode64("#{user}:#{pword}")
	return RestClient::Request.execute(
		:method => :get,
		:url => url,
		:headers => headers,
		:verify_ssl => false
	)
end

def do_request(server, query, user, pword)
    # Run auth request
    headers = {
        :content_type => "application/x-www-form-urlencoded"
    }
    url = "https://" + server + "/ss-auth"
    authData = {
       :user => user,
       :password => pword
    }
    begin
        resp = RestClient::Request.execute(
            :method => :post,
            :url => url,
            :headers => headers,
            :verify_ssl => false,
            :payload => authData
        )
    rescue RestClient::Unauthorized
		# bad credentials or Statseeker < v5.5.4
        try_basic(server, query, user, pword)
    else
        # Authentication successful. Statseeker >= v5.5.4
        headers = {
			:content_type => "application/json"
		}	
        url = "https://" + server + "/" + query
        rdata = JSON.parse(resp)
        headers["Authorization"] = "Bearer " + rdata.fetch("access_token")
        return RestClient::Request.execute(
            :method => :get,
            :url => url,
            :headers => headers,
            :verify_ssl => false,
        )
    end
	rescue RestClient::Unauthorized
		# Statseeker = v5.5.4 but configured for basic auth
        try_basic(server, query, user, pword)
end
# Statseeker Server IP
$server = 'your.statseeker.server'
# api user credentials
$user = 'api_user'
$pword = 'user_password'
# api root endpoint
$query = 'api/v2.1'
# specify target endpoint
$query += '/syslog'
# specify fields to be returned
$query += '/?fields=entity,entityid,text,type,time'
# Filters
$query += '&text_filter=LIKE("<FILTER STRING>")&time_timefilter=range = now - 1d to now'
# optional response formatting
$query += '&indent=3&links=none'
# Run the request
resp = do_request($server, $query, $user, $pword)
puts '#{resp.to_str}'

{
	"info": "The Statseeker RESTful API",
	"data": {
		"objects": [{
			"status": {
				"errcode": 0,
				"success": true
			},
			"data": [{
				"text": "local0.info  %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/10, changed state to down",
				"entity": "LosAngeles-swt1",
				"time": 1490240152,
				"entityid": 174,
				"type": "syslog",
				"id": 126619
			}, {
				"text": "local0.info  %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/7, changed state to down",
				"entity": "Helsinki-swt1",
				"time": 1490245557,
				"entityid": 313,
				"type": "syslog",
				"id": 126626
			}, {
				"text": "local0.info  %LINEPROTO-5-UPDOWN: Line protocol on Interface GigabitEthernet1/0/12, changed state to down",
				"entity": "CapeTown-swt2",
				"time": 1490246759,
				"entityid": 412,
				"type": "syslog",
				"id": 126628
			}, {
				"text": "local0.info  %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/18, changed state to down",
				"entity": "Mumbai-swt2",
				"time": 1490251556,
				"entityid": 379,
				"type": "syslog",
				"id": 126631
			}, {
				"text": "local0.info  %LINK-3-UPDOWN: Interface FastEthernet0/19, changed state to down",
				"entity": "Unknown (10.100.52.25)",
				"time": 1490270147,
				"entityid": 0,
				"type": "syslog",
				"id": 126641
			}, {
				"text": "local0.info  %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/24, changed state to down",
				"entity": "Budapest-swt4",
				"time": 1490271059,
				"entityid": 271,
				"type": "syslog",
				"id": 126642
			}, {
				"text": "local0.info  %LINK-3-UPDOWN: Interface FastEthernet0/18, changed state to down",
				"entity": "Phoenix-swt4",
				"time": 1490271643,
				"entityid": 201,
				"type": "syslog",
				"id": 126643
			}, {
				"text": "local0.info  %LINK-3-UPDOWN: Interface FastEthernet0/7, changed state to down",
				"entity": "Bangkok-swt1",
				"time": 1490279033,
				"entityid": 374,
				"type": "syslog",
				"id": 126647
			}, {
				"text": "local0.info  %LINK-3-UPDOWN: Interface GigabitEthernet1/0/20, changed state to down",
				"entity": "Unknown (10.100.52.25)",
				"time": 1490286824,
				"entityid": 0,
				"type": "syslog",
				"id": 126652
			}, {
				"text": "local0.info  %LINK-3-UPDOWN: Interface GigabitEthernet2/0/16, changed state to down",
				"entity": "Chicago-rtr",
				"time": 1490294444,
				"entityid": 185,
				"type": "syslog",
				"id": 126657
			}, {
				"text": "local0.info  %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/8, changed state to down",
				"entity": "Tokyo-swt1",
				"time": 1490301348,
				"entityid": 355,
				"type": "syslog",
				"id": 126661
			}, {
				"text": "local0.info  %LINK-3-UPDOWN: Interface GigabitEthernet1/0/8, changed state to down",
				"entity": "LosAngeles-rtr",
				"time": 1490305548,
				"entityid": 175,
				"type": "syslog",
				"id": 126664
			}, {
				"text": "local0.info  %LINK-3-UPDOWN: Interface GigabitEthernet1/0/18, changed state to down",
				"entity": "Helsinki-swt3",
				"time": 1490307644,
				"entityid": 311,
				"type": "syslog",
				"id": 126667
			}, {
				"text": "local0.info  %LINK-3-UPDOWN: Interface GigabitEthernet1/0/14, changed state to down",
				"entity": "Athens-rtr",
				"time": 1490316041,
				"entityid": 299,
				"type": "syslog",
				"id": 126671
			}, {
				"text": "local0.info  %LINK-3-UPDOWN: Interface FastEthernet0/28, changed state to down",
				"entity": "Melbourne-swt2",
				"time": 1490316942,
				"entityid": 397,
				"type": "syslog",
				"id": 126672
			}, {
				"text": "local0.info  %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/11, changed state to down",
				"entity": "Chicago-swt2",
				"time": 1490317855,
				"entityid": 183,
				"type": "syslog",
				"id": 126673
			}, {
				"text": "local0.info  %LINK-3-UPDOWN: Interface GigabitEthernet3/0/5, changed state to down",
				"entity": "Copenhagen-swt3",
				"time": 1490318756,
				"entityid": 331,
				"type": "syslog",
				"id": 126674
			}],
			"type": "syslog",
			"data_total": 17
		}],
		"errmsg": "ok",
		"success": true,
		"time": 1490325593
	},
	"api_version": "2.1"
}
[top]

Device and Interface Event Records (event_record)

The event_record resource provides access to the device and interface events recorded by Statseeker. The contents of these records can be reported on and used to trigger alerts.

The event_record Object
Field ID Field Title Type Get, Add, Update Description
delta Delta integer G The number of seconds since the last record of the same event
device Device string G The name of the device that owns the entity
deviceid Device ID integer G The ID of the device that owns the entity
entity Entity string G The name of the entity that owns the event
entityid Entity ID integer G, A The ID of the entity that owns the entity
entityTypeName Entity Type Name string G The name of the type of entity that owns the event
entityTypeTitle Entity Type Title string G The title of the type of entity that owns the event
event Event string G, A The event text associated to the record
eventid Event ID integer G, A (required) The event id associated to the record
id ID string G Event Record Identifier
note Note string G, U The note associated with the record
state State string G, A (required) The state text associated to the record
stateid State ID integer G, A The state id associated to the record
time Time integer G, A Epoch time that the record was created
Options
  • lastx – Display the last x records, rather than using a timefilter
Links

This resource has links to the following:

[top]

Example: Retrieving details, from Event Records, of interfaces that recovered from a ‘down’ state in the previous 3hrs

The delta value, found in each record in the response, details the duration that the interface was in a down state.

Note: a similar process can be used with the threshold_record resource to retrieve data on events triggered by breaches of configured thresholds.


cURLPythonRubyResponse

curl \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer myToken" \
	-X GET \
	-u user:pword "https://your.statseeker.server/api/v2.1/event_record/?indent=3&links=none&fields=event,eventid,device,deviceid,state,delta,time&state_filter=IS(%22up%22)&event_filter=IS(%22IF-MIB.ifOperStatus%22)&time_timefilter=range%20=%20now%20-%203h%20to%20now"


# import requests for handling connection and encoding
import requests
import json
def do_request(server, query, user, pword):
    # Run auth request
    headers = { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' }
    url = f'https://{server}/ss-auth'
    authData = {'user': user, 'password': pword}
    resp = requests.post(url, headers=headers, data=authData, verify=False)
    headers['Content-Type'] = 'application/json'
    url = f'https://{server}/{query}'
    print(f'Get Auth Token: {resp.status_code}')
    if resp.status_code == 200:    
        # Authentication successful, Statseeker >= v5.5.4
        myToken = resp.json()
        headers['Authorization'] = f'Bearer {myToken["access_token"]}'
        resp = requests.get(url, headers=headers, verify=False)
    if resp.status_code == 401:
        print(f'Token auth failed: {resp.status_code}, trying basic auth')
        # Either Authentication was unsuccessful (Statseeker <  v5.5.4), or API set to use basic auth
        # Try basic auth
        resp = requests.get(url, headers=headers, auth=(user, pword), verify=False)
    return resp

# Statseeker Server IP
server = 'your.statseeker.server'
# credentials
user = 'api_user'
pword = 'user_password'
# API root endpoint
query = 'api/v2.1'
# specify target endpoint
query += '/event_record'
# specify fields to be returned
query += '/?fields=event,eventid,device,deviceid,state,delta,time'
# Filters
query += '&state_filter=IS("up")&event_filter=IS("IF-MIB.ifOperStatus")&time_timefilter=range = now - 3h to now'
# optional response formatting
query += '&indent=3&links=none'
# Run the request
resp = do_request(server, query, user, pword)
if resp.status_code == 200:
    print(resp.status_code)
    print(resp.json())
else:
    print(f'Error: {resp.status_code} {resp.reason}')

# install with: $ gem install rest-client
require "rest_client"
require "json"
require "base64"

def try_basic(server, query, user, pword)
	headers = {
		:content_type => "json"
	}
	url = "https://" + server + "/" + query
	headers["Authorization"] = "Basic " + Base64.encode64("#{user}:#{pword}")
	return RestClient::Request.execute(
		:method => :get,
		:url => url,
		:headers => headers,
		:verify_ssl => false
	)
end

def do_request(server, query, user, pword)
    # Run auth request
    headers = {
        :content_type => "application/x-www-form-urlencoded"
    }
    url = "https://" + server + "/ss-auth"
    authData = {
       :user => user,
       :password => pword
    }
    begin
        resp = RestClient::Request.execute(
            :method => :post,
            :url => url,
            :headers => headers,
            :verify_ssl => false,
            :payload => authData
        )
    rescue RestClient::Unauthorized
		# bad credentials or Statseeker < v5.5.4
        try_basic(server, query, user, pword)
    else
        # Authentication successful. Statseeker >= v5.5.4
        headers = {
			:content_type => "application/json"
		}	
        url = "https://" + server + "/" + query
        rdata = JSON.parse(resp)
        headers["Authorization"] = "Bearer " + rdata.fetch("access_token")
        return RestClient::Request.execute(
            :method => :get,
            :url => url,
            :headers => headers,
            :verify_ssl => false,
        )
    end
	rescue RestClient::Unauthorized
		# Statseeker = v5.5.4 but configured for basic auth
        try_basic(server, query, user, pword)
end
# Statseeker Server IP
$server = 'your.statseeker.server'
# api user credentials
$user = 'api_user'
$pword = 'user_password'
# api root endpoint
$query = 'api/v2.1'
# specify target endpoint
$query += '/event_record'
# specify fields to be returned
$query += '/?fields=event,eventid,device,deviceid,state,delta,time'
# Filters
$query += '&state_filter=IS("up")&event_filter=IS("IF-MIB.ifOperStatus")&time_timefilter=range = now - 3h to now'
# optional response formatting
$query += '&indent=3&links=none'
# Run the request
resp = do_request($server, $query, $user, $pword)
puts "#{resp.to_str}"

{
	"info": "The Statseeker RESTful API",
	"data": {
		"objects": [{
			"status": {
				"errcode": 0,
				"success": true
			},
			"data": [{
				"eventid": 17,
				"time": 1490328180,
				"event": "IF-MIB.ifOperStatus",
				"state": "up",
				"deviceid": 185,
				"delta": 23520,
				"device": "Chicago-rtr",
				"id": "58D49A74-1-1"
			}, {
				"eventid": 81,
				"time": 1490324821,
				"event": "IF-MIB.ifOperStatus",
				"state": "up",
				"deviceid": 284,
				"delta": 3960,
				"device": "Warsaw-rtr",
				"id": "58D48D55-1-1"
			}, {
				"eventid": 81,
				"time": 1490327161,
				"event": "IF-MIB.ifOperStatus",
				"state": "up",
				"deviceid": 284,
				"delta": 480,
				"device": "Warsaw-rtr",
				"id": "58D49679-1-1"
			}, {
				"eventid": 97,
				"time": 1490329921,
				"event": "IF-MIB.ifOperStatus",
				"state": "up",
				"deviceid": 293,
				"delta": 3540,
				"device": "Athens-srv1",
				"id": "58D4A141-1-1"
			}, {
				"eventid": 97,
				"time": 1490332501,
				"event": "IF-MIB.ifOperStatus",
				"state": "up",
				"deviceid": 293,
				"delta": 1080,
				"device": "Athens-srv1",
				"id": "58D4AB55-1-1"
			}, {
				"eventid": 129,
				"time": 1490326021,
				"event": "IF-MIB.ifOperStatus",
				"state": "up",
				"deviceid": 334,
				"delta": 4260,
				"device": "Copenhagen-rtr",
				"id": "58D49205-1-1"
			}, {
				"eventid": 145,
				"time": 1490324821,
				"event": "IF-MIB.ifOperStatus",
				"state": "up",
				"deviceid": 350,
				"delta": 6900,
				"device": "Shanghai-rtr",
				"id": "58D48D55-2-1"
			}, {
				"eventid": 145,
				"time": 1490328421,
				"event": "IF-MIB.ifOperStatus",
				"state": "up",
				"deviceid": 350,
				"delta": 2040,
				"device": "Shanghai-rtr",
				"id": "58D49B65-1-1"
			}, {
				"eventid": 177,
				"time": 1490329802,
				"event": "IF-MIB.ifOperStatus",
				"state": "up",
				"deviceid": 378,
				"delta": 19741,
				"device": "Delhi-rtr",
				"id": "58D4A0CA-1-1"
			}, {
				"eventid": 209,
				"time": 1490332022,
				"event": "IF-MIB.ifOperStatus",
				"state": "up",
				"deviceid": 390,
				"delta": 840,
				"device": "Chennai-rtr",
				"id": "58D4A976-1-1"
			}, {
				"eventid": 209,
				"time": 1490332142,
				"event": "IF-MIB.ifOperStatus",
				"state": "up",
				"deviceid": 390,
				"delta": 60,
				"device": "Chennai-rtr",
				"id": "58D4A9EE-1-1"
			}, {
				"eventid": 209,
				"time": 1490332502,
				"event": "IF-MIB.ifOperStatus",
				"state": "up",
				"deviceid": 390,
				"delta": 120,
				"device": "Chennai-rtr",
				"id": "58D4AB56-1-1"
			}, {
				"eventid": 225,
				"time": 1490325842,
				"event": "IF-MIB.ifOperStatus",
				"state": "up",
				"deviceid": 414,
				"delta": 840,
				"device": "CapeTown-rtr",
				"id": "58D49152-1-1"
			}, {
				"eventid": 225,
				"time": 1490328002,
				"event": "IF-MIB.ifOperStatus",
				"state": "up",
				"deviceid": 414,
				"delta": 1080,
				"device": "CapeTown-rtr",
				"id": "58D499C2-1-1"
			}, {
				"eventid": 241,
				"time": 1490323442,
				"event": "IF-MIB.ifOperStatus",
				"state": "up",
				"deviceid": 417,
				"delta": 300,
				"device": "PortElizabeth-rtr",
				"id": "58D487F2-1-1"
			}, {
				"eventid": 241,
				"time": 1490327942,
				"event": "IF-MIB.ifOperStatus",
				"state": "up",
				"deviceid": 417,
				"delta": 3900,
				"device": "PortElizabeth-rtr",
				"id": "58D49986-1-1"
			}, {
				"eventid": 241,
				"time": 1490329982,
				"event": "IF-MIB.ifOperStatus",
				"state": "up",
				"deviceid": 417,
				"delta": 1440,
				"device": "PortElizabeth-rtr",
				"id": "58D4A17E-1-1"
			}, {
				"eventid": 257,
				"time": 1490326322,
				"event": "IF-MIB.ifOperStatus",
				"state": "up",
				"deviceid": 423,
				"delta": 6060,
				"device": "Pretoria-rtr",
				"id": "58D49332-1-1"
			}, {
				"eventid": 257,
				"time": 1490330462,
				"event": "IF-MIB.ifOperStatus",
				"state": "up",
				"deviceid": 423,
				"delta": 2280,
				"device": "Pretoria-rtr",
				"id": "58D4A35E-2-1"
			}, {
				"eventid": 257,
				"time": 1490331122,
				"event": "IF-MIB.ifOperStatus",
				"state": "up",
				"deviceid": 423,
				"delta": 360,
				"device": "Pretoria-rtr",
				"id": "58D4A5F2-1-1"
			}],
			"type": "event_record",
			"data_total": 20
		}],
		"errmsg": "ok",
		"success": true,
		"time": 1490333357
	},
	"api_version": "2.0"
}
[top]

Resource Reference


ACI Application Profile

Description

The custom data entities for the aci_application table

Table

cdt_aci_application

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G The poll state of the entity

  • on
  • off
aci_tenant ACI Tenant string G A policy owner in the virtual fabric. A tenant can be either a private or a shared entity. For example, you can create a tenant with contexts and bridge domains shared by other tenant. A shared type of tenant is typically named common, default, or infra.
health Health integer G Health of ACI Application Profile
title Title string G ACI Application Profile Name
Links

This resource has links to the following:

[reference]  [top]

ACI Bridging Domain

Description

The custom data entities for the aci_bridge_domain table

Table

cdt_aci_bridge_domain

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G The poll state of the entity

  • on
  • off
aci_tenant ACI Tenant string G A policy owner in the virtual fabric. A tenant can be either a private or a shared entity. For example, you can create a tenant with contexts and bridge domains shared by other tenant. A shared type of tenant is typically named common, default, or infra.
broadcast_ip Multicast Group IP Address string G Outer multicast group IP address.
health Health integer G Health
Timeseries Data: Stats, Formats & Options
mac MAC string G MAC Address
title Title string G Bridging Domain Name
type Type string G Bridging Domain Type
Links

This resource has links to the following:

[reference]  [top]

ACI Client Endpoint

Description

The custom data entities for the aci_cep table

Table

cdt_aci_cep

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G The poll state of the entity

  • on
  • off
aci_epg EPG string G A set of requirements for the application-level EPG instance. The policy regulates connectivity and visibility among the end points within the scope of the policy.
ip IP Address string G IP Address of Client Endpoint
mac MAC Address string G The MAC Address
title Title string G Name of Client Endpoint
vlan VLAN string G The VXLAN or VLAN
Links

This resource has links to the following:

[reference]  [top]

ACI Endpoint Groups

Description

The custom data entities for the aci_epg table

Table

cdt_aci_epg

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G The poll state of the entity

  • on
  • off
aci_application ACI Application Profile string G The application profile is a set of requirements that an application instance has on the virtualizable fabric. The policy regulates connectivity and visibility among endpoints within the scope of the policy.
config_state Configuration State string G The configuration state of the endpoint group
Can be combined with an event format for event-based analytics, see Event Formats.
health Health integer G Health of the EPG
Timeseries Data: Stats, Formats & Options
title Title string G Name of the Endpoint Group
Links

This resource has links to the following:

[reference]  [top]

ACI Fault

Description

The custom data entities for the aci_fault table

Table

cdt_aci_fault

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G The poll state of the entity

  • on
  • off
ack Acknowledged string G Acknowledged
cause Cause string G Fault Cause
changeSet Change string G Change Set
code Code string G Fault Code
created Created time G Fault Creation Time
delegated Delegated string G Delegated
descr Description string G Description
domain Domain string G Domain
highestSeverity High Severity string G Highest Severity
lastTransition Last Transition time G Last Transition
occur Occurences integer G Number of Occurences
Timeseries Data: Stats, Formats & Options
origSeverity Original Severity string G Original Severity
prevSeverity Previous Severity string G Previous Severity
rule Rule string G Rule
severity Severity string G Severity
subject Subject string G Subject
type Type string G Type
Links

This resource has links to the following:

[reference]  [top]

ACI Fault Summary

Description

The custom data entities for the aci_fault_summary table

Table

cdt_aci_fault_summary

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G The poll state of the entity

  • on
  • off
ack_delegated_faults Acknowledged Delegated Faults integer G Number of Acknowledged Delegated Faults
Timeseries Data: Stats, Formats & Options
ack_faults Acknowledged Faults integer G Number of Acknowledged Faults
Timeseries Data: Stats, Formats & Options
delegated_faults Delegated Faults integer G Number of Delegated Faults
Timeseries Data: Stats, Formats & Options
faults Faults integer G Number of Faults
Timeseries Data: Stats, Formats & Options
severity Severity string G Severity
title Title string G Title
type Type string G Type
Links

This resource has links to the following:

[reference]  [top]

ACI Node

Description

The custom data entities for the aci_node table

Table

cdt_aci_node

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G The poll state of the entity

  • on
  • off
aci_pod ACI Pod string G ACI Pod
admin_state Admin State string G ACI Node Administrative State
Can be combined with an event format for event-based analytics, see Event Formats.
fabric_domain ACI Fabric Domain string G ACI Fabric Domain
fabric_state ACI Fabric State string G ACI Fabric State
Can be combined with an event format for event-based analytics, see Event Formats.
health Health integer G Health
Timeseries Data: Stats, Formats & Options
ip IP Address string G ACI Node Management IP Address
model Model string G Model
serial Serial string G Serial
state State string G ACI Node State
Can be combined with an event format for event-based analytics, see Event Formats.
title Title string G ACI Node Name
type Type string G ACI Node Type
vendor vendor string G vendor
Links

This resource has links to the following:

[reference]  [top]

ACI Pod

Description

The custom data entities for the aci_pod table

Table

cdt_aci_pod

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G The poll state of the entity

  • on
  • off
health Health integer G Health
Timeseries Data: Stats, Formats & Options
title Title string G ACI Pod
Links

This resource has links to the following:

[reference]  [top]

ACI Subnet

Description

The custom data entities for the aci_subnet table

Table

cdt_aci_subnet

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G The poll state of the entity

  • on
  • off
aci_bridge_domain ACI Bridging Domain string G ACI Bridging Domain
alias Alias string G Subnet Alias
ip IP Address Range string G IP Address Range
title Title string G Subnet Name
Links

This resource has links to the following:

[reference]  [top]

ACI Tenant

Description

The custom data entities for the aci_tenant table

Table

cdt_aci_tenant

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G The poll state of the entity

  • on
  • off
health Health integer G Health
Timeseries Data: Stats, Formats & Options
title Title string G ACI Tenant Name
Links

This resource has links to the following:

[reference]  [top]

ACI Private Network

Description

The custom data entities for the aci_vrf table

Table

cdt_aci_vrf

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G The poll state of the entity

  • on
  • off
aci_tenant ACI Tenant string G aci_tenant
health Health integer G health
Timeseries Data: Stats, Formats & Options
title Title string G Name for the Network Context
Links

This resource has links to the following:

[reference]  [top]

Apcon Interface

Description

The custom data entities for the apcon_port table

Table

cdt_apcon_port

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G, U The poll state of the entity

  • on
  • off
InBroadcastPkts Rx Bcast Pkts integer G Broadcast packets received.
Timeseries Data: Stats, Formats & Options
InMulticastPkts Rx Mcast Pkts integer G Multicast packets received.
Timeseries Data: Stats, Formats & Options
InOctets Rx Bytes integer G Receive byte count.
Timeseries Data: Stats, Formats & Options
InUcastPkts Rx Ucast Pkts integer G Unicast packets received.
Timeseries Data: Stats, Formats & Options
OutBroadcastPkts Tx Bcast Pkts integer G Broadcast packets transmitted.
Timeseries Data: Stats, Formats & Options
OutMulticastPkts Tx Mcast Pkts integer G Multicast packets transmitted.
Timeseries Data: Stats, Formats & Options
OutOctets Tx Bytes integer G Transmit byte count.
Timeseries Data: Stats, Formats & Options
OutUcastPkts Tx Ucast Pkts integer G Unicast packets transmitted.
Timeseries Data: Stats, Formats & Options
RxBps Rx Bps integer G Receive bits per second.
Timeseries Data: Stats, Formats & Options
RxUtil Rx Util float G Receive Utilization
Timeseries Data: Stats, Formats & Options
Speed Speed integer G, U Port Speed.
TxBps Tx Bps integer G Transmit bits per second.
Timeseries Data: Stats, Formats & Options
TxUtil Tx Util float G Transmit Utilization
Timeseries Data: Stats, Formats & Options
Links

This resource has links to the following:

[reference]  [top]

Cisco APPNAV

Description

The custom data entities for the appnav_cisco table

Table

cdt_appnav_cisco

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G, U The poll state of the entity

  • on
  • off
cAppNavACACGName Controller Group string G, U This object indicates the name of the AppNav controller group to which given AppNav controller belongs.
cAppNavACCurrentCMState Controller Member State string G, U This object indicates the current cluster membership state of the given AppNav controller, one of:

  • alive – the AppNav controller or service node is in contact of the AppNav cluster
  • dead – contact to the given AppNav controller or service node from the AppNav cluster is lost
  • excluded – the AppNav controller/service node is not a part of the AppNav cluster
  • inactive – the given AppNav controller is added to config but is inactive because of zombies
  • na – the given AppNav controller/service node has no status information available when service context is in the admin disabled state
  • partial – the given AppNav controller/service node is partially part of the AppNav cluster
  • zombie – the AppNav controller is removed from config but is still alive


Can be combined with an event format for event-based analytics, see Event Formats.

cAppNavACIpAddr Controller IP string G, U This object indicates the IP address of the AppNav controller
cAppNavACIpAddrType Controller IP Type string G This object indicates the address type of the cAppNavACIpAddr. The cAppNavACEntries are only valid for address type of IPv4 and IPv6.
cAppNavACServContextName Controller Service Context string G, U This object indicates the name of the service context to which given AppNav controller belongs.
cAppNavSNCurrentCMState Node Member State string G, U This object indicates the current cluster membership state of the given service node, one of:

  • alive – the AppNav controller or service node is in contact of the AppNav cluster
  • dead – contact to the given AppNav controller or service node from the AppNav cluster is lost
  • excluded – the AppNav controller/service node is not a part of the AppNav cluster
  • inactive – the given AppNav controller is added to config but is inactive because of zombies
  • na – the given AppNav controller/service node has no status information available when service context is in the admin disabled state
  • partial – the given AppNav controller/service node is partially part of the AppNav cluster
  • zombie – the AppNav controller is removed from config but is still alive


Can be combined with an event format for event-based analytics, see Event Formats.

cAppNavSNIpAddr Node IP string G, U This object indicates the IP address of the given service node.
cAppNavSNIpAddrType Node IP Type string G, U This object indicates the address type of cacSnIpAddr. cacSNEntries are only valid for address type of IPv4 and IPv6.
cAppNavSNSNGName Node Group string G, U This object indicates the name of the service node group to which given service node belongs.
cAppNavSNServContextName Node Context string G, U This object indicates the name of the service context to which given service node belongs.
Links

This resource has links to the following:

[reference]  [top]

BGP Peer

Description

The custom data entities for the bgp_peer table

Table

cdt_bgp_peer

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G, U The poll state of the entity

  • on
  • off
AdminStatus Admin Status string G, U The desired state of the BGP connection.
Can be combined with an event format for event-based analytics, see Event Formats.

  • Start
  • Stop
ConnectRetryInterval ConnectRetry Interval integer G, U Time interval for the ConnectRetry timer.
FsmEstablishedTime FSM Established Time integer G This timer indicates how long this peer has been in the established state or how long since this peer was last in the established state.
Timeseries Data: Stats, Formats & Options
FsmEstablishedTransitions FSM Established Transitions integer G The total number of times the BGP FSM transitioned into the established state for this peer.
Timeseries Data: Stats, Formats & Options
HoldTime Hold Time integer G, U Time interval for the Hold Timer established with the peer.
KeepAlive Keep Alive integer G, U Time interval for the KeepAlive timer established with the peer.
LocalAddr Local IP string G, U The local IP address of this entry’s BGP connection.
LocalPort Local Port integer G, U The local port for the TCP connection between the BGP peers.
MinASOriginationInterval Min AS Origination Interval integer G, U Time interval for the MinASOriginationInterval timer.
MinRouteAdvertisementInterval Min Route Advertisement Interval integer G, U Time interval for the MinRouteAdvertisementInterval timer.
NegotiatedVersion Negotiated Version integer G, U The negotiated version of BGP running between the two peers.
PeerIdentifier Peer Identifier string G, U
RemoteAddr Remote IP string G, U The remote IP address of this entry’s BGP peer.
RemoteAs Remote Autonomous System Number string G, U The remote autonomous system number received in the BGP OPEN message.
RemotePort Remote Port integer G, U The remote port for the TCP connection between the BGP peers.
RxTotalMessages Rx Messages integer G The total number of messages received from the remote peer on this connection.
Timeseries Data: Stats, Formats & Options
RxUpdateElapsedTime Rx Update Elapsed Time integer G Elapsed time since the last BGP UPDATE message was received from the peer.
Timeseries Data: Stats, Formats & Options
RxUpdates Rx Updates integer G The number of BGP UPDATE messages received on this connection.
Timeseries Data: Stats, Formats & Options
State State string G, U The BGP peer connection state, one of:

  • active
  • connect
  • established
  • idle
  • opensent
  • openconfirm

Can be combined with an event format for event-based analytics, see Event Formats.

TxTotalMessages Tx Messages integer G The total number of messages transmitted to the remote peer on this connection.
Timeseries Data: Stats, Formats & Options
TxUpdates Tx Updates integer G The number of BGP UPDATE messages transmitted on this connection.
Timeseries Data: Stats, Formats & Options
Links

This resource has links to the following:

[reference]  [top]

BGP Peer Address Family Prefix – Cisco

Description

The custom data entities for the bgp_peer_addr_family_prefix_cisco table

Table

cdt_bgp_peer_addr_family_prefix_cisco

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G, U The poll state of the entity

  • on
  • off
AcceptedPrefixes Accepted Prefixes integer G Number of accepted route prefixes for an address family on this connection.
Timeseries Data: Stats, Formats & Options
AddrFamilyAfi AFI Index string G Address family identifier (e.g. IPv4, IPv6).
AddrFamilyName Address family name string G, U Implementation specific address family name.
AddrFamilySafi SAFI Index string G Subsequent address family identifier (e.g. unicast, multicast).
AdvertisedPrefixes Advertised Prefixes integer G Incremented when a route prefix is advertised for an address family on this connection
Timeseries Data: Stats, Formats & Options
DeniedPrefixes Denied Prefixes integer G Incremented when a route prefix for an address family on this connection is denied.
Timeseries Data: Stats, Formats & Options
PrefixAdminLimit Admin Limit integer G, U Max number of route prefixes accepted for an address family on this connection.
PrefixClearThreshold Clear Threshold integer G, U Prefix threshold value (%) to clear warning message for an address family on this connection.
PrefixThreshold Prefix Threshold integer G, U Prefix threshold value (%) to generate warning message for an address family on this connection.
RemoteAddr Remote IP string G The remote IP address of this entry’s BGP peer.
SuppressedPrefixes Suppressed Prefixes integer G Incremented when a route prefix is suppressed from being sent for an address family on this connection.
Timeseries Data: Stats, Formats & Options
WithdrawnPrefixes Withdrawn Prefixes integer G Incremented when a route prefix is withdrawn for an address family on this connection
Timeseries Data: Stats, Formats & Options
Links

This resource has links to the following:

[reference]  [top]

BGP Peer – Cisco

Description

The custom data entities for the bgp_peer_cisco table

Table

cdt_bgp_peer_cisco

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G, U The poll state of the entity

  • on
  • off
AdminStatus Admin Status string G The desired state of the BGP connection.
Can be combined with an event format for event-based analytics, see Event Formats.

  • Start
  • Stop
ConnectRetryInterval ConnectRetry Interval integer G Time interval for the ConnectRetry timer.
FsmEstablishedTime FSM Established Time integer G This timer indicates how long this peer has been in the established state or how long since this peer was last in the established state.
Timeseries Data: Stats, Formats & Options
FsmEstablishedTransitions FSM Established Transitions integer G The total number of times the BGP FSM transitioned into the established state for this peer.
Timeseries Data: Stats, Formats & Options
HoldTime Hold Time integer G Time interval for the Hold Timer established with the peer.
KeepAlive Keep Alive integer G Time interval for the KeepAlive timer established with the peer.
LocalAddr Local IP string G The local IP address of this entry’s BGP connection.
LocalPort Local Port integer G The local port for the TCP connection between the BGP peers.
MinASOriginationInterval Min AS Origination Interval integer G Time interval for the MinASOriginationInterval timer.
MinRouteAdvertisementInterval Min Route Advertisement Interval integer G Time interval for the MinRouteAdvertisementInterval timer.
NegotiatedVersion Negotiated Version integer G The negotiated version of BGP running between the two peers.
PeerIdentifier Peer Identifier string G
RemoteAddr Remote IP string G The remote IP address of this entry’s BGP peer.
RemoteAs Remote Autonomous System Number string G The remote autonomous system number received in the BGP OPEN message.
RemotePort Remote Port integer G The remote port for the TCP connection between the BGP peers.
RxTotalMessages Rx Messages integer G The total number of messages received from the remote peer on this connection.
Timeseries Data: Stats, Formats & Options
RxUpdateElapsedTime Rx Update Elapsed Time integer G Elapsed time since the last BGP UPDATE message was received from the peer.
Timeseries Data: Stats, Formats & Options
RxUpdates Rx Updates integer G The number of BGP UPDATE messages received on this connection.
Timeseries Data: Stats, Formats & Options
State State string G The BGP peer connection state

  • active
  • connect
  • established
  • idle
  • opensent
  • openconfirm

Can be combined with an event format for event-based analytics, see Event Formats.

TxTotalMessages Tx Messages integer G The total number of messages transmitted to the remote peer on this connection.
Timeseries Data: Stats, Formats & Options
TxUpdates Tx Updates integer G The number of BGP UPDATE messages transmitted on this connection.
Timeseries Data: Stats, Formats & Options
Links

This resource has links to the following:

[reference]  [top]

BGP Peer – Juniper

Description

The custom data entities for the bgp_peer_juniper table

Table

cdt_bgp_peer_juniper

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G, U The poll state of the entity

  • on
  • off
AdminStatus Admin Status string G The desired state of the BGP connection.
Can be combined with an event format for event-based analytics, see Event Formats.

  • Start
  • Stop
ConnectRetryInterval ConnectRetry Interval integer G Time interval for the ConnectRetry timer.
FsmEstablishedTime FSM Established Time integer G This timer indicates how long this peer has been in the established state or how long since this peer was last in the established state.
Timeseries Data: Stats, Formats & Options
FsmEstablishedTransitions FSM Established Transitions integer G The total number of times the BGP FSM transitioned into the established state for this peer.
Timeseries Data: Stats, Formats & Options
HoldTime Hold Time integer G Time interval for the Hold Timer established with the peer.
KeepAlive Keep Alive integer G Time interval for the KeepAlive timer established with the peer.
LocalAddr Local IP string G The local IP address of this entry’s BGP connection.
LocalPort Local Port integer G The local port for the TCP connection between the BGP peers.
MinASOriginationInterval Min AS Origination Interval integer G Time interval for the MinASOriginationInterval timer.
MinRouteAdvertisementInterval Min Route Advertisement Interval integer G Time interval for the MinRouteAdvertisementInterval timer.
NegotiatedVersion Negotiated Version integer G The negotiated version of BGP running between the two peers.
PeerIdentifier Peer Identifier string G
RemoteAddr Remote IP string G The remote IP address of this entry’s BGP peer.
RemoteAs Remote Autonomous System Number string G The remote autonomous system number received in the BGP OPEN message.
RemotePort Remote Port integer G The remote port for the TCP connection between the BGP peers.
RxTotalMessages Rx Messages integer G The total number of messages received from the remote peer on this connection.
Timeseries Data: Stats, Formats & Options
RxUpdateElapsedTime Rx Update Elapsed Time integer G Elapsed time since the last BGP UPDATE message was received from the peer.
Timeseries Data: Stats, Formats & Options
RxUpdates Rx Updates integer G The number of BGP UPDATE messages received on this connection.
Timeseries Data: Stats, Formats & Options
State State string G The BGP peer connection state

  • active
  • connect
  • established
  • idle
  • opensent
  • openconfirm

Can be combined with an event format for event-based analytics, see Event Formats.

TxTotalMessages Tx Messages integer G The total number of messages transmitted to the remote peer on this connection.
Timeseries Data: Stats, Formats & Options
TxUpdates Tx Updates integer G The number of BGP UPDATE messages transmitted on this connection.
Timeseries Data: Stats, Formats & Options
Links

This resource has links to the following:

[reference]  [top]

Checkpoint Firewall

Description

The custom data entities for the checkpoint_firewall table

Table

cdt_checkpoint_firewall

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G, U The poll state of the entity

  • on
  • off
Accepted Accepted Pkts integer G The number of accepted packets.
Timeseries Data: Stats, Formats & Options
Dropped Dropped Pkts integer G The number of dropped packets.
Timeseries Data: Stats, Formats & Options
InstallTime Install Time string G, U The time that the filter was installed.
Logged Logged Pkts integer G The number of logged packets.
Timeseries Data: Stats, Formats & Options
Rejected Rejected Pkts integer G The number of rejected packets.
Timeseries Data: Stats, Formats & Options
Links

This resource has links to the following:

[reference]  [top]

Checkpoint VPN Sessions

Description

The custom data entities for the checkpoint_vpn_sessions table

Table

cdt_checkpoint_vpn_sessions

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G, U The poll state of the entity

  • on
  • off
ActiveHwUserTunnels Active Hw User Tunnels integer G IPsec high-watermark active tunnels with remote access users
Timeseries Data: Stats, Formats & Options
RxError Rx Errors integer G Decryption Errors
Timeseries Data: Stats, Formats & Options
RxPackets Rx Packets integer G Decrypted packets
Timeseries Data: Stats, Formats & Options
TxError Tx Errors integer G Encryption Errors
Timeseries Data: Stats, Formats & Options
TxPackets Tx Packets integer G Encrypted packets
Timeseries Data: Stats, Formats & Options
activeHwTunnels Active Hw Tunnels integer G IPsec high-watermark active tunnels
Timeseries Data: Stats, Formats & Options
activeTunnels Active IPsec Tunnels integer G IPsec current active tunnels
Timeseries Data: Stats, Formats & Options
activeTunnelsLimit Active Tunnels Limit integer G, U IPsec active tunnels limit
activeUserTunnels Active User Tunnels integer G IPsec current active tunnels with remote access users
Timeseries Data: Stats, Formats & Options
Links

This resource has links to the following:

[reference]  [top]

Cisco Active DS0

Description

The custom data entities for the cisco_activeDS0 table

Table

cdt_cisco_activeDS0

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G, U The poll state of the entity

  • on
  • off
curActiveDS0s Active DS0s integer G The number of DS0s that are currently in use.
Timeseries Data: Stats, Formats & Options
maxActiveDS0s Max Active DS0s integer G The high water mark for number of DS0s active simultaneously.
Timeseries Data: Stats, Formats & Options
Links

This resource has links to the following:

[reference]  [top]

Cisco Call Stats

Description

The custom data entities for the cisco_call_stats table

Table

cdt_cisco_call_stats

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G, U The poll state of the entity

  • on
  • off
MaxConnections Max Connections integer G This object represents the licensed call capacity for a voice gateway.
RxCalls Rx Calls integer G This object represents the total number of inbound active media calls through this IP interface.
Timeseries Data: Stats, Formats & Options
TotalActiveConnections Total Active Connections integer G This object represents the total number of active call legs in the voice gateway.
Timeseries Data: Stats, Formats & Options
TxCalls Tx Calls integer G This object represents the total number of outbound active media calls through this IP interface.
Timeseries Data: Stats, Formats & Options
Links

This resource has links to the following:

[reference]  [top]

Cisco CB QoS Config – ClassMap

Description

The custom data entities for the cisco_cb_qos_class_map_config table

Table

cdt_cisco_cb_qos_class_map_config

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G, U The poll state of the entity

  • on
  • off
description Description string G, U Description of the PolicyMap.
matchType Match Type string G, U Match all vs Match any in a given class, one of:

  • None
  • MatchAll
  • MatchAny
Links

This resource has links to the following:

[reference]  [top]

Cisco CB QoS Data – Class

Description

The custom data entities for the cisco_cb_qos_class_map_data table

Table

cdt_cisco_cb_qos_class_map_data

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G, U The poll state of the entity

  • on
  • off
direction Direction string G Direction of the top level policy
drop Dropped Bytes integer G The 64 bits counter of dropped bytes per class as the result of all features that can produce drops (e.g., police, random detect, etc.).
Timeseries Data: Stats, Formats & Options
dropBitRate Drop BitRate float G The bit rate of the drops per class as the result of all features that can produce drops (e.g., police, random detect, etc.).
Timeseries Data: Stats, Formats & Options
dropPercent Dropped Percent float G Percentage of bytes dropped
Timeseries Data: Stats, Formats & Options
postPolicy Post Policy Byte integer G The 64 bits count of outbound octets after executing QoS policies.
Timeseries Data: Stats, Formats & Options
postPolicyBitRate Post Policy BitRate float G The bit rate of the traffic after executing QoS policies.
Timeseries Data: Stats, Formats & Options
prePolicy Pre Policy Byte integer G The 64 bits count of inbound octets prior to executing any QoS policies.
Timeseries Data: Stats, Formats & Options
prePolicyBitRate Pre Policy BitRate float G The bit rate of the traffic prior to executing any QoS policies.
Timeseries Data: Stats, Formats & Options
Links

This resource has links to the following:

[reference]  [top]

Cisco CB QoS Config – Policy/Class

Description

The custom data entities for the cisco_cb_qos_config_policy_class table

Table

cdt_cisco_cb_qos_config_policy_class

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G, U The poll state of the entity

  • on
  • off
Links

This resource has links to the following:

[reference]  [top]

Cisco CB QoS Data – Match

Description

The custom data entities for the cisco_cb_qos_match_data table

Table

cdt_cisco_cb_qos_match_data

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G, U The poll state of the entity

  • on
  • off
bitRate BitRate float G The bit rate of the traffic prior to executing any QoS policies.
Timeseries Data: Stats, Formats & Options
bytes Bytes integer G Bytes
Timeseries Data: Stats, Formats & Options
packets Packets integer G Packets
Timeseries Data: Stats, Formats & Options
Links

This resource has links to the following:

[reference]  [top]

Cisco CB QoS Config – Match

Description

The custom data entities for the cisco_cb_qos_match_map_config table

Table

cdt_cisco_cb_qos_match_map_config

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G, U The poll state of the entity

  • on
  • off
statement Statement string G The match statement
type Type string G Match vs Match Not in a given class
Links

This resource has links to the following:

[reference]  [top]

Cisco CB QoS Config – PolicyMap

Description

The custom data entities for the cisco_cb_qos_policy_map_config table

Table

cdt_cisco_cb_qos_policy_map_config

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G, U The poll state of the entity

  • on
  • off
description Description string G, U Description of the PolicyMap.
Links

This resource has links to the following:

[reference]  [top]

Cisco CB QoS Data – Queue

Description

The custom data entities for the cisco_cb_qos_queue_data table

Table

cdt_cisco_cb_qos_queue_data

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G, U The poll state of the entity

  • on
  • off
discard Discard integer G The count of octets, associated with this class, that were dropped by queuing
Timeseries Data: Stats, Formats & Options
percentUsed Used Percent float G The percent of the Queue Depth used
Timeseries Data: Stats, Formats & Options
size Size integer G The maximum depth of the queue.
Timeseries Data: Stats, Formats & Options
used Used integer G The current depth of the queue
Timeseries Data: Stats, Formats & Options
Links

This resource has links to the following:

[reference]  [top]

Cisco CB QoS Config – Queue

Description

The custom data entities for the cisco_cb_qos_queue_map_config table

Table

cdt_cisco_cb_qos_queue_map_config

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G, U The poll state of the entity

  • on
  • off
aggregateQueueLimit Aggregate Queue Limit string G Maximum allowed queue size for all the individual queues associated with this class. When the queue size exceed this value, the packets will be dropped.
aggregateQueueSize Aggregate Queue Size integer G Maximum number of packets that can be held in all the individual queues associated with this class before packets are dropped.
bandwidth Bandwidth string G The bandwidth configuration value
dynamicQueueNumber Dynamic Queue Number integer G Number of dynamic queues supported when flow-based fair-queue is in use.
flowEnabled Flow Enabled string G Indicate if flow-based fair-queue is enabled for this class, one of:

  • true
  • false
individualQueueSize Individual Queue Size integer G Maximum number of packets that can be held in an individual Flow-based fair-queue associated with this class before it drops packets (once the AggregateQSize has been reached). This field only makes sense in the context of Flow-based fair-queuing.
priorityBurstSize Priority Burst Size integer G In the priority queue, this is the number of bytes allowed in a single burst. This parameter only makes sense if Priority is enabled
priorityEnabled Priority Enabled string G Indicate if low latency queuing (priority) is enabled for this class, one of:

  • true
  • false
Links

This resource has links to the following:

[reference]  [top]

Cisco Discovery Protocol Cache

Description

The custom data entities for the cisco_cdp_cache table

Table

cdt_cisco_cdp_cache

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G, U The poll state of the entity

  • on
  • off
cdpCacheAddressIP Remote Device IP string G
cdpCacheAddressName Remote Device string G
cdpCacheDeviceId Remote Device ID string G, U
cdpCacheDevicePort Remote Interface string G, U
cdpCacheIfIndex Local ifIndex string G Interface Index (IF-MIB.ifIndex) of the local interface
cdpCachePlatform Remote Device Platform string G, U
Links

This resource has links to the following:

[reference]  [top]

Cisco EIGRP

Description

The custom data entities for the cisco_eigrp table

Table

cdt_cisco_eigrp

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G, U The poll state of the entity

  • on
  • off
AcksRcvd Acks Received integer G Acks Received
Timeseries Data: Stats, Formats & Options
AcksSent Acks Sent integer G Acks Sent
Timeseries Data: Stats, Formats & Options
AsNumber AS Number integer G The Autonomous System number which is unique integer per VPN
AsRouterId Router Id string G The router-id configured or automatically selected for the EIGRP AS. Each EIGRP routing process has a unique router-id selected from each autonomous system configured. The format is governed by object cEigrpAsRouterIdType.
AsRouterIdType Router Type string G, U The format of the router-id configured or automatically selected for the EIGRP AS.
HellosRcvd Hellos Received integer G Hellos Received
Timeseries Data: Stats, Formats & Options
HellosSent Hellos Sent integer G The total number Hello packets that have been sent to all EIGRP neighbors formed on all interfaces whose IP addresses fall under networks configured for the EIGRP AS.
Timeseries Data: Stats, Formats & Options
NbrCount Neighbor Count integer G The total number of live EIGRP neighbors formed on all interfaces whose IP addresses fall under networks configured in the EIGRP AS.
Timeseries Data: Stats, Formats & Options
QueriesRcvd Queries Received integer G The total number alternate route query packets that have been received from all EIGRP neighbors formed on all interfaces whose IP addresses fall under networks configured for the EIGRP AS.
Timeseries Data: Stats, Formats & Options
QueriesSent Queries Sent integer G The total number alternate route query packets that have been sent to all EIGRP neighbors formed on all interfaces whose IP addresses fall under networks configured for the EIGRP AS.
Timeseries Data: Stats, Formats & Options
RepliesRcvd Replies Received integer G Replies Received
Timeseries Data: Stats, Formats & Options
RepliesSent Replies Sent integer G Replies Sent
Timeseries Data: Stats, Formats & Options
TopoRoutes Routes integer G The total number of EIGRP derived routes currently existing in the topology table for the AS.
Timeseries Data: Stats, Formats & Options
UpdatesRcvd Updates Received integer G Updates Received
Timeseries Data: Stats, Formats & Options
UpdatesSent Updates Sent integer G Updates Sent
Timeseries Data: Stats, Formats & Options
Links

This resource has links to the following:

[reference]  [top]

Cisco EIGRP Peer

Description

The custom data entities for the cisco_eigrp_peer table

Table

cdt_cisco_eigrp_peer

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G, U The poll state of the entity

  • on
  • off
HoldTime Hold Time integer G The count-down timer indicating how much time must pass without receiving a hello packet from this EIGRP peer before this router declares the peer down. A peer declared as down is removed from the table and is no longer visible.
Timeseries Data: Stats, Formats & Options
LastSeq Last Seq integer G All transmitted EIGRP packets have a sequence number assigned. This is the sequence number of the last EIGRP packet sent to this peer.
Timeseries Data: Stats, Formats & Options
PeerAddrType Peer Address Type string G, U The format of the remote source IP address used by the peer to establish the EIGRP adjacency with this router.
PeerIfIndex Peer Interface Index integer G, U The ifIndex of the interface on this router through which this peer can be reached.
PktsEnqueued Packets Enqueued integer G The number of any EIGRP packets currently enqueued waiting to be sent to this peer.
Timeseries Data: Stats, Formats & Options
RemotePeerDevice Remote Peer string G Remote Peer
Retrans Retransmits integer G Retransmits
Timeseries Data: Stats, Formats & Options
Retries Retries integer G Retries
Timeseries Data: Stats, Formats & Options
Rto Retransmission Timeout integer G The computed retransmission timeout for the peer. This value is computed over time as packets are sent to the peer and acknowledgements are received from it, and is the amount of time to wait before resending a packet from the retransmission queue to the peer when an expected acknowledgement has not been received.
Timeseries Data: Stats, Formats & Options
Srtt SRTT integer G The computed smooth round trip time for packets to and from the peer.
Timeseries Data: Stats, Formats & Options
Version Eigrp Version string G, U Eigrp Version
portLink portLink string G, U portLink
Links

This resource has links to the following:

[reference]  [top]

Cisco TCAM Entries

Description

The custom data entities for the cisco_fib_tcam table

Table

cdt_cisco_fib_tcam

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G, U The poll state of the entity

  • on
  • off
ciscoTcamProtocolType TCAM Protocol string G The Layer 3 protocol utilizing FIB TCAM resource, one of

  • ipv4
  • mpls
  • eom
  • ipv6
  • ipv4Multicast
  • ipv6Multicast
  • l2VpnPeer
  • l2VpnIpv4Multicast
  • fcoe
  • mplsVpn
  • fcMpls
  • ipv6LocalLink
  • allProtocols
entPhysicalName Component Name string G
tcamFree Physical Free integer G Amount of Physical TCAM entries free
Timeseries Data: Stats, Formats & Options
tcamFreePercent Physical Free Percent float G Amount of Physical TCAM entries free as a percentage
Timeseries Data: Stats, Formats & Options
tcamLogicalFree Logical Free integer G Amount of Logical TCAM entries free
Timeseries Data: Stats, Formats & Options
tcamLogicalFreePercent Logical Free Percent float G Amount of TCAM entries free as a percentage
Timeseries Data: Stats, Formats & Options
tcamLogicalSize Logical Total integer G Amount of Logical TCAM entries
Timeseries Data: Stats, Formats & Options
tcamLogicalUsed Logical Used integer G Amount of Logical TCAM entries used
Timeseries Data: Stats, Formats & Options
tcamLogicalUsedPercent Logical Used Percent float G Amount of Logical TCAM entries used as a percentage
Timeseries Data: Stats, Formats & Options
tcamSize Physical Total integer G Amount of Physical TCAM entries
Timeseries Data: Stats, Formats & Options
tcamUsed Physical Used integer G tsg
Timeseries Data: Stats, Formats & Options
tcamUsedPercent Physical Used Percent float G Amount of Physical TCAM entries used as a percentage
Timeseries Data: Stats, Formats & Options
tcamWidth TCAM Width string G, U Indicates the entry width type for the protocol
Links

This resource has links to the following:

[reference]  [top]

Cisco Firewall Connections

Description

The custom data entities for the cisco_firewall_connections table

Table

cdt_cisco_firewall_connections

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G, U The poll state of the entity

  • on
  • off
cfwConnectionService Service string G Connection service
cfwConnectionStatCount Count integer G This is an integer that contains the value of the resource statistic.
Timeseries Data: Stats, Formats & Options
cfwConnectionStatDescription Description string G, U A detailed textual description of this statistic.
cfwConnectionStatValue Value integer G This is an integer that contains the value of the resource statistic.
Timeseries Data: Stats, Formats & Options
cfwConnectionType Type string G Connection type, one of:

  • Other
  • Total Open
  • Current Open
  • Current Closing
  • Current Half-Open
  • Current In Use
  • High
  • Unknown Type
Links

This resource has links to the following:

[reference]  [top]

Cisco IF Extension

Description

The custom data entities for the cisco_if_extension table

Table

cdt_cisco_if_extension

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G, U The poll state of the entity

  • on
  • off
cieIfInAbortErrs In Abort Errs integer G Number of input packets which were dropped because the receiver aborted. Examples of this could be when an abort sequence aborted the input frame or when there is a collision in an ethernet segment.
Timeseries Data: Stats, Formats & Options
cieIfInFramingErrs In Framing Errs integer G The number of input packets on a physical interface which were misaligned or had framing errors. This happens when the format of the incoming packet on a physical interface is incorrect.
Timeseries Data: Stats, Formats & Options
cieIfInGiantsErrs In Giants Errs integer G The number of input packets on a particular physical interface which were dropped as they were larger than the ifMtu (largest permitted size of a packet which can be sent/received on an interface).
Timeseries Data: Stats, Formats & Options
cieIfInIgnored In Ignored integer G The number of input packets which were simply ignored by this physical interface due to insufficient resources to handle the incoming packets. For example, this could indicate that the input receive buffers are not available or that the receiver lost a packet.
Timeseries Data: Stats, Formats & Options
cieIfInOverrunErrs In Overrun Errs integer G The number of input packets which arrived on a particular physical interface which were too quick for the hardware to receive and hence the receiver ran out of buffers.
Timeseries Data: Stats, Formats & Options
cieIfInRuntsErrs In Runts Errs integer G The number of packets input on a particular physical interface which were dropped as they were smaller than the minimum allowable physical media limit.
Timeseries Data: Stats, Formats & Options
cieIfInputQueueDrops Input Queue Drops integer G The number of input packets which were dropped. Some reasons why this object could be incremented are: o Input queue is full. o Errors at the receiver hardware while receiving the packet.
Timeseries Data: Stats, Formats & Options
cieIfOutputQueueDrops Output Queue Drops integer G This object indicates the number of output packets dropped by the interface even though no error had been detected to prevent them being transmitted. The packet could be dropped for many reasons, which could range from the interface being down to errors in the format of the packet.
Timeseries Data: Stats, Formats & Options
Links

This resource has links to the following:

[reference]  [top]

Cisco VPN Global Tunnels

Description

The custom data entities for the cisco_ipsec_global table

Table

cdt_cisco_ipsec_global

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G, U The poll state of the entity

  • on
  • off
ActiveTunnels Active Tunnels integer G The total number of currently active IPsec Phase-1 Tunnels.
Timeseries Data: Stats, Formats & Options
InDropPkts RxDropPkts integer G The total number of packets dropped during receive processing by all currently and previously active IPsec Phase-1 Tunnels
Timeseries Data: Stats, Formats & Options
InOctets RxBytes integer G The total number of octets received by all currently and previously active IPsec Phase-1 IKE Tunnels.
Timeseries Data: Stats, Formats & Options
InPkts RxPkts integer G The total number of packets received by all currently and previously active IPsec Phase-1 IKE Tunnels.
Timeseries Data: Stats, Formats & Options
OutDropPkts TxDropPkts integer G The total number of packets dropped during send processing by all currently and previously active IPsec Phase-1 Tunnels
Timeseries Data: Stats, Formats & Options
OutOctets TxBytes integer G The total number of octets sent by all currently and previously active IPsec Phase-1 IKE Tunnels.
Timeseries Data: Stats, Formats & Options
OutPkts TxPkts integer G The total number of packets sent by all currently and previously active IPsec Phase-1 IKE Tunnels.
Timeseries Data: Stats, Formats & Options
Links

This resource has links to the following:

[reference]  [top]

Cisco VPN Tunnels

Description

The custom data entities for the cisco_ipsec_tun table

Table

cdt_cisco_ipsec_tun

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G, U The poll state of the entity

  • on
  • off
ActiveTime Active Time integer G The length of time the IPsec Phase-1 IKE tunnel has been active in seconds.
Timeseries Data: Stats, Formats & Options
InDropPkts RxDropPkts integer G The total number of packets dropped by this IPsec Phase-1 IKE Tunnel during receive processing.
Timeseries Data: Stats, Formats & Options
InOctets RxBytes integer G The total number of octets received by this IPsec Phase-1 IKE Tunnel.
Timeseries Data: Stats, Formats & Options
InPkts RxPkts integer G The total number of packets received by this IPsec Phase-1 IKE Tunnel.
Timeseries Data: Stats, Formats & Options
LifeTime Life Time integer G The negotiated LifeTime the IPsec Phase-1 IKE tunnel in seconds.
Timeseries Data: Stats, Formats & Options
LocalAddr Local IP string G Local IP of the Tunnel
LocalName Local DNS Name string G, U DNS name of the local IP, or NULL if not known.
LocalType Tunnel Type string G, U Local Peer Identity Type, one of:

  • ipAddrPeer
  • namePeer
LocalValue Tunnel Local Value string G, U Local Peer Identity Value
OutDropPkts TxDropPkts integer G The total number of packets dropped by this IPsec Phase-1 IKE Tunnel during send processing
Timeseries Data: Stats, Formats & Options
OutOctets TxBytes integer G The total number of octets sent by this IPsec Phase-1 IKE Tunnel.
Timeseries Data: Stats, Formats & Options
OutPkts TxPkts integer G The total number of packets sent by this IPsec Phase-1 IKE Tunnel.
Timeseries Data: Stats, Formats & Options
RemoteAddr Remote IP string G Remote IP of the Tunnel
RemoteName Remote DNS Name string G, U DNS name of the Remote IP, or NULL if not known.
RemoteType Tunnel Type string G, U Remote Peer Identity Type
RemoteValue Tunnel Remote Value string G, U Remote Peer Identity Value
Status Tun Status string G Tunnel Status, one of:

  • initializePhase1
  • awaitXauth
  • awaitCommit
  • active
  • destroy
  • rekey
Links

This resource has links to the following:

[reference]  [top]

Cisco IPSLA

Description

The custom data entities for the cisco_ipsla table

Table

cdt_cisco_ipsla

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G, U The poll state of the entity

  • on
  • off
AdminFrequency Frequency integer G, U Specifies the duration between initiating each RTT operation
AdminOwner Owner string G, U Identifies the entity that created this table row
AdminProtocol Protocol string G, U Specifies the protocol to be used to perform the RTT operation, one of:

  • apolloEcho
  • apolloEchoAppl
  • appleTalkEcho
  • appleTalkEchoAppl
  • decNetEcho
  • decNetEchoAppl
  • dhcpAppl
  • dlswAppl
  • dnsAppl
  • ethernetJitterAppl
  • ethernetPingAppl
  • ftpAppl
  • httpsAppl
  • icmpJitterAppl
  • ipIcmpEcho
  • ipTcpConn
  • ipUdpEchoAppl
  • ipxEcho
  • ipxEchoAppl
  • isoClnsEcho
  • isoClnsEchoAppl
  • jitterAppl
  • mcastJitterAppl
  • mplsLspPingAppl
  • netbiosEchoAppl
  • notApplicable
  • rtpAppl
  • snaLU0EchoAppl
  • snaLU2EchoAppl
  • snaLU62Echo
  • snaLU62EchoAppl
  • snaRUEcho
  • videoAppl
  • vinesEcho
  • vinesEchoAppl
  • voipAppl
  • xnsEcho
  • xnsEchoAppl
  • y17311dm
  • y1731dmm
  • y1731lmm
  • y1731slm
AdminRttType RTT Type string G, U Admin Round Trip Time Type, one of:

  • dhcp
  • dlsw
  • dns
  • echo
  • ethernetJitter
  • ethernetPing
  • fileIO
  • ftp
  • https
  • icmpjitter
  • jitter
  • lspGroup
  • lspPing
  • lspPingPseudowire
  • lspTrace
  • mcastJitter
  • pathEcho
  • rtp
  • script
  • tcpConnect
  • udpEcho
  • video
  • voip
  • y1731Delay
  • y1731Loss
AdminStatus Admin Status string G, U The status of the conceptual RTT control row, one of:

  • active
  • createAndGo
  • createAndWait
  • destroy
  • notInService
  • notReady
AdminTag Tag string G, U A string which is used by a managing application to identify the RTT target
AdminThreshold Threshold integer G, U This object defines an administrative threshold limit
AdminTimeout Timeout integer G, U Specifies the duration to wait for a RTT operation completion
CompletionStatus Completion Status string G, U The completion status of the conceptual RTT control row, one of:

  • applicationSpecific – the application generating the operation had a specific error
  • busy – the operation did not occur because a previous operation is still outstanding
  • disconnected – the operation did not occur because the connection to the target was lost
  • dnsQueryError – DNS Query error
  • dnsServerTimeout – NS Server Timeout
  • dropped – the operation did not occur due to lack of internal resource
  • enableAbort – Control enable request abort
  • enableAuthFail – Control enable request fail due to authentication fail
  • enableFail – Control enable request fail
  • enableFormatError – Control enable request fail due to format error
  • enableInternalError – Control enable request internal error
  • enableNoConnect – Control enable request fail due to no connection to the target
  • enableOk – Control enable request OK
  • enablePortInUse – Control enable request fail due to port in use
  • enableVersionFail – Control enable request version fail
  • error – socket failures or some other errors not relevant to the actual probe
  • httpError – HTTP Response StatusCode is not OK (200), or permanent redirect(301), temporary redirect (302)
  • httpTransactionTimeout – HTTP Transaction Timeout
  • mplsLspEchoTxError – MPLS echo request transmission failure
  • mplsLspMalformedReq – MPLS echo request was malformed, pointed out by the reply router
  • mplsLspReachButNotFEC – MPLS echo request processed by the downstream router but not the target
  • mplsLspUnreachable – MPLS Target FEC not reachable or unsupported mpls echo reply code
  • notConnected – the operation did not occur because no connection (session) exists with the target
  • ok – a valid completion occurred and timed successfully
  • other – the operation is not started or completed or this object is not applicable for the probe type
  • overThreshold – a valid completion was received but the completion time exceeded a threshold value
  • sequenceError – a completed operation did not contain the correct sequence id, no completion time recorded
  • statsRetrieveAbort – Stats retrieve request abort
  • statsRetrieveAuthFail – Stats retrieve request fail due to authentication fail
  • statsRetrieveFail – Stats retrieve request fail
  • statsRetrieveFormatError – Stats retrieve request fail due to format error
  • statsRetrieveInternalError – Stats retrieve request internal error
  • statsRetrieveNoConnect – Stats retrieve request fail due to no connection to the target
  • statsRetrieveOk – Stats retrieve request OK
  • statsRetrievePortInUse – Stats retrieve request fail due to port in use
  • statsRetrieveVersionFail – Stats retrieve request version fail
  • tcpConnectTimeout – TCP Connect Timeout
  • timeout – an operation timed out, no completion time recorded
  • verifyError – a completed operation was received, but the data it contained did not match the expected data, no completion time recorded


Can be combined with an event format for event-based analytics, see Event Formats.

JitterAvgDSJ Jitter – Dst to Src integer G The average of positive and negative jitter values from destination to source.
Timeseries Data: Stats, Formats & Options
JitterAvgSDJ Jitter – Src to Dst integer G The average of positive and negative jitter values from source to destination.
Timeseries Data: Stats, Formats & Options
JitterMaxNegDS Jitter – Neg Dst to Src Max integer G The maximum of all absolute negative jitter values from packets sent from destination to source
Timeseries Data: Stats, Formats & Options
JitterMaxNegSD Jitter – Neg Src to Dst Max integer G The maximum of all absolute negative jitter values from packets sent from source to destination.
Timeseries Data: Stats, Formats & Options
JitterMaxPosDS Jitter – Pos Dst to Src Max integer G The maximum of all positive jitter values from packets sent from destination to source
Timeseries Data: Stats, Formats & Options
JitterMaxPosSD Jitter – Pos Src to Dst Max integer G The maximum of all positive jitter values from packets sent from source to destination.
Timeseries Data: Stats, Formats & Options
JitterMinNegDS Jitter – Neg Dst to Src Min integer G The minimum of all absolute negative jitter values from packets sent from destination to source
Timeseries Data: Stats, Formats & Options
JitterMinNegSD Jitter – Neg Src to Dst Min integer G The minimum of all absolute negative jitter values from packets sent from source to destination.
Timeseries Data: Stats, Formats & Options
JitterMinPosDS Jitter – Pos Dst to Src Min integer G The maximum of all positive jitter values from packets sent from destination to source
Timeseries Data: Stats, Formats & Options
JitterMinPosSD Jitter – Pos Src to Dst Min integer G The maximum of all positive jitter values from packets sent from source to destination.
Timeseries Data: Stats, Formats & Options
JitterRTTAvg Latency – RTT Avg integer G The average latency from of the measured RTT’s
Timeseries Data: Stats, Formats & Options
JitterRTTMax Latency – RTT Max integer G The maximum of RTT’s that were successfully measured.
Timeseries Data: Stats, Formats & Options
JitterRTTMin Latency – RTT Min integer G The minimum of RTT’s that were successfully measured.
Timeseries Data: Stats, Formats & Options
LatencyAvgDS Latency – Dst to Src integer G The average latency from source to destination.
Timeseries Data: Stats, Formats & Options
LatencyAvgSD Latency – Src to Dest integer G The average latency from source to destination.
Timeseries Data: Stats, Formats & Options
LatestRttOperCompletionTime Latest RTT Completion Time integer G The completion time of the latest RTT operation successfully completed
Timeseries Data: Stats, Formats & Options
TargetAddress Target Address string G The target address of the ipsla probe.
rttMonEchoAdminNumPackets Num RTT’s integer G This value represents the number of packets that need to be transmitted. This value is currently used for Jitter probe. This object is applicable to jitter probe only.
Timeseries Data: Stats, Formats & Options
rttMonLatestJitterOperICPIF ICPIF integer G ICPIF
Timeseries Data: Stats, Formats & Options
rttMonLatestJitterOperMOS MOS integer G MOS
Timeseries Data: Stats, Formats & Options
Links

This resource has links to the following:

[reference]  [top]

Cisco NBAR

Description

The custom data entities for the cisco_nbar table

Table

cdt_cisco_nbar

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G, U The poll state of the entity

  • on
  • off
Interface Interface Name string G, U Interface Name
ProtocolName Protocol Name string G, U Protocol Name
RxBps Rx Bps integer G Tx Bits Per second (Calculated from Bytes)
Timeseries Data: Stats, Formats & Options
RxBytes Rx Bytes integer G The byte count of inbound octets as determined by Protocol Discovery.
Timeseries Data: Stats, Formats & Options
RxPkts Rx Pkts integer G The packet count of inbound packets as determined by Protocol Discovery.
Timeseries Data: Stats, Formats & Options
RxUtil Rx Util float G The Rx Utilization of this protocol.
Timeseries Data: Stats, Formats & Options
TxBps Tx Bps integer G Tx Bits Per second (Calculated from Bytes)
Timeseries Data: Stats, Formats & Options
TxBytes Tx Bytes integer G The byte count of outbound octets as determined by Protocol Discovery.
Timeseries Data: Stats, Formats & Options
TxPkts Tx Pkts integer G The packet count of outbound packets as determined by Protocol Discovery.
Timeseries Data: Stats, Formats & Options
TxUtil Tx Util float G The Tx Utilization of this protocol.
Timeseries Data: Stats, Formats & Options
Type Type string G Application Monitor Type
Links

This resource has links to the following:

[reference]  [top]

Cisco VPN Sessions

Description

The custom data entities for the cisco_vpn_sessions table

Table

cdt_cisco_vpn_sessions

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G, U The poll state of the entity

  • on
  • off
IPSecSessions Established IPSec Sessions integer G The number of IPSec sessions established.
Timeseries Data: Stats, Formats & Options
L2LSessions Established L2L Sessions integer G The number of LAN to LAN sessions established.
Timeseries Data: Stats, Formats & Options
LBSessions Established LB Sessions integer G The number of load balancing sessions established.
Timeseries Data: Stats, Formats & Options
MaxGroupsSuport Maximum Supported Groups integer G, U Maximum number of remote access groups supported.
MaxSessionsSuport Maximum Supported Sessions integer G, U Maximum number of remote access sessions supported.
MaxUsersSuport Maximum Supported Users integer G, U Maximum number of remote access users supported.
SVCSessions Established SVC Sessions integer G The number of secure VPN client sessions sessions established.
Timeseries Data: Stats, Formats & Options
WebvpnSessions Established Webvpn Sessions integer G The number of secure VPN client sessions sessions established.
Timeseries Data: Stats, Formats & Options
activeEmailSessions Active Email Sessions integer G The number of active Email proxy sessions.
Timeseries Data: Stats, Formats & Options
activeGroups Active Groups integer G The number of user groups whose members have active sessions.
Timeseries Data: Stats, Formats & Options
activeIPSecSessions Active IPSec Sessions integer G The number of active IPSec sessions.
Timeseries Data: Stats, Formats & Options
activeL2LSessions Active L2L Sessions integer G The number of active LAN to LAN sessions.
Timeseries Data: Stats, Formats & Options
activeLBSessions Active LB Sessions integer G The number of active load balancing sessions.
Timeseries Data: Stats, Formats & Options
activeSVCSessions Active SVC Sessions integer G The number of active secure VPN client sessions.
Timeseries Data: Stats, Formats & Options
activeSessions Active Sessions integer G Number of active remote access sessions.
Timeseries Data: Stats, Formats & Options
activeUsers Active Users integer G The number of users who have active sessions.
Timeseries Data: Stats, Formats & Options
activeWebvpnSessions Active Webvpn Sessions integer G The number of secure VPN client sessions.
Timeseries Data: Stats, Formats & Options
emailSessions Established Email Sessions integer G The number of Email proxy sessions established.
Timeseries Data: Stats, Formats & Options
maxSvcSessions Max Concurrent SVC Sessions integer G Maximum number of concurrent SVC sessions since system up.
Timeseries Data: Stats, Formats & Options
prevSessions Previous Sessions integer G The number of remote access sessions which were previously active but which where since terminated.
Timeseries Data: Stats, Formats & Options
Links

This resource has links to the following:

[reference]  [top]

Cisco WAN 3G

Description

The custom data entities for the cisco_wan_3g table

Table

cdt_cisco_wan_3g

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G, U The poll state of the entity

  • on
  • off
GsmCountry GSM Country string G, U GSM Country
GsmEcIo GSM Ec/Io integer G GSM Ec/Io
Timeseries Data: Stats, Formats & Options
GsmNetwork GSM Network string G, U GSM Network
GsmRSSI GSM RSSI integer G GSM RSSI
Timeseries Data: Stats, Formats & Options
IMEI IMEI string G International Mobile Equipment Identifier
ModemTemp Modem Temperature integer G The modem temperature in degrees celsius
Timeseries Data: Stats, Formats & Options
NearbyCells Nearby Cells integer G The current total number of nearby cells in the c3gGsmNearbyCellTable.
Timeseries Data: Stats, Formats & Options
RetriesRemaining Retries Remaining integer G Indicates the number of attempts remaining in case the SIM is locked. If the number of retries becomes zero, the SIM is blocked and becomes unusable.
Timeseries Data: Stats, Formats & Options
RxBytes Rx Bytes integer G Rx Bytes
Timeseries Data: Stats, Formats & Options
TxBytes Tx Bytes integer G Tx Bytes
Timeseries Data: Stats, Formats & Options
Links

This resource has links to the following:

[reference]  [top]

Cisco WAN 3G Nearby Cells

Description

The custom data entities for the cisco_wan_3g_nearby_cells table

Table

cdt_cisco_wan_3g_nearby_cells

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G, U The poll state of the entity

  • on
  • off
EcIoMeasurement EcIo Measurement integer G EcIo Measurement
Timeseries Data: Stats, Formats & Options
PrimaryScramblingCode Primary Scrambling Code integer G Primary Scrambling Code
Timeseries Data: Stats, Formats & Options
RSCP RSCP integer G Received Signal Code Power (RSCP).
Timeseries Data: Stats, Formats & Options
wan3gIndex Cisco WAN 3G Index string G Index to parent cisco_wan_3g entity.
Links

This resource has links to the following:

[reference]  [top]

Cisco WAN 4G

Description

The custom data entities for the cisco_wan_4g table

Table

cdt_cisco_wan_4g

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G, U The poll state of the entity

  • on
  • off
operatingBand Operating Band integer G Operating Band
Timeseries Data: Stats, Formats & Options
rsrp Reference Signal Receive Power (RSRP) integer G Reference Signal Receive Power (RSRP)
Timeseries Data: Stats, Formats & Options
rsrq Reference Signal Receive Quality (RSRQ) integer G Reference Signal Receive Quality (RSRQ)
Timeseries Data: Stats, Formats & Options
sinr Signal-to-Interference plus Noise Ratio (SINR) integer G Signal-to-Interference plus Noise Ratio (SINR)
Timeseries Data: Stats, Formats & Options
snr Signal to Noise Ratio(SNR) integer G Signal to Noise Ratio(SNR)
Timeseries Data: Stats, Formats & Options
Links

This resource has links to the following:

[reference]  [top]

Citrix Netscaler AAA Stats

Description

The custom data entities for the citrix_netscaler_vpn_stats table

Table

cdt_citrix_netscaler_vpn_stats

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G, U The poll state of the entity

  • on
  • off
AuthFail Auth Fail Count integer G Count of authentication failures
Timeseries Data: Stats, Formats & Options
AuthNonHttpFail Non-HTTP Fail Count integer G Count of non HTTP connections that failed authorization
Timeseries Data: Stats, Formats & Options
AuthNonHttpSuccess Non-HTTP Success Count integer G Count of non HTTP connections that succeeded authorization
Timeseries Data: Stats, Formats & Options
AuthOnlyHttpFail HTTP Fail Count integer G Count of HTTP connections that failed authorization
Timeseries Data: Stats, Formats & Options
AuthOnlyHttpSuccess HTTP Success Count integer G Count of HTTP connections that succeeded authorization
Timeseries Data: Stats, Formats & Options
AuthSuccess Auth Success Count integer G Count of authentication successes
Timeseries Data: Stats, Formats & Options
CurICAOnlyConn ICA Only Connections integer G Count of current ICA only connections
Timeseries Data: Stats, Formats & Options
CurICASessions ICA Only Sessions integer G Count of current ICA only sessions
Timeseries Data: Stats, Formats & Options
CurSessions AAA Currrent Sessions integer G Count of all AAA current sessions
Timeseries Data: Stats, Formats & Options
CurTMSessions AAATM Only Sessions integer G Count of current AAATM only sessions
Timeseries Data: Stats, Formats & Options
TotSessionTimeout AAA Total Sessions Timed Out integer G Count of all AAA sessions that have timed out
Timeseries Data: Stats, Formats & Options
TotSessions AAA Total Sessions integer G Count of all AAA sessions
Timeseries Data: Stats, Formats & Options
TotTMSessions AAATM Total Sessions integer G Count of all AAATM sessions
Timeseries Data: Stats, Formats & Options
Links

This resource has links to the following:

[reference]  [top]

Riverbed WAN Accelerator

Description

The custom data entities for the connections_riverbed table

Table

cdt_connections_riverbed

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G, U The poll state of the entity

  • on
  • off
LANRxOptBps LANRxOpt Bps float G Total optimized bytes across all application ports, in the WAN to LAN direction since the last restart of service, as measured on the LAN side.
Timeseries Data: Stats, Formats & Options
LANRxTotal LANRxTotal Bytes integer G Rx Optimized + Rx Passthrough Bytes over LAN
Timeseries Data: Stats, Formats & Options
LANRxTotalBps LANRxTotalBps float G Rx Optimized + Rx Passthrough Bytes over LAN
Timeseries Data: Stats, Formats & Options
LANTotal LAN Total Bytes integer G LAN Rx + Tx Total Bytes
Timeseries Data: Stats, Formats & Options
LANTotalBps LAN Total Bps float G LAN Rx + Tx Total Bytes
Timeseries Data: Stats, Formats & Options
LANTxOptBps LANTxOpt Bps float G Total optimized bytes across all application ports, in the LAN to WAN direction since the last restart of service, as measured on the LAN side
Timeseries Data: Stats, Formats & Options
LANTxTotal LANTxTotal Bytes integer G Tx Optimized + Tx Passthrough Bytes over LAN
Timeseries Data: Stats, Formats & Options
LANTxTotalBps LANTxTotal Bps float G Tx Optimized + Tx Passthrough Bytes over LAN
Timeseries Data: Stats, Formats & Options
PassThroughRxBps PassThrough WAN to LAN Bps float G Passthrough Bps in WAN to LAN direction.
Timeseries Data: Stats, Formats & Options
PassThroughTxBps PassThrough LAN to WAN Bps float G Passthrough Bps in LAN to WAN direction.
Timeseries Data: Stats, Formats & Options
TotalLANOptBps LAN Optimized Total float G LAN Optimized Total Bps
Timeseries Data: Stats, Formats & Options
TotalPassThroughBps PassThrough Total Bps float G Passthrough Bps in LAN to WAN direction.
Timeseries Data: Stats, Formats & Options
TotalWANOptBps Total WAN Optimized Bps float G WAN Optimized Total Bps
Timeseries Data: Stats, Formats & Options
WANOptTotal WAN Optimized Total Bytes integer G Bytes WAN Optimized Total
Timeseries Data: Stats, Formats & Options
WANRxOptBps WANRxOpt Bps float G Total optimized bytes across all application ports, in the WAN to LAN direction since the last restart of service, as measured on the WAN side.
Timeseries Data: Stats, Formats & Options
WANRxTotal WANRxTotal Bytes integer G Rx Optimized + Rx Passthrough Bytes over WAN
Timeseries Data: Stats, Formats & Options
WANRxTotalBps WANRxTotal Bps float G Rx Optimized + Rx Passthrough Bytes over WAN
Timeseries Data: Stats, Formats & Options
WANTotal WAN Total Bytes integer G WANRx + Tx Total Bytes
Timeseries Data: Stats, Formats & Options
WANTotalBps WAN Total Bps float G WAN Rx + Tx Total Bps
Timeseries Data: Stats, Formats & Options
WANTxOptBps WANTxOpt Bps float G Total optimized bytes across all application ports, in the LAN to WAN direction since the last restart of service, as measured on the WAN side.
Timeseries Data: Stats, Formats & Options
WANTxTotal WANTxTotal Bytes integer G Tx Optimized + Tx Passthrough Bytes over WAN
Timeseries Data: Stats, Formats & Options
WANTxTotalBps WANTxTotal Bps float G Tx Optimized + Tx Passthrough Bytes over WAN
Timeseries Data: Stats, Formats & Options
activeConnections Connections Active integer G Current number of active (optimized) connections
Timeseries Data: Stats, Formats & Options
bpsReduction Reduction Bps integer G Bps Reduction
Timeseries Data: Stats, Formats & Options
bwAggHCOutWan WANTxOpt Bytes integer G Total optimized bytes across all application ports, in the LAN to WAN direction since the last restart of service, as measured on the WAN side
Timeseries Data: Stats, Formats & Options
bwHCAggInLan LANRxOpt Bytes integer G Total optimized bytes across all application ports, in the WAN to LAN direction since the last restart of service, as measured on the LAN side
Timeseries Data: Stats, Formats & Options
bwHCAggInWan WANRxOpt Bytes integer G Total optimized bytes across all application ports, in the WAN to LAN direction since the last restart of service, as measured on the WAN side
Timeseries Data: Stats, Formats & Options
bwHCAggOutLan LANTxOpt Bytes integer G Total optimized bytes across all application ports, in the LAN to WAN direction since the last restart of service, as measured on the LAN side
Timeseries Data: Stats, Formats & Options
bwPassThroughIn Bytes PassThrough WAN to LAN integer G Passthrough bytes in WAN to LAN direction
Timeseries Data: Stats, Formats & Options
bwPassThroughOut Bytes PassThrough LAN to WAN integer G Passthrough bytes in LAN to WAN direction
Timeseries Data: Stats, Formats & Options
bwPassThroughTotal Passthrough Total Bytes integer G Total passthrough bytes
Timeseries Data: Stats, Formats & Options
bytesReduction Reduction Bytes integer G Bytes Reduction
Timeseries Data: Stats, Formats & Options
establishedConnections Connections Established integer G Current number of established (optimized) connections
Timeseries Data: Stats, Formats & Options
halfClosedConnections Connections Half Closed integer G Current total number of half-closed (optimized) connections
Timeseries Data: Stats, Formats & Options
halfOpenedConnections Connections Half Opened integer G Current total number of half-opened (optimized) connections
Timeseries Data: Stats, Formats & Options
health Health string G, U Current health of the system, one of:

  • Admission
  • Control
  • Critical
  • Degraded
  • Healthy


Can be combined with an event format for event-based analytics, see Event Formats.

optimizedConnections Connections Optimized integer G Current total number of optimized connections
Timeseries Data: Stats, Formats & Options
passthroughConnections Connections Passthrough integer G Current total number of pass-through connections
Timeseries Data: Stats, Formats & Options
percentConnections Connections Used Percent float G Percentage of total connections in use.
Timeseries Data: Stats, Formats & Options
shMaxBandwidth Max Bandwidth integer G Maximum possible bandwidth for this appliance
Timeseries Data: Stats, Formats & Options
shMaxConnections Connections Max Optimized integer G Maximum possible connections through this appliance
Timeseries Data: Stats, Formats & Options
totalConnections Connections Total Current integer G Total number of connections
Timeseries Data: Stats, Formats & Options
Links

This resource has links to the following:

[reference]  [top]

CPU

Description

The custom data entities for the cpu table

Table

cdt_cpu

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G, U The poll state of the entity

  • on
  • off
cpuDescr Description string G Description
cpuLoad Load Percentage float G Load Percentage
Timeseries Data: Stats, Formats & Options
cpuType Vendor string G Vendor
Links

This resource has links to the following:

[reference]  [top]

CPU – Alcatel

Description

The custom data entities for the cpu_alcatel table

Table

cdt_cpu_alcatel

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G, U The poll state of the entity

  • on
  • off
cpuDescr Description string G Description
cpuLoad Load Percentage float G Load Percentage
Timeseries Data: Stats, Formats & Options
cpuType Vendor string G Vendor
Links

This resource has links to the following:

[reference]  [top]

CPU – Alcatel – AOS7

Description

The custom data entities for the cpu_alcatel_aos7 table

Table

cdt_cpu_alcatel_aos7

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G, U The poll state of the entity

  • on
  • off
cpuDescr Description string G Description
cpuLoad Load Percentage float G Load Percentage
Timeseries Data: Stats, Formats & Options
cpuType Vendor string G Vendor
Links

This resource has links to the following:

[reference]  [top]

CPU – Alteon

Description

The custom data entities for the cpu_alteon table

Table

cdt_cpu_alteon

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G, U The poll state of the entity

  • on
  • off
cpuDescr Description string G Description
cpuLoad Load Percentage float G Load Percentage
Timeseries Data: Stats, Formats & Options
cpuType Vendor string G Vendor
Links

This resource has links to the following:

[reference]  [top]

CPU – Aruba

Description

The custom data entities for the cpu_aruba table

Table

cdt_cpu_aruba

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G, U The poll state of the entity

  • on
  • off
cpuDescr Description string G Description
cpuLoad Load Percentage float G Load Percentage
Timeseries Data: Stats, Formats & Options
cpuType Vendor string G Vendor
Links

This resource has links to the following:

[reference]  [top]

CPU – Avaya RC

Description

The custom data entities for the cpu_avaya_rc table

Table

cdt_cpu_avaya_rc

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G, U The poll state of the entity

  • on
  • off
cpuDescr Description string G Description
cpuLoad Load Percentage float G Load Percentage
Timeseries Data: Stats, Formats & Options
cpuType Vendor string G Vendor
Links

This resource has links to the following:

[reference]  [top]

CPU – Avaya S5

Description

The custom data entities for the cpu_avaya_s5 table

Table

cdt_cpu_avaya_s5

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G, U The poll state of the entity

  • on
  • off
cpuDescr Description string G Description
cpuLoad Load Percentage float G Load Percentage
Timeseries Data: Stats, Formats & Options
cpuType Vendor string G Vendor
Links

This resource has links to the following:

[reference]  [top]

CPU – Cisco

Description

The custom data entities for the cpu_cisco table

Table

cdt_cpu_cisco

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G, U The poll state of the entity

  • on
  • off
cpuDescr Description string G Description
cpuLoad Load Percentage float G Load Percentage
Timeseries Data: Stats, Formats & Options
cpuType Vendor string G Vendor
Links

This resource has links to the following:

[reference]  [top]

CPU – Cisco ASA

Description

The custom data entities for the cpu_cisco_asa table

Table

cdt_cpu_cisco_asa

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G, U The poll state of the entity

  • on
  • off
cpuDescr Description string G Description
cpuLoad Load Percentage float G Load Percentage
Timeseries Data: Stats, Formats & Options
cpuType Vendor string G Vendor
Links

This resource has links to the following:

[reference]  [top]

CPU – Cisco Nexus

Description

The custom data entities for the cpu_cisco_nexus table

Table

cdt_cpu_cisco_nexus

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G, U The poll state of the entity

  • on
  • off
cpuDescr Description string G Description
cpuLoad Load Percentage float G Load Percentage
Timeseries Data: Stats, Formats & Options
cpuType Vendor string G Vendor
Links

This resource has links to the following:

[reference]  [top]

CPU – Cisco SAN

Description

The custom data entities for the cpu_cisco_san table

Table

cdt_cpu_cisco_san

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G, U The poll state of the entity

  • on
  • off
cpuDescr Description string G Description
cpuLoad Load Percentage float G Load Percentage
Timeseries Data: Stats, Formats & Options
cpuType Vendor string G Vendor
Links

This resource has links to the following:

[reference]  [top]

CPU – Dell

Description

The custom data entities for the cpu_dell table

Table

cdt_cpu_dell

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G, U The poll state of the entity

  • on
  • off
agentSwitchCpuProcessTotalUtilizationSixty CPU Load integer G Total CPU utilization over a period of 60 seconds.
Timeseries Data: Stats, Formats & Options
cpuDescr Description string G Description
cpuLoad Load Percentage float G Load Percentage
Timeseries Data: Stats, Formats & Options
cpuType Vendor string G Vendor
Links

This resource has links to the following:

[reference]  [top]

CPU – Dell F10 S

Description

The custom data entities for the cpu_dell_F10_S table

Table

cdt_cpu_dell_F10_S

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G, U The poll state of the entity

  • on
  • off
cpuDescr Description string G Description
cpuLoad Load Percentage float G Load Percentage
Timeseries Data: Stats, Formats & Options
cpuType Vendor string G Vendor
Links

This resource has links to the following:

[reference]  [top]

CPU – Dell DNOS

Description

The custom data entities for the cpu_dell_dnos table

Table

cdt_cpu_dell_dnos

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G, U The poll state of the entity

  • on
  • off
cpuDescr Description string G Description
cpuLoad Load Percentage float G Load Percentage
Timeseries Data: Stats, Formats & Options
cpuType Vendor string G Vendor
Links

This resource has links to the following:

[reference]  [top]

CPU – Dell X Series

Description

The custom data entities for the cpu_dell_x table

Table

cdt_cpu_dell_x

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G, U The poll state of the entity

  • on
  • off
cpuDescr Description string G Description
cpuLoad Load Percentage float G Load Percentage
Timeseries Data: Stats, Formats & Options
cpuType Vendor string G Vendor
rlCpuUtilDuringLastMinute CPU Load integer G Total CPU utilization over a period of 60 seconds.
Timeseries Data: Stats, Formats & Options
Links

This resource has links to the following:

[reference]  [top]

CPU – Extreme

Description

The custom data entities for the cpu_extreme table

Table

cdt_cpu_extreme

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G, U The poll state of the entity

  • on
  • off
cpuDescr Description string G Description
cpuLoad Load Percentage float G Load Percentage
Timeseries Data: Stats, Formats & Options
cpuType Vendor string G Vendor
Links

This resource has links to the following:

[reference]  [top]

CPU – Extreme VSP

Description

The custom data entities for the cpu_extreme_vsp table

Table

cdt_cpu_extreme_vsp

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G, U The poll state of the entity

  • on
  • off
cpuDescr Description string G Description
cpuLoad Load Percentage float G Load Percentage
Timeseries Data: Stats, Formats & Options
cpuType Vendor string G Vendor
Links

This resource has links to the following:

[reference]  [top]

CPU – Fortinet Fortigate

Description

The custom data entities for the cpu_fortinet_fortigate table

Table

cdt_cpu_fortinet_fortigate

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G, U The poll state of the entity

  • on
  • off
cpuDescr Description string G Description
cpuLoad Load Percentage float G Load Percentage
Timeseries Data: Stats, Formats & Options
cpuType Vendor string G Vendor
Links

This resource has links to the following:

[reference]  [top]

CPU – Foundry

Description

The custom data entities for the cpu_foundry table

Table

cdt_cpu_foundry

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G, U The poll state of the entity

  • on
  • off
cpuDescr Description string G Description
cpuLoad Load Percentage float G Load Percentage
Timeseries Data: Stats, Formats & Options
cpuType Vendor string G Vendor
Links

This resource has links to the following:

[reference]  [top]

CPU – Foundry MLX

Description

The custom data entities for the cpu_foundry_mlx table

Table

cdt_cpu_foundry_mlx

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G, U The poll state of the entity

  • on
  • off
cpuDescr Description string G Description
cpuLoad Load Percentage float G Load Percentage
Timeseries Data: Stats, Formats & Options
cpuType Vendor string G Vendor
Links

This resource has links to the following:

[reference]  [top]

CPU – FreeBSD

Description

The custom data entities for the cpu_freebsd table

Table

cdt_cpu_freebsd

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G The poll state of the entity

  • on
  • off
cpuDescr Description string G Description
cpuLoad Load Percentage float G Load Percentage
Timeseries Data: Stats, Formats & Options
cpuType Vendor string G Vendor
idle_cpu Idle Percentage float G Percentage of time the CPU was idle
Timeseries Data: Stats, Formats & Options
interrupt_cpu Interrupt Load Percentage float G Load percentage of servicing hardware or software interrupts
Timeseries Data: Stats, Formats & Options
nice_cpu Nice Load Percentage float G Load percentage of user-level applications with nice priority
Timeseries Data: Stats, Formats & Options
system_cpu System Load Percentage float G Load percentage of system-level applications
Timeseries Data: Stats, Formats & Options
total_cpu Total CPU Usage integer G Total amount of cpu usage
Timeseries Data: Stats, Formats & Options
user_cpu User Load Percentage float G Load percentage of user-level applications
Timeseries Data: Stats, Formats & Options
Links

This resource has links to the following:

[reference]  [top]

CPU – Juniper

Description

The custom data entities for the cpu_juniper table

Table

cdt_cpu_juniper

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G, U The poll state of the entity

  • on
  • off
cpuDescr Description string G, U Description
cpuLoad Load Percentage float G Load Percentage
Timeseries Data: Stats, Formats & Options
cpuType Vendor string G Vendor
Links

This resource has links to the following:

[reference]  [top]

CPU – Juniper Pulse

Description

The custom data entities for the cpu_juniper_pulse table

Table

cdt_cpu_juniper_pulse

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G, U The poll state of the entity

  • on
  • off
cpuDescr Description string G Description
cpuLoad Load Percentage float G Load Percentage
Timeseries Data: Stats, Formats & Options
cpuType Vendor string G Vendor
Links

This resource has links to the following:

[reference]  [top]

CPU – NetScaler

Description

The custom data entities for the cpu_netscaler table

Table

cdt_cpu_netscaler

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G, U The poll state of the entity

  • on
  • off
cpuDescr Description string G Description
cpuLoad Load Percentage float G Load Percentage
Timeseries Data: Stats, Formats & Options
cpuType Vendor string G Vendor
Links

This resource has links to the following:

[reference]  [top]

CPU – Netscreen

Description

The custom data entities for the cpu_netscreen table

Table

cdt_cpu_netscreen

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G, U The poll state of the entity

  • on
  • off
cpuDescr Description string G Description
cpuLoad Load Percentage float G Load Percentage
Timeseries Data: Stats, Formats & Options
cpuType Vendor string G Vendor
Links

This resource has links to the following:

[reference]  [top]

CPU – Nokia

Description

The custom data entities for the cpu_nokia table

Table

cdt_cpu_nokia

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G, U The poll state of the entity

  • on
  • off
cpuDescr Description string G Description
cpuLoad Load Percentage float G Load Percentage
Timeseries Data: Stats, Formats & Options
cpuType Vendor string G Vendor
Links

This resource has links to the following:

[reference]  [top]

CPU – Server

Description

The custom data entities for the cpu_server table

Table

cdt_cpu_server

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G, U The poll state of the entity

  • on
  • off
cpuDescr Description string G Description
cpuLoad Load Percentage float G Load Percentage
Timeseries Data: Stats, Formats & Options
cpuType Vendor string G Vendor
Links

This resource has links to the following:

[reference]  [top]

CPU – UCD

Description

The custom data entities for the cpu_ucd table

Table

cdt_cpu_ucd

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G, U The poll state of the entity

  • on
  • off
cpuDescr Description string G Description
cpuLoad Load Percentage float G Load Percentage
Timeseries Data: Stats, Formats & Options
cpuNicePercent Nice Percent integer G Nice Percent
Timeseries Data: Stats, Formats & Options
cpuRawIdlePercent Idle Percent integer G Idle Percent
Timeseries Data: Stats, Formats & Options
cpuRawInterruptPercent Interrupt Percent integer G Interrupt Percent
Timeseries Data: Stats, Formats & Options
cpuRawKernelPercent Kernel Percent integer G Kernel Percent
Timeseries Data: Stats, Formats & Options
cpuRawWaitPercent Wait Percent integer G Wait Percent
Timeseries Data: Stats, Formats & Options
cpuSystemUsedPercent System Percent integer G System Percent
Timeseries Data: Stats, Formats & Options
cpuTotal Total integer G Total of raw cpu data types.
Timeseries Data: Stats, Formats & Options
cpuType Vendor string G Vendor
cpuUserUsedPercent User Percent integer G User Percent
Timeseries Data: Stats, Formats & Options
Links

This resource has links to the following:

[reference]  [top]

Dell DNOS System Information

Description

The custom data entities for the dell_inventory table

Table

cdt_dell_inventory

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G, U The poll state of the entity

  • on
  • off
dellNetStackUnitModelId Model string G, U The Dell Networking OS Model number for this unit.
description Description string G, U Inventory Description
model Model string G, U Inventory Model
serial Serial Number string G, U Serial Number
softwareRev Software Revision string G, U Software Revision
vendor Vendor string G Inventory Vendor
Links

This resource has links to the following:

[reference]  [top]

Device

Description

The custom data entities for the device table

Table

cdt_device

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G, U The poll state of the entity

  • on
  • off
auth_method SNMPv3 Authentication Method string G, U, A Authentication method for SNMPv3 devices, one of:

  • md5
  • sha
auth_pass SNMPv3 Authentication Password string G, U, A Authentication password for SNMPv3 devices
auth_user SNMPv3 Authentication Username string G, U, A Authentication user for SNMPv3 devices
community Community string G, U, A The community string status of the device
context SNMPv3 Context string G, U, A Context for SNMPv3 devices
custom_data_details Custom Data Details string G, U A JSON string object indicating which custom entities have been found during a discovery
discover_getNext Use GetNext string G, U Walk this device using SNMP getNext instead of getBulk, one of:

  • 0
  • 1
discover_minimal Use Minimal Walk string G, U Walk this device using a minimal set of oids, one of:

  • 0
  • 1
discover_snmpv1 Use SNMPv1 string G, U Walk this device using SNMPv1, one of:

  • 0
  • 1
hostname Hostname string G, U, A The hostname of the device
ipaddress IP Address string G, U, A (required) The IP address of the device
latitude Latitude float G, U, A The user defined latitude of the device’s location
longitude Longitude float G, U, A The user defined longitude of the device’s location
manual_name User Defined Name string G, U The user defined name of the device
memorySize Memory Size integer G The amount of physical read-write memory contained by the entity
mis MAC/IP/Switch Collection State string G, U Include this device in the MIS report calculations, one of

  • on
  • off
ping_dup Ping Duplicate integer G Number of duplicate ping responses received
Timeseries Data: Stats, Formats & Options
ping_lost1 Ping Lost 1 integer G Number of times that a single ping request is lost
Timeseries Data: Stats, Formats & Options
ping_lost2 Ping Lost 2 integer G Number of times that two ping requests in a row have been lost
Timeseries Data: Stats, Formats & Options
ping_lost3 Ping Lost 3 integer G Number of times that three ping requests in a row have been lost
Timeseries Data: Stats, Formats & Options
ping_lost4 Ping Lost 4 integer G Number of times that four ping requests in a row have been lost
Timeseries Data: Stats, Formats & Options
ping_outage Ping Outage integer G, U Number of seconds to wait before a device is considered to be down
ping_poll Ping Poll string G, U, A The ping polling status of the device, one of:

  • on
  • off
ping_rtt Ping RTT integer G The current ping state of the device
Timeseries Data: Stats, Formats & Options
ping_rtt_ms Ping RTT(High Precision) float G The current ping state of the device in ms to 3 decimal places
Timeseries Data: Stats, Formats & Options
ping_state Ping State string G, U The current ping state of the device, one of:

  • up
  • down

Can be combined with an event format for event-based analytics, see Event Formats.

priv_method SNMPv3 Privacy Method string G, U, A Privacy method for SNMPv3 devices, one of:

  • aes
  • aes192
  • aes256
  • des
  • des3
priv_pass SNMPv3 Privacy Password string G, U, A Privacy password for SNMPv3 devices
retired Retired string G The device has been Retired, one of:

  • on
  • off
snmpEngineID SNMP Engine ID string G, U An SNMP engine’s administratively-unique identifier
snmp_maxoid SNMP Max OID integer G, U Maximum number of oids to poll in a single request
snmp_poll SNMP Poll string G, U, A The SNMP polling status of the device, one of:

  • on
  • off
snmp_version SNMP Version integer G, U, A The SNMP version of the device, one of:

  • 1
  • 2
  • 3
sysContact Contact string G, U The textual identification of the contact person for the entity
sysDescr System Description string G, U A textual description of the entity
sysLocation Location string G, U The physical location of the entity
sysName System Name string G, U An administratively-assigned name for the entity
sysObjectID Object ID string G, U The vendor’s authoritative identification of the network management subsystem contained in the entity
sysServices Services integer G, U A value which indicates the set of services that the entity may potentially offer
vendor Vendor string G The vendor name for the device
Links

This resource has links to the following:

[reference]  [top]

[reference]  [top]

APIC

Description

The custom data entities for the device_apic table

Table

cdt_device_apic

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G The poll state of the entity

  • on
  • off
auth_method SNMPv3 Authentication Method string G Authentication method for SNMPv3 devices, one of:

  • md5
  • sha
auth_pass SNMPv3 Authentication Password string G Authentication password for SNMPv3 devices
auth_user SNMPv3 Authentication Username string G Authentication user for SNMPv3 devices
community Community string G The community string status of the device
context SNMPv3 Context string G Context for SNMPv3 devices
custom_data_details Custom Data Details string G A JSON string object indicating which custom entities have been found during a discovery
discover_getNext Use GetNext string G Walk this device using SNMP getNext instead of getBulk, one of:

  • 0
  • 1
discover_minimal Use Minimal Walk string G Walk this device using a minimal set of oids, one of:

  • 0
  • 1
discover_snmpv1 Use SNMPv1 string G Walk this device using SNMPv1, one of:

  • 0
  • 1
health Health integer G Health
Timeseries Data: Stats, Formats & Options
hostname Hostname string G The hostname of the device
ipaddress IP Address string G The IP address of the device
latitude Latitude float G The user defined latitude of the device’s location
longitude Longitude float G The user defined longitude of the device’s location
manual_name User Defined Name string G The user defined name of the device
memorySize Memory Size integer G The amount of physical read-write memory contained by the entity
mis MAC/IP/Switch Collection State string G Include this device in the MIS report calculations, one of

  • on
  • off
noApplications Application Profiles integer G Number of Application Profiles
Timeseries Data: Stats, Formats & Options
noBridgeDomains Bridging Domains integer G Number of Bridging Domains
Timeseries Data: Stats, Formats & Options
noCEPs Client Endpoints integer G Number of Client Endpoints
Timeseries Data: Stats, Formats & Options
noControllers Controllers integer G Number of Controllers
Timeseries Data: Stats, Formats & Options
noEPGs Endpoint Groups integer G Number of Endpoint Groups
Timeseries Data: Stats, Formats & Options
noLeaves Leaves integer G Number of Leaves
Timeseries Data: Stats, Formats & Options
noNodes Nodes integer G Number of Nodes
Timeseries Data: Stats, Formats & Options
noPods Pods integer G Number of Pods
Timeseries Data: Stats, Formats & Options
noSpines Spines integer G Number of Spines
Timeseries Data: Stats, Formats & Options
noTenants Tenants integer G Number of Tenants
Timeseries Data: Stats, Formats & Options
noVRFs VRFs integer G Number of VRFs
Timeseries Data: Stats, Formats & Options
ping_dup Ping Duplicate integer G Number of duplicate ping responses received
Timeseries Data: Stats, Formats & Options
ping_lost1 Ping Lost 1 integer G Number of times that a single ping request is lost
Timeseries Data: Stats, Formats & Options
ping_lost2 Ping Lost 2 integer G Number of times that two ping requests in a row have been lost
Timeseries Data: Stats, Formats & Options
ping_lost3 Ping Lost 3 integer G Number of times that three ping requests in a row have been lost
Timeseries Data: Stats, Formats & Options
ping_lost4 Ping Lost 4 integer G Number of times that four ping requests in a row have been lost
Timeseries Data: Stats, Formats & Options
ping_outage Ping Outage integer G Number of seconds to wait before a device is considered to be down
ping_poll Ping Poll string G The ping polling status of the device, one of:

  • on
  • off
ping_rtt Ping RTT integer G The current ping state of the device
Timeseries Data: Stats, Formats & Options
ping_rtt_ms Ping RTT(High Precision) float G The current ping state of the device in ms to 3 decimal places
Timeseries Data: Stats, Formats & Options
ping_state Ping State string G The current ping state of the device, one of:

  • up
  • down

Can be combined with an event format for event-based analytics, see Event Formats.

priv_method SNMPv3 Privacy Method string G Privacy method for SNMPv3 devices, one of:

  • aes
  • aes192
  • aes256
  • des
  • des3
priv_pass SNMPv3 Privacy Password string G Privacy password for SNMPv3 devices
retired Retired string G The device has been Retired, one of:

  • on
  • off
snmpEngineID SNMP Engine ID string G An SNMP engine’s administratively-unique identifier
snmp_maxoid SNMP Max OID integer G Maximum number of oids to poll in a single request
snmp_poll SNMP Poll string G The SNMP polling status of the device, one of:

  • on
  • off
snmp_version SNMP Version integer G The SNMP version of the device, one of:

  • 1
  • 2
  • 3
sysContact Contact string G The textual identification of the contact person for the entity
sysDescr System Description string G A textual description of the entity
sysLocation Location string G The physical location of the entity
sysName System Name string G An administratively-assigned name for the entity
sysObjectID Object ID string G The vendor’s authoritative identification of the network management subsystem contained in the entity
sysServices Services integer G A value which indicates the set of services that the entity may potentially offer
vendor Vendor string G The vendor name for the device
[reference]  [top]

Device – FreeBSD

Description

The custom data entities for the device_freebsd table

Table

cdt_device_freebsd

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G The poll state of the entity

  • on
  • off
auth_method SNMPv3 Authentication Method string G Authentication method for SNMPv3 devices
auth_pass SNMPv3 Authentication Password string G Authentication password for SNMPv3 devices
auth_user SNMPv3 Authentication Username string G Authentication user for SNMPv3 devices
boottime System Start Time time G The time that the system started
community Community string G The community string status of the device
context SNMPv3 Context string G Context for SNMPv3 devices
custom_data_details Custom Data Details string G A JSON string object indicating which custom entities have been found during a discovery
discover_getNext Use GetNext string G Walk this device using SNMP getNext instead of getBulk
discover_minimal Use Minimal Walk string G Walk this device using a minimal set of oids
discover_snmpv1 Use SNMPv1 string G Walk this device using SNMPv1
hostid Host Id integer G Host Id
hostname Hostname string G The hostname of the device
ipaddress IP Address string G The IP address of the device
latitude Latitude float G The user defined latitude of the device’s location
loadavg15min Load Average 15 Minute float G The number of process being or waiting to be executed over a 15 minute period
Timeseries Data: Stats, Formats & Options
loadavg1min Load Average 1 Minute float G The number of process being or waiting to be executed over a 1 minute period
Timeseries Data: Stats, Formats & Options
loadavg5min Load Average 5 Minute float G The number of process being or waiting to be executed over a 5 minute period
Timeseries Data: Stats, Formats & Options
lock_processes Locked Processes integer G Number of locked processes
Timeseries Data: Stats, Formats & Options
longitude Longitude float G The user defined longitude of the device’s location
maker Maker string G System Maker
manual_name User Defined Name string G The user defined name of the device
memorySize Memory Size integer G The amount of physical read-write memory contained by the entity
mis MAC/IP/Switch Collection State string G Include this device in the MIS report calculations
model Model string G System Model
nocpus Number of CPUs integer G The Number of CPUs
osrelease OS Release string G OS Release
osrevision OS Revision integer G OS Revision
ping_dup Ping Duplicate integer G Number of duplicate ping responses received
Timeseries Data: Stats, Formats & Options
ping_lost1 Ping Lost 1 integer G Number of times that a single ping request is lost
Timeseries Data: Stats, Formats & Options
ping_lost2 Ping Lost 2 integer G Number of times that two ping requests in a row have been lost
Timeseries Data: Stats, Formats & Options
ping_lost3 Ping Lost 3 integer G Number of times that three ping requests in a row have been lost
Timeseries Data: Stats, Formats & Options
ping_lost4 Ping Lost 4 integer G Number of times that four ping requests in a row have been lost
Timeseries Data: Stats, Formats & Options
ping_outage Ping Outage integer G Number of seconds to wait before a device is considered to be down
ping_poll Ping Poll string G The ping polling status of the device
ping_rtt Ping RTT integer G The current ping state of the device
Timeseries Data: Stats, Formats & Options
ping_rtt_ms Ping RTT(High Precision) float G The current ping state of the device in ms to 3 decimal places
Timeseries Data: Stats, Formats & Options
ping_state Ping State string The current ping state of the device

  • up
  • down


Can be combined with an event format for event-based analytics, see Event Formats

priv_method SNMPv3 Privacy Method string G Privacy method for SNMPv3 devices
priv_pass SNMPv3 Privacy Password string G Privacy password for SNMPv3 devices
processes Process Count integer G Number of processes
Timeseries Data: Stats, Formats & Options
retired Retired string G The device has been Retired
running_processes Running Processes integer G Number of running processes
Timeseries Data: Stats, Formats & Options
sleeping_processes Sleeping Processes integer G Number of sleeping processes
Timeseries Data: Stats, Formats & Options
snmpEngineID SNMP Engine ID string G An SNMP engine’s administratively-unique identifier
snmp_maxoid SNMP Max OID integer G Maximum number of oids to poll in a single request
snmp_poll SNMP Poll string G The SNMP polling status of the device
snmp_version SNMP Version integer G The SNMP version of the device
starting_processes Starting Processes integer G Number of starting processes
Timeseries Data: Stats, Formats & Options
stopped_processes Stopped Processes integer G Number of stopped processes
Timeseries Data: Stats, Formats & Options
swapin Swap In integer G Number of pages swapped in
Timeseries Data: Stats, Formats & Options
swapout Swap Out integer G Number of pages swapped out
Timeseries Data: Stats, Formats & Options
sysContact Contact string G The textual identification of the contact person for the entity
sysDescr System Description string G A textual description of the entity
sysLocation Location string G The physical location of the entity
sysName System Name string G An administratively-assigned name for the entity
sysObjectID Object ID string G The vendor’s authoritative identification of the network management subsystem contained in the entity
sysServices Services integer G A value which indicates the set of services that the entity may potentially offer
vendor Vendor string G The vendor name for the device
waiting_processes Waiting Processes integer G Number of waiting processes
Timeseries Data: Stats, Formats & Options
zombie_processes Zombie Processes integer G Number of zombie processes
Timeseries Data: Stats, Formats & Options
[reference]  [top]

Disk IO – FreeBSD

Description

The custom data entities for the diskio table

Table

cdt_diskio

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifier
name Name string G The entity name
deviceid Device ID integer G The ID of the parent device
idx Index string G The base SNMP index for this entity
table Table string G The table to which the entity belongs
poll Poll State string G The poll state of the entity

  • on
  • off
busy_percent Busy Percent integer G The percentage of time the disk has been busy
Timeseries Data: Stats, Formats & Options
busy_time Busy Time string G The amount of time the disk has been busy
Timeseries Data: Stats, Formats & Options
bytes_read Bytes Read string G The number of bytes read from the disk
Timeseries Data: Stats, Formats & Options
bytes_write Bytes Written string G The number of bytes written to the disk
Timeseries Data: Stats, Formats & Options
trans_read Read Transactions string G The number of read transactions from the disk
Timeseries Data: Stats, Formats & Options
trans_write Write Transactions string G The number of write transactions to the disk
Timeseries Data: Stats, Formats & Options
Links

This resource has links to the following:

[reference]  [top]

Environment Monitors

Description

The custom data entities for the env_mon table

Table

cdt_env_mon

Fields
Field ID Field Title Type Get, Add, Update Description
id ID integer G The entity identifi