Forward Networks Classic Devices API

Specify the network devices to collect from and model

OpenAPI Specification

forward-networks-classic-devices-api-openapi.yml Raw ↑
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