{
  "openapi": "3.1.0",
  "info": {
    "title": "Forward Networks: Network Devices API",
    "description": "List the modeled network devices",
    "contact": {
      "email": "support@forwardnetworks.com"
    },
    "license": {
      "name": "MIT",
      "url": "https://spdx.org/licenses/MIT"
    },
    "version": "${apiVersion}"
  },
  "servers": [
    {
      "url": "/"
    }
  ],
  "security": [
    {
      "api_token": []
    }
  ],
  "tags": [
    {
      "name": "Network Devices",
      "description": "List the modeled network devices"
    }
  ],
  "paths": {
    "/api/networks/{networkId}/devices": {
      "get": {
        "tags": [
          "Network Devices"
        ],
        "summary": "Gets a network’s 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": "getDevicesUsingGET",
        "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",
                "const": "tags"
              }
            }
          },
          {
            "name": "snapshotId",
            "in": "query",
            "description": "An optional Snapshot id. If omitted, the network’s latest processed Snapshot is used.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Device"
                  }
                }
              }
            }
          },
          "409": {
            "description": "The system is currently processing this Snapshot.\n\nNote: 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"
                }
              }
            }
          }
        }
      }
    },
    "/api/networks/{networkId}/devices/{deviceName}": {
      "get": {
        "tags": [
          "Network Devices"
        ],
        "summary": "Gets a network device",
        "operationId": "getOneDeviceUsingGET",
        "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",
                "const": "tags"
              }
            }
          },
          {
            "name": "snapshotId",
            "in": "query",
            "description": "An optional Snapshot id. If omitted, the network’s latest processed Snapshot is used.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Device"
                }
              }
            }
          },
          "409": {
            "description": "The system is currently processing this Snapshot.\n\nNote: 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"
                }
              }
            }
          }
        }
      }
    },
    "/api/networks/{networkId}/devices/{deviceName}/files": {
      "get": {
        "tags": [
          "Network Devices"
        ],
        "summary": "Lists a device’s data files",
        "operationId": "getDeviceFilesUsingGET",
        "parameters": [
          {
            "name": "networkId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "deviceName",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "snapshotId",
            "in": "query",
            "description": "An optional Snapshot id. If omitted, the network’s latest processed Snapshot is used.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeviceFiles"
                }
              }
            }
          },
          "409": {
            "description": "The system is currently processing this Snapshot.\n\nNote: 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"
                }
              }
            }
          }
        }
      }
    },
    "/api/networks/{networkId}/devices/{deviceName}/files/{fileName}": {
      "get": {
        "tags": [
          "Network Devices"
        ],
        "summary": "Gets device data file content",
        "description": "Most device data files are text files. Some are binary. A file’s extension indicates its type.\n\nFor convenience, the .txt file extension is optional (can be omitted).",
        "operationId": "getDeviceFileContentUsingGET",
        "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"
            }
          },
          {
            "name": "snapshotId",
            "in": "query",
            "description": "An optional Snapshot id. If omitted, the network’s latest processed Snapshot is used.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "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.\n\nNote: 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": {
              "text/plain;charset=utf-8": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInfo"
                }
              },
              "application/octet-stream": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInfo"
                }
              }
            }
          }
        }
      }
    },
    "/api/networks/{networkId}/missing-devices": {
      "get": {
        "tags": [
          "Network Devices"
        ],
        "summary": "Gets a network’s missing 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": "getMissingDevicesUsingGET",
        "parameters": [
          {
            "name": "networkId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "snapshotId",
            "in": "query",
            "description": "An optional Snapshot id. If omitted, the network’s latest processed Snapshot is used.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "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.\n\nNote: 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"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "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](#network-setup) 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](#network-setup), 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"
            ]
          }
        }
      },
      "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",
          "UNSUPPORTED_VERSION",
          "DEVICE_TYPE_UNDETECTED",
          "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"
        ]
      },
      "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"
            ]
          }
        }
      },
      "DeviceFiles": {
        "type": "object",
        "properties": {
          "files": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DeviceFile"
            }
          }
        }
      },
      "DeviceProcessingError": {
        "type": "string",
        "enum": [
          "LICENSE_EXHAUSTED",
          "MISSING_SIGNATURE",
          "DUPLICATE",
          "PARSER_EXCEPTION",
          "MODELING_EXCEPTION",
          "UNSUPPORTED_VENDOR"
        ]
      },
      "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",
          "ALKIRA_CLOUD"
        ]
      },
      "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"
          }
        }
      },
      "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",
              "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"
            ]
          },
          "possibleTypes": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "aruba_controller_ssh",
                "aruba_switch_ssh",
                "aruba_aos_cx_ssh",
                "128t_conductor_full",
                "128t_conductor",
                "128t_router",
                "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_nxos_aci_ssh",
                "cisco_apic_ssh",
                "cisco_apic_api",
                "cisco_ndo_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",
                "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",
                "silver_peak_edgeconnect_ssh",
                "silver_peak_orchestrator_api",
                "cisco_wireless_ap",
                "prisma_sdwan_ssh",
                "prisma_sdwan_api",
                "pensando_api",
                "cisco_sdwan_ssh",
                "cisco_sdwan_vsmart_ssh",
                "nokia_ssh",
                "brocade_switch_ssh",
                "versa_flexvnf_ssh",
                "versa_switch_ssh",
                "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\"`.",
            "examples": [
              "- cisco_ios_ssh\n- 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\n- nyc-dc01-rtr01"
            ]
          },
          "discoveryMethod": {
            "type": "string",
            "description": "The method/protocol via which this device was discovered.",
            "examples": [
              "LLDP_CDP"
            ],
            "enum": [
              "LLDP_CDP",
              "IBGP",
              "OSPF"
            ]
          }
        }
      },
      "MissingDevices": {
        "type": "object",
        "properties": {
          "devices": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MissingDevice"
            }
          }
        }
      },
      "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",
          "AVAYA",
          "T128",
          "ARUBA",
          "VIASAT",
          "SILVER_PEAK",
          "PENSANDO",
          "FORCEPOINT",
          "BLUECAT",
          "NOKIA",
          "VERSA",
          "BROCADE",
          "EXTREME",
          "DELL",
          "HUAWEI",
          "GD",
          "ALKIRA",
          "EDGE_CORE",
          "FORWARD_CUSTOM"
        ]
      },
      "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",
          "avaya_sr",
          "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"
        ]
      }
    },
    "securitySchemes": {
      "api_token": {
        "type": "http",
        "scheme": "basic"
      }
    }
  }
}