Index
- Overview
- Example Discovery Requests
- Default Network Discovery
- Customized Network Discovery
- Manual Discovery with SNMPv3 Credentials
- Ping-Only Discovery using the Hosts File
- Rewalk Select Groups of Devices
- Retrieving Historical Discovery Records
- Adding an IP Range Configuration
- Updating an IP Range Configuration
- Deleting an IP Range Configuration
- Discovery Related API Endpoints
Overview
Statseeker's RESTful API v2.1 r16 (Statseeker v5.6.2) changes the way the API deals with the Discovery process. Anyone initiating Discovery via the API will need to update their scripts to address these changes.
The table below presents the new and updated API endpoints related to the Discovery process and links through to the API descriptions for each.
API Endpoint | Description |
discover | Used to initiate a discovery process with:/api/v2.1/discover/execute
|
discover_config | Statseeker stores a single discover_config which provides the default configuration used for all Discovery processes.
This default config:
This default discover_config is automatically applied to every Discovery that does not feature an alternate discover_config as a parameter. Including an updated discover_config as a parameter will override the default for that Discovery. |
discover_history | Contains details of completed Discoveries, including the discover_config used in that Discovery.
Note: when retrieving discover_history records, start and finish are time fields and requirea timefilter (global or field-specific)
|
discover_hosts | Each discover_hosts entity is an entry in the server's Hosts file, these entities are referenced when discover.mode=Hosts. The Hosts file support both IPv4 and IPv6 addresses. |
ip_range_config | IPv4 Range configurations used to target the Discovery process, each consists of:
|
snmp_credential | SNMPv1\v2\v3 credential configurations. A default Discovery references all known SNMP credentials when attempting to discover a device. |
irc_to_sc_map | An entity automatically created when associating snmp_credentials entities with specific ip_range_config entities.
There is no need to interact with this endpoint. |
Example Discovery Requests
Default Network Discovery
Network Discovery targeting all enabled IP Address Range configurations and referencing all SNMP Credentials.
/api/v2.1/discover/execute?mode=Discover
[top]
Customized Network Discovery
Customize a Network Discovery by specifying an alternate discover_config object. This alternate configuration can restrict the IP Address Ranges or SNMP Credentials used by the discovery, and override any other default Discovery settings.
In this example we:
- Use ip_range_configurations to specify specific snmp_credentails (identified by their id) to use with each IP Range configuration
- Override the default iftype and sysdescr rules to further limit the devices and interfaces returned by the Discovery
/api/v2.1/discover/execute?mode=Discover&discover_config={"iftype":["ethernetCsmacd","fastEther","gigabitEthernet"],"ping_count":2,"ping_skip":256,"ping_rate":512,"sysdescr":["include Cisco","include Dell","include HP","include Juniper","include Linux"],"ranges":{"exclude":["10.100.44.1","10.100.44.254","10.100.44.10","10.100.45.1"],"include":["10.100.44.0/24","10.100.45.0/24"]},"ip_range_configurations":[{"ip_range":{"exclude":[],"include":["10.100.46.0/24"]},"name":"myIpRange","snmp_credentials":[2]},{"ip_range":{"exclude":[],"include":["10.100.46.[250-255]"]},"name":"anotherIpRange","snmp_credentials":[1]}],"snmp_credentials":[{"id":1,"version":2,"community":"public"},{"id":2,"version":2,"community":"notpublic"}]}
[top]
Manual Discovery with SNMPv3 Credentials
Manual Discovery requires a manual_config parameter containing:
- ipaddress
- manual_name
- Either an SNMP Credentials object, or the ping-only option (
"ping_only":true
)
/api/v2.1/discover/execute?mode=Manual&manual_config=[{"ipaddress":"10.116.3.4","manual_name":"MyNewDevice","ping_only":false,"version":3,"type":"SNMPv3","community":null,"auth_method":"sha512","auth_user":"SHAUsername","auth_pass":"myAuthPassword","priv_method":"aes256","priv_pass":"myPrivacyPassword","context":"context1"}]
Ping-Only Discovery using the Hosts File
- A Ping-Only Discovery via IP Address Ranges is specified by setting
mode="Ping Only Discover"
- A ping-only Discovery via Hosts is specified by setting
mode="Hosts"
andsnmp_versions=[]
(an empty array)
/api/v2.1/discover/execute?mode=Hosts&snmp_versions=[]
[top]
Ping-Only Discovery, overriding the default IP Range Configurations with a custom range
/api/v2.1/discover/execute/?mode=Ping Only Discover&discover_config={"ping_count":2,"ping_rate":512,"ping_skip":256,"ranges":{"include":["10.100.59.[252-254]"],"exclude":[]}}
[top]
Rewalk Select Groups of Devices
The Rewalk can target all known devices, select devices, or select groups of devices. The groups option requires an array of group names.
/api/v2.1/discover/execute?mode=Rewalk&groups=["Baltimore","FortWorth"]
[top]
Retrieving Historical Discovery Records
Returning details on completed Discoveries that were initiated since the start of the day.
/api/v2.1/discover_history/?fields=mode,status,start,details,logfile&timefilter=range=start-of-today to now&timefmt=%A %H:%M:%S (%y-%m-%d)
- The start and finish fields are time fields, so when requested they must be accompanied by a timefilter (global or field-specific)
- By default, time fields are returned in epoch time, the timefmt parameter can be applied to turn this value into a more readable format. See Resource Endpoint for details on timefmt and other generic GET request parameters
Adding an IP Range Configuration
Adding a new IP Address Range Configuration requires a POST request to the ip_range_config including the configuration as a JSON object in the body of the request.
In this example we specify:
- A single include range: 10.100.58.0/24
- Multiple exclude ranges: 10.100.58.[15-240] & 10.100.58.[5-10]
- A name for the IP Address Range Configuration: MyNewRangeConfig
curl \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <YOUR_AUTH_TOKEN>" \
-X POST \
"https://your.statseeker.server/api/v2.1/ip_range_config/?indent=3" \
-d '{"data":[{"ip_range":{"include":["10.100.58.0/24"],"exclude":["10.100.58.[15-240]","10.100.58.[5-10]"]},"enabled":0,"name":"MyNewRangeConfig"}]}'
# 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
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, 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 += '/ip_range_config'
# optional response formatting
query += '/?indent=3&links=none'
# data
reqData = json.dumps({"data":[{"ip_range":{"include":["10.100.58.0/24"],"exclude":["10.100.58.[15-240]","10.100.58.[5-10]"]},"enabled":0,"name":"MyNewRangeConfig"}]})
# 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
try_basic(server, query, user, pword, reqData)
else
# Authentication successful
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 may be 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 += '/ip_range_config'
# optional response formatting
$query += '/?indent=3&links=none'
# configure payload
$reqData = '{"data":[{"ip_range":{"include":["10.100.58.0/24"],"exclude":["10.100.58.[15-240]","10.100.58.[5-10]"]},"enabled":0,"name":"MyNewRangeConfig"}]}'
# Run the request
resp = do_request($server, $query, $user, $pword, $reqData)
puts "#{resp.to_str}"
{
"version": "2.1",
"revision": "16",
"info": "The Statseeker RESTful API",
"data": {
"success": true,
"errmsg": "ok",
"time": 1726455388,
"objects": [
{
"type": "ip_range_config",
"sequence": 3,
"status": {
"success": true,
"errcode": 0
},
"data_total": 1,
"data": [
{
"enabled": 0,
"ip_range": {
"include": [
"10.100.58.0/24"
],
"exclude": [
"10.100.58.[15-240]",
"10.100.58.[5-10]"
]
},
"name": "MyNewRangeConfig",
"id": 2
}
]
}
]
}
}
If you would like to restrict which SNMP Credentials are referenced when running Discovery against the IP range, then it can be specified in the ip_range_config by setting snmp_credentials - this field takes a list of snmp_credential IDs.
Example:
{"data":[{"ip_range":{"include":["10.100.58.0/24"],"exclude":["10.100.58.[15-240]","10.100.58.[5-10]"]},"enabled":1,"name":"MyNewRangeConfig2","snmp_credentials":[1,2,5]}]}
Updating an IP Range Configuration
Updating an IP Address Range Configuration requires a PUT request to the ip_range_config including the configuration changes as a JSON object in the body of the request.
In this example we:
- Apply a filter to the name filter to identify the ip_range_config to be updated
- Specify an alternate set of exclude ranges by updating the ip_range field
Note: the update is performed by replacing the existing ip_range value with a new value. A valid ip_range value requires at least one include range statement, so even though we are only updating the exclude statement, we are required to also specify an include statement.
curl \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <YOUR_AUTH_TOKEN>" \
-X PUT \
"https://your.statseeker.server/api/v2.1/ip_range_config/?links=none&indent=3" \
-d '{"fields":{"name":{"field":"name","filter":{"query":"='MyNewRangeConfig'"}}},"data":[{"ip_range":{"include":["10.100.58.0/24"],"exclude":["10.100.58.[15-240]"]}}]}'
# 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
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, 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 += '/ip_range_config'
# optional response formatting
query += '/?indent=3&links=none'
# data
reqData = json.dumps({"fields":{"name":{"field":"name","filter":{"query":"='MyNewRangeConfig'"}}},"data":[{"ip_range":{"include":["10.100.58.0/24"],"exclude":["10.100.58.[15-240]"]}}]})
# 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
try_basic(server, query, user, pword, reqData)
else
# Authentication successful
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 may be 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 += '/ip_range_config'
# optional response formatting
$query += '/?indent=3&links=none'
# configure payload
$reqData = '{"fields":{"name":{"field":"name","filter":{"query":"='MyNewRangeConfig'"}}},"data":[{"ip_range":{"include":["10.100.58.0/24"],"exclude":["10.100.58.[15-240]"]}}]}'
# Run the request
resp = do_request($server, $query, $user, $pword, $reqData)
puts "#{resp.to_str}"
{
"version":"2.1",
"revision":"16",
"info":"The Statseeker RESTful API",
"data":{
"success":true,
"errmsg":"ok",
"time":1726459825
}
}
Deleting an IP Range Configuration
Deleting an IP Address Range Configuration requires a DELETE request to the ip_range_config
In this example we apply a filter to the name filter to identify the ip_range_config to be deleted.
curl \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <YOUR_AUTH_TOKEN>" \
-X DELETE \
"https://your.statseeker.server/api/v2.1/ip_range_config/?links=none&indent=3" \
-d '{"fields":{"name":{"field":"name","filter":{"query":"='MyNewRangeConfig'"}}}}'
# 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
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, 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 += '/ip_range_config'
# optional response formatting
query += '/?indent=3&links=none'
# data
reqData = json.dumps({"fields":{"name":{"field":"name","filter":{"query":"='MyNewRangeConfig'"}}}})
# 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
try_basic(server, query, user, pword, reqData)
else
# Authentication successful
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 may be 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 += '/ip_range_config'
# optional response formatting
$query += '/?indent=3&links=none'
# configure payload
$reqData = '{"fields":{"name":{"field":"name","filter":{"query":"='MyNewRangeConfig'"}}}}'
# Run the request
resp = do_request($server, $query, $user, $pword, $reqData)
puts "#{resp.to_str}"
{
"version":"2.1",
"revision":"16",
"info":"The Statseeker RESTful API",
"data":{
"success":true,
"errmsg":"ok",
"time":1726460004
}
}
Discovery Related API Endpoints
Discover
Endpoint
discover
Description
Discovery Process
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
config | Config | json | G | A JSON object containing the configuration options used for the discovery process |
details | Details | json | G | A JSON object containing details about what has occurred in the discovery process |
duration | Duration | integer | G | The length of time the discovery process has taken |
finish | Finish Time | time | G | The timestamp that the discovery process finished |
id | ID | integer | G | Unique Identifier for the discovery process |
logfile | Log File | string | G | The filesystem location of the log file for the discovery process |
mode | Mode | string | G | The mode the discovery process was run inOne of:
|
start | Start Time | time | G | The timestamp that the discovery process started |
status | Status | string | G | The current status of the discovery process |
user | User | string | G | The user that triggered the discover process ('auto' if triggered automatically) |
Options
Option | Description |
block | Block if another discover is running (default to false) false: Return an error if another discover is running true: Block if another discover is running |
data | A configuration used for specifying IP Ranges |
datafile | Path to config file containing IP Range Configuration (uploaded) |
devices | Optional array of devices to rewalk (for 'Rewalk' mode only) |
discover_add_ping_only | When running an snmp discovery, if a device is pingable, but doesn't respond to snmp, still add device as ping only(Defaults to false) false: Don't add devices as ping only devices when devices do not respond to snmp true: Add devices which don't respond to snmp as ping only devices (Default only when snmp_versions is an empty list) |
discover_adminstatus | Override Advanced options for interface admin status polling false: Disable interface admin status polling for newly discovered devices. true: Enable interface admin status polling for newly discovered devices. |
discover_config | Override discover configuration. |
discover_getNext | Discover using SNMP getNext (Not valid for 'Rewalk', defaults to false) false: Use bulk requests for discovery true: Use getNext requests for discovery |
discover_grouping | If runPostProcessing is enabled, create groups based on configured autogroup rules (Defaults to discover_grouping in Advanced Options) false: Even if runPostProcessing is enabled, don't run the configured autogrouping rules true: If runPostProcessing is enabled, run the configured autogrouping rules |
discover_minimal | Perform minimal discover (Not valid for 'Rewalk', defaults to false) false: Perform full discover true: Perform minimal discover (only walk a few core tables) |
discover_nucast | Override Advanced options for Non Unicast monitoring global: Set non unicast polling based on Advanced options value off: Override Advanced options and disable non unicast polling for newly discovered interfaces on: Override Advanced options and enable non unicast polling for newly discovered interface |
discover_operstatus | Override Advanced options for interface operstatus polling false: Disable interface operstatus polling for newly discovered devices. true: Enable interface operstatus polling for newly discovered devices. |
discover_prune_existing_devices | When running a discover, Don't include IP addresses already in Product (Defaults to false) false: Include IP Addresses already in Product when performing a discovery true: Don't include IP Addresses already in Product when performing a discovery |
discover_rules | Override Custom Data Type discover rules. |
A array of email addresses. When select the output log will be emailed to these addresses on completion of the task. If a 'logfile' is specified, the logfile will be kept, otherwise a temporary logfile is used which is later removed. If a 'subject' is given, this will be used for the email subject, otherwise a default subject line is used | |
groups | Optional array of groups to rewalk (for 'Rewalk' mode only) |
interface_speed_autogrouping | If runPostProcessing is enabled, create groups based on interface speeds (Defaults to discover_grouping in Advanced Options) false: Even if runPostProcessing is enabled, don't run the interface autogrouping true: If runPostProcessing is enabled, run the interface autogrouping |
interface_type_autogrouping | If runPostProcessing is enabled, create groups based on interface types (Defaults to discover_grouping in Advanced Options) false: Even if runPostProcessing is enabled, don't run the interface autogrouping true: If runPostProcessing is enabled, run the interface autogrouping |
logfile | Path to store the discover log (defaults to ~/nim/etc/discover.log) |
manual_config | Manual Configuration which has been generated from a previous discover (after processing data or datafile) |
manual_force_add | When running a manual discover, Force add devices from configuration into Product (Defaults to false) false: Only add devices into product if device is both ping and snmp discoverable true: Even if IP address is not pingable, and snmp fails, still add device to Product based on configuration |
mode | The type of discovery to run Discover: Discover all devices in the ip ranges file Hosts: Discover devices from the host file Manual: Discover using provided configuration Ping Only Discover: Discover all devices in the ip ranges via icmp only Rewalk: Rewalk devices that have already been discovered |
ping_only_force_add | When running a Ping Only Discover, Force add ping only devices for secondary IP addresses of monitored devices (Defaults to false) false: Only add devices into product if device is ping discoverable and doesn't already exist true: Even if IP address is associated to monitored device, add device as a ping only device |
rediscover_custom_data_types | When walking custom data type tables, try to rediscover Custom Data types if already discovered (Defaults to false) false: Only walk tables of entity types already discovered for device true: Walk all snmp tables associated to defined entity types. |
retest_snmp_credentials | re-test snmp credentials for know devices all: Re-test snmp credentials for all existing devices down: Re-test snmp credentials for existing devices which a ping up, but snmp down none: Don't re-test snmp credentials for existing devices |
runPostProcessing | Whether to run discover post-processing steps. Currently this includes Autogrouping and the Hardware Inventory report generation. This will result in a quicker discover but means that the added devices won't be added to any Autogroups or the Hardware Inventory report until the next full discover. (defaults to true) false: Don't perform post processing steps true: Perform post processing steps |
snmp_max_files | Maximum number of walk files opened by an Snmpwalk(Defaults to value in snmp.cfg) |
snmp_max_repetitions | SNMP Max Repetition to use for each walk (Defaults to value in snmp.cfg) |
snmp_retry_count | SNMP Retry Count to use for each walk command (Defaults to 2) |
snmp_timeout | SNMP Timeout in seconds to use for each get command (Defaults to 5) |
snmp_versions | Array of SNMP versions to check during a discovery (defaults to [ 2, 3 ] |
snmp_walk_timeout | SNMP Timeout in seconds to use for each walk command (Defaults value defined in Advanced options or 10) |
snmp_window_size | SNMP Window Size to use for each walk command (Defaults to 10) |
snmperrlog | Enable SNMP error logging (default to false) false: Disable SNMP error logging true: Enable SNMP error logging |
subject | The subject line to use if the 'email' option is specified |
verbose | Verbose level for the output (defaults to 0) 0: Disable verbose output 1: Enable verbose output (low) 2: Enable verbose output (medium) 3: Enable verbose output (high) |
Discover Configuration
Endpoint
discover_config
Description
The configuration options for Statseeker's discovery mechanism
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
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 | A list of Discover Configuration objects associated to IP Address Ranges |
ping_count | Ping Run Count | integer | G, U | Number of passes for the ping discover |
ping_rate | Ping Rate | integer | G, U | Number of pings to send per second |
ping_skip | Ping Skip | integer | G, U | Number of ipaddress to skip between each ping |
ranges | Ranges | object | G | Comma separated discover ranges (using include/exclude syntax) |
snmp_credentials | SNMP Credentials | object | G | A list of SNMP Credentials to use for discovery |
sysdescr | SysDescr | object | G, U | Comma separated SysDescr values to decide which devices to discover |
Discover History
Endpoint
discover_history
Description
This object contains details about current and past discovery and rewalk processes.
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
config | Config | json | G, A (required) | A JSON object containing the configuration options used for the discovery process |
datafile | Data File | string | G, A, U | The filesystem location of the compress data file for the discovery process(This may be removed based on data autorotation) |
details | Details | json | G, A, U | A JSON object containing details about what has occurred in the discovery process |
duration | Duration | integer | G, A, U | The length of time the discovery process has taken |
finish | Finish Time | time | G, A, U | The timestamp that the discovery process finished |
id | ID | integer | G | Unique Identifier for the discovery process |
logfile | Log File | string | G, A, U | The filesystem location of the log file for the discovery process(This may be removed based on log autorotation |
mode | Mode | string | G, A (required) | The mode the discovery process was run inOne of:
|
start | Start Time | time | G, A (required) | The timestamp that the discovery process started |
status | Status | string | G, A, U | The current status of the discovery process |
user | User | string | G, A (required) | The user that triggered the discover process ('auto' if triggered automatically) |
Discover Hosts
Endpoint
discover_hosts
Description
Hosts used for discovery
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
enable | Enabled | integer | G, A, U | Whether this host is enabled for discovery (1 = enabled, 0 = disabled) |
hostname | Hostname | string | G, A (required), U | Name of the host |
id | ID | integer | G | Host identifier |
ipaddress | IP Address | string | G, A (required), U | IP address of the host |
IP Range Configuration
Endpoint
ip_range_config
Description
This defines the IP Ranges
Fields
Field ID | Field Title | Type | Get, Add, Update | Description | ||||
enabled | Enabled | integer | G, A, U | Indicates whether this IP Range Configuration has been enabled. | ||||
id | ID | integer | G, A, U | IP Range Configuration ID | ||||
ip_range | IP Range | json | G, A (required), U | An object containing include and exclude arrays of IPv4 and IPv6 Ranges. | ||||
name | Name | string | G, A (required), U | Name of IP Range Configuration | ||||
snmp_credentials | SNMP Credential IDs | object | G, A, U | Array of SNMP Credential IDs (add and update only)
|
Links
Link | Description | Link Target |
IRCtoSCMapLink | Link to IP Range Configuration to SNMP Credential Map | irc_to_sc_map |
IP Range Configuration to SNMP Credential Map
Endpoint
irc_to_sc_map
Description
This is an intermediate table for linking IP Range Configurations to SNMP Credentials
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G, A, U | SNMP Credential identifier/key |
ip_range_config | IP Range Configuration | integer | G, A (required), U | ID of the IP Range Configuration |
snmp_credential | SNMP Credential ID | integer | G, A (required), U | ID of the SNMP Credential |
Links
Link | Description | Link Target |
ipRangeConfigLink | Link to IP Range Configuration | ip_range_config |
snmpCredentialLink | Link to SNMP Credential | snmp_credential |
SNMP Credential Details
Endpoint
snmp_credential
Description
The saved SNMP Credentials which are used for discovery and associating to SNMP monitored devices
Fields
Field ID | Field Title | Type | Get, Add, Update | Description | ||||
auth_method | Authentication | string | G, A, U | The SNMPv3 Authentication MethodOne of:
|
||||
auth_pass | Authentication Password | string | G, A, U | The Password to use when authenticating an SNMPv3 request | ||||
auth_user | Authentication User | string | G, A, U | The Username to use when authenticating an SNMPv3 request | ||||
community | Community | string | G, A, U | SNMPv1 or SNMPv2 community string | ||||
context | Context | string | G, A, U | The SNMPv3 Context | ||||
id | ID | integer | G | SNMP Credential identifier/key | ||||
ip_range_configs | IP Range Config IDs | object | G, A, U | Array of IP Range Configs IDs (add and update only)
|
||||
name | Name | string | G, A (required), U | Name identifer for SNMP Credentials | ||||
priv_method | Privacy | string | G, A, U | The Privacy Method used when encrypting/decrypting SNMPv3 requests and responsesOne of:
|
||||
priv_pass | Privacy Password | string | G, A, U | The Password to use when encrypting/decrypting SNMPv3 requests and responses | ||||
version | SNMP Version | integer | G, A (required), U | The SNMP version |
Options
Option | Description |
auth_pass_encrypted | Indicates whether auth_pass has already been encrypted when calling add or update false: Indicates that auth_pass has not been encrypted (default if not provided) true: Indicates that auth_pass has already been encrypted |
priv_pass_encrypted | Indicates whether priv_pass has already been encrypted when calling add or update false: Indicates that priv_pass has not been encrypted (default if not provided) true: Indicates that priv_pass has already been encrypted |
Links
Link | Description | Link Target |
IRCtoSCMapLink | Link to IP Range Configuration to SNMP Credential Map | irc_to_sc_map |