Forward Networks Classic Devices API
Specify the network devices to collect from and model
Specify the network devices to collect from and model
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/forward-networks-classic-devices-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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'
DeviceCriteria:
type: object
required:
- names
properties:
names:
type: array
items:
type: string
examples:
- - router_01
- router_02
NewClassicDevice:
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
ClassicDevices:
type: object
properties:
devices:
type: array
items:
$ref: '#/components/schemas/ClassicDevice'
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:
# --- 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