Forward Networks Network Devices API
List the modeled network devices
List the modeled network devices
openapi: 3.2.0
info:
title: 'Forward Networks: Complete Aliases Network 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: Network Devices
description: List the modeled network devices
summary: Network Devices
paths:
/networks/{networkId}/devices:
get:
tags:
- Network Devices
summary: Get all network devices
description: 'All glob filter parameters ignore case and support [the common glob
wildcards](https://en.wikipedia.org/wiki/Glob_(programming)#Syntax) (`*`, `?`, `[abc]`, `[a-z]`).'
operationId: getDevices
parameters:
- name: networkId
in: path
required: true
schema:
type: string
- name: name
in: query
description: '`"name"` glob filter'
schema:
type: string
- name: displayName
in: query
description: '`"displayName"` glob filter. Use `?displayName=` to request devices that have no `"displayName"` property
(because it’s the same as `"name"`).'
schema:
type: string
- name: sourceName
in: query
description: '`"sourceName"` glob filter. Use `?sourceName=` to request devices that have no `"sourceName"` property
(because it’s the same as `"name"`).'
schema:
type: string
- name: type
in: query
description: '`"type"` glob filter'
schema:
type: string
- name: vendor
in: query
description: '`"vendor"` glob filter'
schema:
type: string
- name: model
in: query
description: '`"model"` glob filter. Use `?model=` to request devices with no `"model"` property.'
schema:
type: string
- name: platform
in: query
description: '`"platform"` glob filter'
schema:
type: string
- name: osVersion
in: query
description: '`"osVersion"` glob filter. Use `?osVersion=` to request devices with no `"osVersion"` property.'
schema:
type: string
- name: collectionError
in: query
description: '`"collectionError"` glob filter. Use `?collectionError=` to request devices with no `"collectionError"`
property (because collection succeeded). Use `?collectionError=*` to request devices that had a collection
error of any kind.'
schema:
type: string
- name: processingError
in: query
description: '`"processingError"` glob filter. Use `?processingError=` to request devices with no `"processingError"`
property (because processing succeeded). Use `?processingError=*` to request devices that had a processing
error of any kind.'
schema:
type: string
- name: skip
in: query
description: Number of devices to skip (for paging)
schema:
type: integer
format: int32
default: 0
- name: limit
in: query
description: Maximum number of devices desired
schema:
type: integer
format: int32
- name: with
in: query
description: Optional device properties to include
schema:
type: array
items:
type: string
enum:
- tags
- locationId
- $ref: '#/components/parameters/SnapshotId'
responses:
'200':
description: OK
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Device'
'409':
description: 'The system is currently processing this Snapshot.
Note: GET /networks/{networkId}/snapshots/latestProcessed can be used to determine when processing of the
latest Snapshot is done or to identify an alternate Snapshot that has already been processed.'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorInfo'
security:
- api_token: []
/networks/{networkId}/devices/{deviceName}:
get:
tags:
- Network Devices
summary: Get a network device
operationId: getDevice
parameters:
- name: networkId
in: path
required: true
schema:
type: string
- name: deviceName
in: path
required: true
schema:
type: string
- name: with
in: query
description: Optional device properties to include
schema:
type: array
items:
type: string
enum:
- tags
- locationId
- $ref: '#/components/parameters/SnapshotId'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Device'
'409':
description: 'The system is currently processing this Snapshot.
Note: GET /networks/{networkId}/snapshots/latestProcessed can be used to determine when processing of the
latest Snapshot is done or to identify an alternate Snapshot that has already been processed.'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorInfo'
security:
- api_token: []
/networks/{networkId}/devices/{deviceName}/files:
get:
tags:
- Network Devices
summary: List a device’s data files
operationId: getDeviceFiles
parameters:
- name: networkId
in: path
required: true
schema:
type: string
- name: deviceName
in: path
required: true
schema:
type: string
- $ref: '#/components/parameters/SnapshotId'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/DeviceFiles'
'409':
description: 'The system is currently processing this Snapshot.
Note: GET /networks/{networkId}/snapshots/latestProcessed can be used to determine when processing of the
latest Snapshot is done or to identify an alternate Snapshot that has already been processed.'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorInfo'
security:
- api_token: []
/networks/{networkId}/devices/{deviceName}/files/{fileName}:
get:
tags:
- Network Devices
summary: Get device data file content
description: 'Most device data files are text files. Some are binary. A file’s extension indicates its type.
For convenience, the .txt file extension is optional (can be omitted).'
operationId: getDeviceFileContent
parameters:
- name: networkId
in: path
required: true
schema:
type: string
- name: deviceName
in: path
required: true
schema:
type: string
- name: fileName
in: path
required: true
schema:
type: string
- $ref: '#/components/parameters/SnapshotId'
responses:
'200':
description: OK
content:
text/plain;charset=utf-8:
schema:
type: string
format: byte
application/octet-stream:
schema:
type: string
format: byte
'409':
description: 'The system is currently processing this Snapshot.
Note: GET /networks/{networkId}/snapshots/latestProcessed can be used to determine when processing of the
latest Snapshot is done or to identify an alternate Snapshot that has already been processed.'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorInfo'
security:
- api_token: []
/networks/{networkId}/missing-devices:
get:
tags:
- Network Devices
summary: Get missing network devices
description: 'Returns devices that are listed as CDP, LLDP, iBGP or OSPF neighbors of modeled devices but that aren’t yet
included in the network model.'
operationId: getMissingDevices
parameters:
- name: networkId
in: path
required: true
schema:
type: string
- $ref: '#/components/parameters/SnapshotId'
responses:
'200':
description: OK. Devices are sorted by number of neighbors (most first) and secondarily by name.
content:
application/json:
schema:
$ref: '#/components/schemas/MissingDevices'
'409':
description: 'The system is currently processing this Snapshot.
Note: GET /networks/{networkId}/snapshots/latestProcessed can be used to determine when processing of the
latest Snapshot is done or to identify an alternate Snapshot that has already been processed.'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorInfo'
security:
- api_token: []
components:
schemas:
DeviceProcessingError:
type: string
enum:
- LICENSE_EXHAUSTED
- MISSING_SIGNATURE
- DUPLICATE
- PARSER_EXCEPTION
- MODELING_EXCEPTION
- UNSUPPORTED_VENDOR
- UNSUPPORTED_DEVICE_TYPE
DeviceFiles:
type: object
properties:
files:
type: array
items:
$ref: '#/components/schemas/DeviceFile'
MissingDevices:
type: object
properties:
devices:
type: array
items:
$ref: '#/components/schemas/MissingDevice'
DeviceCollectionError:
type: string
enum:
- NONE
- UNKNOWN
- CONNECTION_TIMEOUT
- PROMPT_DISCOVERY_FAILED
- CONNECTION_REFUSED
- AUTHENTICATION_FAILED
- KEY_EXCHANGE_FAILED
- AUTHORIZATION_FAILED
- TWO_FACTOR_AUTHENTICATION_FAILED
- AVI_SHELL_AUTH_FAILED
- AVI_CONTROLLER_WITHOUT_HEALTHY_SERVICE_ENGINES
- T128_CONDUCTOR_WITHOUT_HEALTHY_ROUTERS
- T128_CONFIG_ABSENT
- NETWORK_UNREACHABLE
- IO_ERROR
- AUTHENTICATION_FAILED_WITHOUT_COLLECTION_RETRY
- SESSION_CLOSED
- SESSION_LIMIT_REACHED
- STATE_COLLECTION_FAILED
- PASSWORD_EXPIRED
- JUMP_SERVER_CONNECTION_TIMEOUT
- JUMP_SERVER_PASSWORD_AUTH_FAILED
- JUMP_SERVER_PASSWORD_EXPIRED
- JUMP_SERVER_CONNECTION_FAILED
- JUMP_SERVER_KEY_EXCHANGE_FAILED
- PROXY_SERVER_PING_FAILED
- PROXY_SERVER_PORT_REACHABILITY_FAILED
- PROXY_SERVER_CONNECTION_FAILED
- PROXY_SERVER_AUTHENTICATION_FAILED
- PRIV_PASSWORD_ERROR
- EXPERT_PASSWORD_ERROR
- DUPLICATE_DEVICE
- UNSUPPORTED_VERSION
- DEVICE_TYPE_UNDETECTED
- UNSUPPORTED_DEVICE_TYPE
- BMP_CONNECTION_FAILED
- BMP_CONNECTION_TIMEOUT
- BMP_COLLECTION_FAILED
- BMP_COLLECTION_TIMEOUT
- BMP_COLLECTION_REFUSED
- BMP_NOT_CONFIGURED
- BMP_CONFIGURED_WITH_LOCAL_IP
- BMP_SESSION_ALREADY_ESTABLISHED
- WARN_TYPE_MISMATCH
- DEVICE_IS_CHILD_CONTEXT
- MANAGER_COLLECTOR_NOT_FOUND
- INCOMPLETE_SETUP
- COLLECTION_NOT_FOUND
- INFINITE_LOOP_IN_COMMAND_OUTPUT
- MISSING_FILE
- UNSUPPORTED_VENDOR
- COMMAND_DISABLED
- APIC_CONFIG_COLLECTION_FAILED
- UNEXPECTED_KEY_EXCHANGE_MESSAGE
- UNDISCOVERED_ACI_FABRIC
- SLOW_READ_RATE_DETECTED
- TRANSIENT_SLOW_READ_RATE_DETECTED
- COLLECTION_TIMED_OUT
- COLLECTION_CANCELED
- OPERATION_TIMED_OUT
- CERTIFICATE_CHECK_FAILED
- DEVICE_IN_BAD_STATE
- API_SERVER_FAILED_TO_RESPOND
- PROJECT_VIEW_PERMISSION_MISSING
- NO_SPACE_LEFT_ON_COLLECTOR
- NO_SPACE_LEFT_ON_COLLECTED_DEVICE
- UNSUPPORTED_SSL_CONNECTION
- SOME_OID_FAILED
- TACACS_SESSION_EXPIRED
- CONFIG_COLLECTION_UNAUTHORIZED
- UNRESOLVABLE_HOSTNAME
- FILE_TRANSFER_FAILED
- VELOS_PARTITION_WITHOUT_BLADES
DeviceFile:
type: object
properties:
name:
type: string
examples:
- configuration.txt
bytes:
type: integer
format: int64
examples:
- 1234
command:
type: string
description: 'The custom (user-defined) command that was executed to generate the file. Defined only for
custom_cli files.'
examples:
- net show bridge macs
MissingDevice:
type: object
properties:
name:
type: string
description: A device name different from the names of all network devices already modeled
examples:
- nyc-dc01-rtr02
ipAddresses:
type: array
items:
type: string
examples:
- - 10.10.10.10
type:
type: string
description: Detected device type. Absent if undetermined. Never `"unknown"`.
examples:
- cisco_ios_ssh
enum:
- a10_acos_ssh
- arista_eos_ssh
- cisco_ios_ssh
- cisco_ios_xe_ssh
- cisco_ios_xr_ssh
- cisco_nxos_ssh
- cisco_nxos_aci_ssh
- cisco_apic_api
- juniper_junos_ssh
- f5_ssh
- fortinet_ssh
- hp_comware_ssh
- hp_provision_ssh
- panos_ssh
- esxi_ssh
- netscaler_ssh
- cisco_wireless_ap
- forcepoint_ssh
- versa_flexvnf_ssh
- meraki_mx_api
- meraki_ms_api
- meraki_mr_api
- sonic_dell_enterprise_ssh
- unknown
vendor:
type: string
description: 'Inferred vendor of the missing device. Present when the vendor could be determined from CDP/LLDP data or
MAC address, even if the exact device type is unknown. Absent if the vendor could not be determined.'
examples:
- CISCO
enum:
- CISCO
- JUNIPER
- ARISTA
- PICA8
- F5
- A10
- CHECKPOINT
- HP
- FORTINET
- PALO_ALTO_NETWORKS
- VMWARE
- CITRIX
- CUMULUS
- RIVERBED
- SYMANTEC
- AVI_NETWORKS
- AVAYA
- T128
- ARUBA
- VIASAT
- SILVER_PEAK
- PENSANDO
- FORCEPOINT
- NOKIA
- VERSA
- BROCADE
- EXTREME
- DELL
- HUAWEI
- EDGE_CORE
possibleTypes:
type: array
items:
type: string
enum:
- aruba_controller_ssh
- aruba_switch_ssh
- aruba_aos_cx_ssh
- 128t_conductor_full
- 128t_router
- 128t_conductor
- a10_acos_ssh
- arista_eos_ssh
- avi_controller_ssh
- avi_controller_ssh_cli_user
- avi_controller_ssh_via_host
- avi_controller_https_api
- avi_controller_http_api
- bluecoat_ssh
- cisco_ios_ssh
- cisco_ios_telnet
- cisco_ios_xe_ssh
- cisco_ios_xe_telnet
- cisco_ios_xr_ssh
- cisco_nxos_ssh
- cisco_nxos_telnet
- cisco_asa_ssh
- cisco_asa_telnet
- cisco_asa_admin_ssh
- cisco_asa_child_ssh
- cisco_ftd_ssh
- cisco_fxos_ssh
- cisco_firewalls_on_firepower_ssh
- cisco_fmc_api
- cisco_nxos_aci_ssh
- cisco_ndo_api
- cisco_apic_api
- cisco_apic_only_ssh
- cisco_sg_ssh
- juniper_junos_ssh
- juniper_srx_ssh
- juniper_netscreen_ssh
- pica8_ovs_ofctl_ssh
- f5_ssh
- f5_os_hypervisor_ssh
- checkpoint_ssh
- checkpoint_ssh_nonexpert
- checkpoint_ssh_with_manager
- checkpoint_mgmt_api
- fortinet_ssh
- hp_comware_ssh
- hp_comware_telnet
- hp_provision_ssh
- huawei_switch_ssh
- panos_ssh
- esxi_ssh
- vcenter_api
- velocloud_orchestrator_api
- viasat_encryptor_snmp3
- netscaler_ssh
- cumulus_ssh
- riverbed_steelhead_ssh
- riverbed_interceptor_ssh
- cisco_ucs_ssh
- nsxt_api
- nsx_api
- avaya_sr_ssh
- avaya_sr_telnet
- avaya_ers_ssh
- avaya_ers_telnet
- silver_peak_edgeconnect_ssh
- silver_peak_orchestrator_api
- cisco_wireless_ap
- prisma_sdwan_ssh
- prisma_sdwan_api
- prisma_sdwan_unified_api
- pensando_api
- cisco_sdwan_ssh
- cisco_sdwan_vsmart_ssh
- nokia_ssh
- brocade_switch_ssh
- versa_flexvnf_ssh
- versa_switch_ssh
- versa_director_api
- cisco_encs_nfv_ssh
- extreme_switch_ssh
- meraki_mx_api
- meraki_ms_api
- meraki_mr_api
- mist_dashboard_api
- mist_ap_api
- dell_os6_switch_ssh
- dell_os6_switch_telnet
- dell_os9_switch_ssh
- dell_os9_switch_telnet
- dell_os10_switch_ssh
- dell_os10_switch_telnet
- sonic_dell_enterprise_ssh
- sonic_edge_core_ssh
description: 'Possible device types if `type` wasn''t determined. Present if and only if `type` is absent. Never contains
`"unknown"`.
Deprecated for removal in release 26.8. Use `vendor` instead.'
examples:
- - cisco_ios_ssh
- cisco_ios_xr_ssh
neighbors:
type: array
items:
type: string
description: The names of the modeled devices from which this device was discovered.
examples:
- - nyc-dc01-tor01
- nyc-dc01-rtr01
discoveryMethod:
type: string
description: The method/protocol via which this device was discovered.
examples:
- LLDP_CDP
enum:
- LLDP_CDP
- IBGP
- OSPF
Device:
type: object
properties:
name:
type: string
description: 'The name that uniquely identifies the device in the network. For most devices, this is the user-assigned
[classic device](https://docs.fwd.app/latest/api/classic-devices/) name. For a virtual context, this is the
classic device name plus context name. For a cloud device, this is a globally unique identifier assigned by the
cloud provider.'
examples:
- nyc-dc01-fw02
displayName:
type: string
description: 'The device’s common name, if different from `"name"`. Absent for most network devices. For a cloud device,
this is the name shown in the cloud provider’s console.'
examples:
- nyc-dc01-fw02
sourceName:
type: string
description: 'Name of this device’s collection source (such as a
[classic device](https://docs.fwd.app/latest/api/classic-devices/)), if different from `"name"`. Absent for most
network devices. For a cloud device, this is the cloud setup ID.'
examples:
- nyc-dc01-fw02
type:
$ref: '#/components/schemas/DeviceType'
examples:
- FIREWALL
vendor:
$ref: '#/components/schemas/Vendor'
examples:
- F5
model:
type: string
description: Absent if the device model name is unknown.
examples:
- BIG-IP Virtual Edition
platform:
$ref: '#/components/schemas/VendorOs'
examples:
- f5
osVersion:
type: string
description: Absent if the OS version is unknown.
examples:
- 11.6.1
managementIps:
type: array
items:
type: string
description: Absent if no management IP addresses are known.
examples:
- - 10.10.10.10
collectionError:
$ref: '#/components/schemas/DeviceCollectionError'
description: 'Absent if there was no collection error. "NONE" never occurs and will soon be removed from the
value list.'
examples:
- AUTHENTICATION_FAILED
processingError:
$ref: '#/components/schemas/DeviceProcessingError'
description: Absent if there was no processing error.
examples:
- LICENSE_EXHAUSTED
tags:
type: array
items:
type: string
description: Tags assigned to the device. Present only if specifically requested.
examples:
- - SEC
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
DeviceType:
type: string
enum:
- UNKNOWN
- ROUTER
- SWITCH
- VSWITCH
- FIREWALL
- LOADBALANCER
- BUNDLED_ROUTER
- CIRCUIT
- L2_VPN_SERVICE
- MISSING_PEER
- MPLS_VPN_SERVICE
- INTERNET_SERVICE
- INTRANET_SERVICE
- SYNTHETIC_ENCRYPTOR
- HYPERVISOR
- CONTROLLER
- WAN_OPTIMIZER
- OPENFLOW_SWITCH
- SD_WAN
- RIVERBED_INTERCEPTOR
- WIFI_AP
- ENCRYPTOR
- DDI
- NIC
- AWS_CLOUD
- AWS_SUBNET
- AWS_RT
- AWS_INTERNET_GW
- AWS_NAT_GW
- AWS_VPN_GW
- AWS_LB
- AWS_GLOBAL_ACCELERATOR
- AWS_DIRECT_CONNECT_GW
- AWS_TRANSIT_GW
- AWS_LOCAL_GW
- AWS_NETWORK_FIREWALL
- AWS_GATEWAY_LB
- AWS_SERVICE_ENDPOINT
- EDGE_VM
- AZURE_CLOUD
- AZURE_SUBNET
- AZURE_VNET
- AZURE_VNET_GW
- AZURE_FIREWALL
- AZURE_APP_GW
- AZURE_FRONTDOOR
- AZURE_LB
- AZURE_VWAN_HUB
- AZURE_VPN_GATEWAY
- AZURE_P2S_VPN_GATEWAY
- AZURE_EXPRESS_ROUTE_GATEWAY
- AZURE_VIRTUAL_APPLIANCE
- AZURE_EXPRESS_ROUTE_CIRCUIT
- GCP_CLOUD
- GCP_RT
- GCP_SUBNET
- GCP_LB
- GCP_TRAFFIC_DIRECTOR
- GCP_VPN_GW
- GCP_NAT_GW
- GCP_SERVICE_ATTACHMENT
- GCP_INTERCEPT_DEPLOYMENT
- ALKIRA_CLOUD
VendorOs:
type: string
enum:
- unknown
- circuit
- l2_vpn_service
- missing_peer
- mpls_vpn_service
- internet_service
- intranet_service
- encryptor
- alkira_portal
- arista_eos
- avi_vantage
- bluecoat
- cisco_ios
- cisco_ios_xe
- cisco_ios_xr
- cisco_nxos
- cisco_asa
- cisco_ftd
- cisco_fxos
- cisco_nxos_aci
- cisco_apic
- cisco_sg
- cisco_wireless
- viptela
- juniper_junos
- juniper_srx
- juniper_netscreen
- linux_ovs_ofctl
- pica8_ovs_ofctl
- f5
- f5_os_hypervisor
- a10_acos
- checkpoint
- hp_provision
- hp_comware
- fortinet
- pan_os
- esxi
- citrix_netscaler
- cumulus
- riverbed_steelhead
- riverbed_interceptor
- 128t
- aruba_switch
- aruba_aos_cx
- aruba_wifi_controller
- silver_peak_edgeconnect
- pensando
- cloud_genix
- forcepoint
- aws_cloud
- aws_subnet
- aws_rt
- aws_internet_gw
- aws_nat_gw
- aws_vpn_gw
- aws_direct_connect_gw
- aws_lb
- aws_global_accelerator
- aws_transit_gw
- aws_local_gw
- aws_network_firewall
- aws_gateway_lb
- aws_service_endpoint
- azure_cloud
- azure_subnet
- azure_vnet
- azure_vnet_gw
- azure_firewall
- azure_app_gw
- azure_frontdoor
- azure_lb
- azure_vwan_hub
- azure_vpn_gateway
- azure_p2s_vpn_gateway
- azure_express_route_gateway
- azure_virtual_appliance
- azure_express_route_circuit
- google_cloud
- gcp_rt
- gcp_subnet
- gcp_lb
- gcp_traffic_director
- gcp_vpn_gw
- gcp_nat_gw
- gcp_service_attachment
- gcp_intercept_deployment
- avaya_sr
- avaya_ers
- viasat_encryptor
- nokia
- huawei_switch
- versa_sase
- versa_switch
- brocade_switch
- cisco_encs_nfv
- extreme_nos
- meraki_ms
- meraki_mr
- meraki_mx
- mist_ap
- dell_os6
- dell_os9
- dell_os10
- dell_sonic
- gd_encryptor
- edge_core_sonic
- zscaler_zpa
- zscaler_app_connector
Vendor:
type: string
enum:
- UNKNOWN
- CISCO
- JUNIPER
- ARISTA
- PICA8
- F5
- A10
- CHECKPOINT
- HP
- FORTINET
- PALO_ALTO_NETWORKS
- VMWARE
- CITRIX
- CUMULUS
- RIVERBED
- LINUX_GENERIC
- AMAZON
- SYMANTEC
- AVI_NETWORKS
- MICROSOFT
- GOOGLE
- IBM
- AVAYA
- T128
- ARUBA
- VIASAT
- SILVER_PEAK
- PENSANDO
- FORCEPOINT
- BLUECAT
- NOKIA
- VERSA
- BROCADE
- EXTREME
- DELL
- HUAWEI
- GD
- ALKIRA
- EDGE_CORE
- ZSCALER
- FORWARD_CUSTOM
ErrorInfo:
type: object
required:
- httpMethod
- apiUrl
- message
properties:
httpMethod:
type: string
examples:
- GET
enum:
- GET
- HEAD
- POST
- PUT
- PATCH
- DELETE
apiUrl:
type: string
examples:
- /api/version
message:
type: string
description: A description of the error
reason:
type: string
parameters:
SnapshotId:
name: snapshotId
in: query
description: An optional Snapshot id. If omitted, the network’s latest processed Snapshot is used.
schema:
type: string
securitySchemes:
api_token:
type: http
scheme: basic