Forward Networks Classic Devices API
Specify the network devices to collect from and model
Specify the network devices to collect from and model
openapi: 3.2.0
info:
title: 'Forward Networks: Complete Aliases Classic Devices API'
description: Model and verify networks
contact:
email: support@forwardnetworks.com
license:
name: MIT
url: https://spdx.org/licenses/MIT
version: '26.6'
servers:
- url: /api
tags:
- name: Classic Devices
description: Specify the network devices to collect from and model
summary: Classic Devices
paths:
/networks/{networkId}/classic-devices:
get:
tags:
- Classic Devices
summary: Get all classic devices
operationId: getClassicDevices
x-position: 1
parameters:
- name: networkId
in: path
required: true
schema:
type: string
- name: with
in: query
schema:
type: array
items:
type: string
enum:
- tags
- locationId
- testResult
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ClassicDevices'
security:
- api_token: []
post:
tags:
- Classic Devices
summary: Add a new classic device
operationId: addClassicDevice
x-position: 3
parameters:
- name: networkId
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/NewClassicDevice'
required: true
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/ClassicDevice'
security:
- api_token: []
patch:
tags:
- Classic Devices
summary: Update specific classic devices
description: 'All JSON properties in the `update` object are optional. Include only the properties you wish
to change.'
operationId: patchClassicDevices
x-position: 8
parameters:
- name: networkId
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ClassicDevicesPatch'
required: true
responses:
'204':
description: No Content
content: {}
security:
- api_token: []
/networks/{networkId}/classic-devices?action=addBatch:
post:
tags:
- Classic Devices
summary: Add new classic devices
operationId: addClassicDevices
x-position: 4
parameters:
- name: networkId
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/NewClassicDevice'
required: true
responses:
'204':
description: No Content
content: {}
security:
- api_token: []
/networks/{networkId}/classic-devices?action=deleteAll:
post:
tags:
- Classic Devices
summary: Delete all of a network’s classic devices
operationId: deleteAllClassicDevices
x-position: 7
parameters:
- name: networkId
in: path
required: true
schema:
type: string
responses:
'204':
description: No Content
content: {}
security:
- api_token: []
/networks/{networkId}/classic-devices?action=deleteBatch:
post:
tags:
- Classic Devices
summary: Delete specific classic devices
operationId: deleteClassicDevices
x-position: 6
parameters:
- name: networkId
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/DeviceCriteria'
required: true
responses:
'204':
description: No Content
content: {}
security:
- api_token: []
/networks/{networkId}/classic-devices?action=getBatch:
post:
tags:
- Classic Devices
summary: Get specific classic devices
operationId: getSpecificClassicDevices
x-position: 2
parameters:
- name: networkId
in: path
required: true
schema:
type: string
- name: with
in: query
schema:
type: array
items:
type: string
enum:
- tags
- locationId
- testResult
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/DeviceNames'
required: true
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ClassicDevices'
security:
- api_token: []
/networks/{networkId}/classic-devices?action=putBatch:
post:
tags:
- Classic Devices
summary: Add or update classic devices
operationId: putClassicDevices
x-position: 5
parameters:
- name: networkId
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/NewClassicDevice'
required: true
responses:
'204':
description: No Content
content: {}
security:
- api_token: []
/networks/{networkId}/classic-devices/{deviceName}:
get:
tags:
- Classic Devices
summary: Get a classic device
operationId: getClassicDevice
x-position: 9
parameters:
- name: networkId
in: path
required: true
schema:
type: string
- name: deviceName
in: path
required: true
schema:
type: string
- name: with
in: query
schema:
type: array
items:
type: string
enum:
- tags
- locationId
- testResult
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ClassicDevice'
security:
- api_token: []
put:
tags:
- Classic Devices
summary: Add or update a classic device
operationId: putClassicDevice
x-position: 10
parameters:
- name: networkId
in: path
required: true
schema:
type: string
- name: deviceName
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/NewClassicDevice'
required: true
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ClassicDevice'
security:
- api_token: []
patch:
tags:
- Classic Devices
summary: Update a classic device
description: 'All JSON properties in the request body are optional. Include only the properties you wish to
change.'
operationId: patchClassicDevice
x-position: 11
parameters:
- name: networkId
in: path
required: true
schema:
type: string
- name: deviceName
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ClassicDevicePatch'
required: true
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ClassicDevice'
security:
- api_token: []
delete:
tags:
- Classic Devices
summary: Delete a classic device
operationId: deleteClassicDevice
x-position: 12
parameters:
- name: networkId
in: path
required: true
schema:
type: string
- name: deviceName
in: path
required: true
schema:
type: string
responses:
'204':
description: No Content
content: {}
security:
- api_token: []
components:
schemas:
ClassicDevicesPatch:
type: object
properties:
names:
type: array
items:
type: string
update:
$ref: '#/components/schemas/ClassicDevicePatch'
SourceConnectivityResult:
type: object
required:
- startTime
- endTime
- savedAt
properties:
startTime:
type: string
description: When this connectivity test began, according to the Collector’s system clock.
examples:
- '2025-05-28T12:33:00.000Z'
endTime:
type: string
description: When this connectivity test ended, according to the Collector’s system clock.
examples:
- '2025-05-28T12:33:33.333Z'
savedAt:
type: string
description: 'When this connectivity test result was saved to the database, according to the server’s system
clock.'
examples:
- '2025-05-28T12:34:56.789Z'
error:
$ref: '#/components/schemas/ConnectivityTestError'
description: The error encountered during the test. Present if the test failed. Absent if the test passed.
examples:
- PING_FAILED
errorPhase:
type: string
description: The test phase during which `error` was encountered. Present if `error` is present.
examples:
- CONNECTION
enum:
- CONNECTION
- AUTHENTICATION
- TYPE_DISCOVERY
- SETUP
- AUTHORIZATION
- QUERY
discoveredType:
$ref: '#/components/schemas/ClassicDeviceType'
description: The device type auto-discovered during the connectivity test.
examples:
- arista_eos_ssh
discoveredCliCredentialId:
type: string
description: 'The `id` of the working CliCredential of type `LOGIN` auto-discovered during the connectivity test. Can only
be present for device types collected via SSH.'
examples:
- L-3
discoveredCliCredential2Id:
type: string
description: 'The `id` of the working CliCredential of type `PRIVILEGED_MODE` (for Cisco-like and Checkpoint devices) or
`SHELL` (for Avi controllers) auto-discovered during the connectivity test. Can only be present for device
types collected via SSH or Telnet.'
examples:
- PM-2
discoveredCliCredential3Id:
type: string
description: 'The `id` of the working CliCredential of type `EXPERT_MODE` (for Checkpoint devices) auto-discovered during
the connectivity test. Can only be present for device types collected via SSH.'
examples:
- EM-3
discoveredHttpCredentialId:
type: string
description: 'The `id` of the working HttpCredential of type `LOGIN` or `API_KEY` auto-discovered during the connectivity
test. Can only be present for device types collected via HTTPS.'
examples:
- H-5
discoveredSnmpCredentialId:
type: string
description: The `id` of the working SnmpCredential auto-discovered during the connectivity test.
examples:
- S-1
hostIps:
type: array
items:
type: string
description: 'The IP addresses to which `host` resolves if it’s a hostname. Contains just `host` itself if it’s an IP
address.'
examples:
- - 10.121.7.13
unauthorizedCommands:
type: array
items:
type: string
description: Commands that failed with an authorization (permission) error during the connectivity test.
examples:
- - show config
- show interfaces status
ClassicDevices:
type: object
properties:
devices:
type: array
items:
$ref: '#/components/schemas/ClassicDevice'
PaginationMode:
type: string
enum:
- KEEP_UNCHANGED
- DISABLE_PAGINATION
- ENABLE_PAGINATION
ClassicDevice:
allOf:
- type: object
required:
- name
- host
properties:
name:
type: string
description: 'A name that’s unique (ignoring case) among all of the network’s collection source names. May consist of
letters, digits, dots, hyphens, and underscores.'
examples:
- my-router
type:
$ref: '#/components/schemas/ClassicDeviceType'
description: Auto-detected during connectivity testing if unspecified.
examples:
- checkpoint_ssh
host:
type: string
description: IP address or hostname used to connect to the device.
examples:
- 10.121.7.13
port:
type: integer
format: int32
minimum: 1
maximum: 65535
description: 'Port used to connect to the device. The default value depends on the collection protocol: 22 for SSH, 443
for HTTPS, etc.'
examples:
- 22
cliCredentialId:
type: string
description: 'The `id` of a CliCredential of type `LOGIN`. Relevant for devices collected via SSH or Telnet. Credential
auto-association will be attempted using credentials configured to allow it if this property is unspecified
and collecting from this device requires this kind of credential.'
examples:
- L-3
cliCredential2Id:
type: string
description: 'The `id` of a CliCredential of type `PRIVILEGED_MODE` (for Cisco-like or Checkpoint devices) or `SHELL` (for
Avi controllers). On Checkpoint, this credential is used for TACACS privilege escalation. Credential
auto-association will be attempted using credentials configured to allow it if this property is unspecified
and collecting from this device requires this kind of credential.'
examples:
- PM-2
cliCredential3Id:
type: string
description: 'The `id` of a CliCredential of type `EXPERT_MODE` (for Checkpoint devices). Can be set with or without a
`PRIVILEGED_MODE` credential for `cliCredential2Id`. Credential auto-association will be attempted using
credentials configured to allow it if this property is unspecified and collecting from this device requires
this kind of credential.'
examples:
- EM-6
httpCredentialId:
type: string
description: 'The `id` of an HttpCredential of type `LOGIN` or `API_KEY`. Relevant for devices collected via HTTPS or
HTTP. Credential auto-association will be attempted using credentials configured to allow it if this
property is unspecified and collecting from this device requires this kind of credential.'
examples:
- H-5
snmpCredentialId:
type: string
description: 'The `id` of an SnmpCredential. Used to collect performance data (counters) if `enableSnmpCollection` is
true. Credential auto-association will be attempted using credentials configured to allow it if this
property is unspecified and collecting from this device requires this kind of credential.'
examples:
- S-4
jumpServerId:
type: string
description: The `id` of the JumpServer that should be used to collect from this device.
examples:
- J-0
disableIpv6Collection:
type: boolean
description: Disables collection of any IPv6 forwarding state on the device. Defaults to false.
examples:
- false
fullCollectionLog:
type: boolean
description: Enables more detailed logging during collection. Defaults to false.
examples:
- false
paginationMode:
$ref: '#/components/schemas/PaginationMode'
description: 'The pagination mode to use during collection. Relevant for devices collected via SSH or Telnet. Defaults to
`DISABLE_PAGINATION`. Per-command pagination (such as appending `| more`) may be used if set to
`ENABLE_PAGINATION` for a device that doesn’t have a per-session pagination mode setting.'
examples:
- KEEP_UNCHANGED
terminalWidth:
type: integer
format: int32
minimum: 80
maximum: 500
description: 'Width of pseudo-terminal in characters. A high value can prevent long lines from wrapping. Defaults to 500.
Relevant for devices collected via SSH or Telnet.'
examples:
- 500
largeRtt:
type: boolean
description: Whether the device has a large round-trip time (requires a longer response timeout).
examples:
- false
minBytesReadPerSec:
type: integer
format: int64
description: 'The minimum read rate in bytes/sec required to prevent collection from failing with a
`SLOW_READ_RATE_DETECTED` error. Defaults to 500.'
examples:
- false
maxConnectionsPerMin:
type: integer
format: int32
description: 'The maximum number of connections to this device that should be attempted per minute. Setting this property
can prevent spurious connectivity test failures if the device’s SSH server is configured with a connection
rate limit.'
examples:
- 10
useFileTransferForLargeOutput:
type: boolean
description: 'Whether to use file transfer instead of printing large command output directly to the shell. This is
currently only supported for Juniper devices when executing routing table commands. The primary purpose is
to avoid printing large outputs directly to the shell, which on Juniper devices can interfere with packet
forwarding performance. Instead, the command output is written to a temporary file on the device and then
transferred over a separate connection. After the transfer is complete, the temporary file is deleted to
prevent unnecessary disk usage on the device.'
examples:
- false
bmpStationHost:
type: string
description: 'IP address or hostname of the BMP station from which BMP collection should be peformed for this device. If
set, a jump server won’t be used for BMP collection.'
examples:
- 10.121.7.33
bgpAndBmpFailureHandling:
type: string
description: How to handle BGP or BMP collection failure. Defaults to `FAIL_DEVICE`.
examples:
- SWITCH_TO_CLI
enum:
- FAIL_DEVICE
- SWITCH_TO_CLI
- ALWAYS_USE_CLI
- ALWAYS_USE_BMP
- CONTINUE_WITHOUT_BGP_DATA
collectBgpAdvertisements:
type: boolean
description: 'Whether BGP advertisements should be collected. Defaults to `false` unless advertisement collection is
required to model a [synthetic device](https://docs.fwd.app/latest/api/synthetic-devices/) connected to this
device.'
examples:
- false
bgpTableType:
type: string
description: 'The BGP route types to collect. Honored only if `collectedBgpAdvertisements` is true. Defaults
to `BOTH`.'
examples:
- BOTH
enum:
- BOTH
- ADJ_RIB_IN
- ADJ_RIB_OUT
bgpPeerType:
type: string
description: 'The BGP peer types from which to collect routes. Honored only if `collectedBgpAdvertisements` is true.
Defaults to `BOTH`.'
examples:
- BOTH
enum:
- BOTH
- EBGP
- IBGP
bgpSubnetsToCollect:
type: array
items:
type: string
description: 'Restricts collection of BGP advertisements to specific subnets if the device supports it. Honored only if
`collectBgpAdvertisements` is `true`.'
examples:
- - 123.223.47.0/24
prompt:
type: string
description: 'A case-insensitive glob pattern used to identify an interactive prompt. When this pattern matches the end of
the prompt, ignoring any trailing whitespace, the Collector will enter the configured `promptResponse`.
Relevant for devices collected via SSH or Telnet.'
examples:
- y/n
promptResponse:
type: string
description: 'What the Collector should enter in response to a device prompt matching `prompt` in order to proceed.
Relevant for devices collected via SSH or Telnet. Required if `prompt` is set.'
examples:
- y
collect:
type: boolean
description: Whether to collect from the device. Defaults to true.
examples:
- false
note:
type: string
description: An optional description or note about the device.
enableSnmpCollection:
type: boolean
description: Whether to collect performance data (counters) via SNMP. Defaults to false.
examples:
- false
highCpuUsage:
type: number
format: float
minimum: 0.75
maximum: 1
description: Threshold at or above which CPU usage is considered high. Defaults to 0.8 (80.0%).
examples:
- 0.85
highMemoryUsage:
type: number
format: float
minimum: 0.75
maximum: 1
description: Threshold at or above which memory usage is considered high. Defaults to 0.9 (90.0%).
examples:
- 0.92
highInputUtilization:
type: number
format: float
minimum: 0.75
maximum: 1
description: 'Threshold at or above which input interface utilization is considered high. Defaults to 0.9
(90.0%).'
examples:
- 0.8
highOutputUtilization:
type: number
format: float
minimum: 0.75
maximum: 1
description: 'Threshold at or above which output interface utilization is considered high. Defaults to 0.9
(90.0%).'
examples:
- 0.88
mediumCpuUsage:
type: number
format: float
minimum: 0.5
maximum: 1
description: Threshold at or above which CPU usage is considered medium high. Has no default value.
examples:
- 0.7
mediumMemoryUsage:
type: number
format: float
minimum: 0.5
maximum: 1
description: Threshold at or above which memory usage is considered medium high. Has no default value.
examples:
- 0.71
mediumInputUtilization:
type: number
format: float
minimum: 0.5
maximum: 1
description: 'Threshold at or above which input interface utilization is considered medium high. Has no
default value.'
examples:
- 0.72
mediumOutputUtilization:
type: number
format: float
minimum: 0.5
maximum: 1
description: 'Threshold at or above which output interface utilization is considered medium high. Has no
default value.'
examples:
- 0.73
cloudLocationId:
type: string
description: 'ID of the cloud location at which this device was discovered. Present for cloud-based virtualized devices
only.'
examples:
- AWS.us-east-1
cloudSetupId:
type: string
description: 'Name of the cloud setup associated with this device’s discovery. Present for cloud-based virtualized devices
only.'
examples:
- my-aws-setup
cloudDiscoverySource:
type: string
description: 'Account name (AWS), Project ID (GCP), or Subscription ID (Azure) associated with this device’s discovery.
Present for cloud-based virtualized devices only.'
examples:
- main
tags:
type: array
items:
type: string
description: Tags assigned to the device. Present only if specifically requested.
locationId:
type: string
description: 'The `id` of the device’s assigned Location (see
[Network Locations](https://docs.fwd.app/latest/api/network-locations/)). Present only if specifically
requested. Defaults to "default" (the Unassigned location).'
examples:
- atl
testResult:
$ref: '#/components/schemas/SourceConnectivityResult'
description: 'The device’s most recent connectivity test result. Present only if specifically requested. Absent if the
device’s connectivity hasn’t been tested since the last substantial edit to the device.'
- $ref: '#/components/schemas/Attribution'
Attribution:
type: object
properties:
createdById:
type: string
description: 'The ID of the user who created this entity, if known. *Note*: The referenced user account might no longer
exist since an administrator can delete accounts.'
examples:
- '456'
createdAt:
type: string
description: When this entity was created, if known.
examples:
- '2021-12-29T16:30:45.111Z'
createdBy:
type: string
description: 'The username of the user who created this entity, if known. Absent if the user account has been
deleted.'
examples:
- me@example.com
updatedById:
type: string
description: 'The ID of the user who most recently updated this entity, if known. *Note*: The referenced user account
might no longer exist since an administrator can delete accounts.'
examples:
- '789'
updatedAt:
type: string
description: When this entity was most recently updated, if known.
examples:
- '2024-10-27T21:44:51.345Z'
updatedBy:
type: string
description: 'The username of the user who most recently updated this entity, if known. Absent if the user account has
been deleted.'
examples:
- you@example.com
DeviceNames:
type: object
properties:
names:
type: array
items:
type: string
ClassicDevicePatch:
type: object
properties:
name:
type: string
description: 'A name that’s unique (ignoring case) among all of the network’s collection source names. May consist of
letters, digits, dots, hyphens, and underscores. Use `null` to clear. Omit to leave the property alone.'
examples:
- my-router
type:
$ref: '#/components/schemas/ClassicDeviceType'
description: 'Auto-detected during connectivity testing if unspecified. Use `null` to clear. Omit to leave the property
alone.'
examples:
- checkpoint_ssh
host:
type: string
description: 'IP address or hostname used to connect to the device. Use `null` to clear. Omit to leave the
property alone.'
examples:
- 10.121.7.13
port:
type: integer
format: int32
minimum: 1
maximum: 65535
description: 'Port used to connect to the device. The default value depends on the collection protocol: 22 for SSH, 443
for HTTPS, etc. Use `null` to clear. Omit to leave the property alone.'
examples:
- 22
cliCredentialId:
type: string
description: 'The `id` of a CliCredential of type `LOGIN`. Relevant for devices collected via SSH or Telnet. Credential
auto-association will be attempted using credentials configured to allow it if this property is unspecified
and collecting from this device requires this kind of credential. Use `null` to clear. Omit to leave the
property alone.'
examples:
- L-3
cliCredential2Id:
type: string
description: 'The `id` of a CliCredential of type `PRIVILEGED_MODE` (for Cisco-like or Checkpoint devices) or `SHELL` (for
Avi controllers). On Checkpoint, this credential is used for TACACS privilege escalation. Credential
auto-association will be attempted using credentials configured to allow it if this property is unspecified
and collecting from this device requires this kind of credential. Use `null` to clear. Omit to leave the
property alone.'
examples:
- PM-2
cliCredential3Id:
type: string
description: 'The `id` of a CliCredential of type `EXPERT_MODE` (for Checkpoint devices). Can be set with or without a
`PRIVILEGED_MODE` credential for `cliCredential2Id`. Credential auto-association will be attempted using
credentials configured to allow it if this property is unspecified and collecting from this device requires
this kind of credential. Use `null` to clear. Omit to leave the property alone.'
examples:
- EM-6
httpCredentialId:
type: string
description: 'The `id` of an HttpCredential of type `LOGIN` or `API_KEY`. Relevant for devices collected via HTTPS or
HTTP. Credential auto-association will be attempted using credentials configured to allow it if this
property is unspecified and collecting from this device requires this kind of credential. Use `null` to
clear. Omit to leave the property alone.'
examples:
- H-5
snmpCredentialId:
type: string
description: 'The `id` of an SnmpCredential. Used to collect performance data (counters) if `enableSnmpCollection` is
true. Credential auto-association will be attempted using credentials configured to allow it if this
property is unspecified and collecting from this device requires this kind of credential. Use `null` to
clear. Omit to leave the property alone.'
examples:
- S-4
jumpServerId:
type: string
description: 'The `id` of the JumpServer that should be used to collect from this device. Use `null` to clear. Omit to
leave the property alone.'
examples:
- J-0
# --- truncated at 32 KB (58 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/forward-networks/refs/heads/main/openapi/forward-networks-classic-devices-api-openapi.yml