{
  "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" : "/"
    }
  ],
  "tags" : [
    {
      "name" : "Network Devices",
      "description" : "Device Controller"
    }
  ],
  "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",
            "description" : "networkId",
            "required" : true,
            "style" : "simple",
            "explode" : false,
            "schema" : {
              "type" : "string"
            }
          },
          {
            "name" : "name",
            "in" : "query",
            "description" : "`\"name\"` glob filter",
            "required" : false,
            "allowEmptyValue" : false,
            "style" : "form",
            "explode" : true,
            "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\"`).",
            "required" : false,
            "allowEmptyValue" : false,
            "style" : "form",
            "explode" : true,
            "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\"`).",
            "required" : false,
            "allowEmptyValue" : false,
            "style" : "form",
            "explode" : true,
            "schema" : {
              "type" : "string"
            }
          },
          {
            "name" : "type",
            "in" : "query",
            "description" : "`\"type\"` glob filter",
            "required" : false,
            "allowEmptyValue" : false,
            "style" : "form",
            "explode" : true,
            "schema" : {
              "type" : "string"
            }
          },
          {
            "name" : "vendor",
            "in" : "query",
            "description" : "`\"vendor\"` glob filter",
            "required" : false,
            "allowEmptyValue" : false,
            "style" : "form",
            "explode" : true,
            "schema" : {
              "type" : "string"
            }
          },
          {
            "name" : "model",
            "in" : "query",
            "description" : "`\"model\"` glob filter. Use `?model=` to request devices with no `\"model\"` property.",
            "required" : false,
            "allowEmptyValue" : false,
            "style" : "form",
            "explode" : true,
            "schema" : {
              "type" : "string"
            }
          },
          {
            "name" : "platform",
            "in" : "query",
            "description" : "`\"platform\"` glob filter",
            "required" : false,
            "allowEmptyValue" : false,
            "style" : "form",
            "explode" : true,
            "schema" : {
              "type" : "string"
            }
          },
          {
            "name" : "osVersion",
            "in" : "query",
            "description" : "`\"osVersion\"` glob filter. Use `?osVersion=` to request devices with no `\"osVersion\"` property.",
            "required" : false,
            "allowEmptyValue" : false,
            "style" : "form",
            "explode" : true,
            "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.",
            "required" : false,
            "allowEmptyValue" : false,
            "style" : "form",
            "explode" : true,
            "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.",
            "required" : false,
            "allowEmptyValue" : false,
            "style" : "form",
            "explode" : true,
            "schema" : {
              "type" : "string"
            }
          },
          {
            "name" : "skip",
            "in" : "query",
            "description" : "Number of devices to skip (for paging)",
            "required" : false,
            "allowEmptyValue" : false,
            "style" : "form",
            "explode" : true,
            "schema" : {
              "type" : "integer",
              "format" : "int32",
              "default" : 0
            }
          },
          {
            "name" : "limit",
            "in" : "query",
            "description" : "Maximum number of devices desired",
            "required" : false,
            "allowEmptyValue" : false,
            "style" : "form",
            "explode" : true,
            "schema" : {
              "type" : "integer",
              "format" : "int32"
            }
          },
          {
            "name" : "with",
            "in" : "query",
            "description" : "Optional device properties to include",
            "required" : false,
            "allowEmptyValue" : false,
            "style" : "form",
            "explode" : true,
            "schema" : {
              "type" : "array",
              "items" : {
                "type" : "string",
                "enum" : [
                  "tags"
                ]
              }
            }
          },
          {
            "name" : "snapshotId",
            "in" : "query",
            "description" : "An optional Snapshot id. If omitted, the network’s latest processed Snapshot is used.",
            "required" : false,
            "allowEmptyValue" : false,
            "style" : "form",
            "explode" : true,
            "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"
                }
              }
            }
          }
        },
        "deprecated" : false,
        "security" : [
          {
            "api_token" : [ ]
          }
        ]
      }
    },
    "/api/networks/{networkId}/devices/{deviceName}" : {
      "get" : {
        "tags" : [
          "Network Devices"
        ],
        "summary" : "Gets a network device",
        "operationId" : "getOneDeviceUsingGET",
        "parameters" : [
          {
            "name" : "networkId",
            "in" : "path",
            "description" : "networkId",
            "required" : true,
            "style" : "simple",
            "explode" : false,
            "schema" : {
              "type" : "string"
            }
          },
          {
            "name" : "deviceName",
            "in" : "path",
            "description" : "deviceName",
            "required" : true,
            "style" : "simple",
            "explode" : false,
            "schema" : {
              "type" : "string"
            }
          },
          {
            "name" : "with",
            "in" : "query",
            "description" : "Optional device properties to include",
            "required" : false,
            "allowEmptyValue" : false,
            "style" : "form",
            "explode" : true,
            "schema" : {
              "type" : "array",
              "items" : {
                "type" : "string",
                "enum" : [
                  "tags"
                ]
              }
            }
          },
          {
            "name" : "snapshotId",
            "in" : "query",
            "description" : "An optional Snapshot id. If omitted, the network’s latest processed Snapshot is used.",
            "required" : false,
            "allowEmptyValue" : false,
            "style" : "form",
            "explode" : true,
            "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"
                }
              }
            }
          }
        },
        "deprecated" : false,
        "security" : [
          {
            "api_token" : [ ]
          }
        ]
      }
    },
    "/api/networks/{networkId}/devices/{deviceName}/files" : {
      "get" : {
        "tags" : [
          "Network Devices"
        ],
        "summary" : "Lists a device’s data files",
        "operationId" : "getDeviceFilesUsingGET",
        "parameters" : [
          {
            "name" : "networkId",
            "in" : "path",
            "description" : "networkId",
            "required" : true,
            "style" : "simple",
            "explode" : false,
            "schema" : {
              "type" : "string"
            }
          },
          {
            "name" : "deviceName",
            "in" : "path",
            "description" : "deviceName",
            "required" : true,
            "style" : "simple",
            "explode" : false,
            "schema" : {
              "type" : "string"
            }
          },
          {
            "name" : "snapshotId",
            "in" : "query",
            "description" : "An optional Snapshot id. If omitted, the network’s latest processed Snapshot is used.",
            "required" : false,
            "allowEmptyValue" : false,
            "style" : "form",
            "explode" : true,
            "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"
                }
              }
            }
          }
        },
        "deprecated" : false,
        "security" : [
          {
            "api_token" : [ ]
          }
        ]
      }
    },
    "/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",
            "description" : "networkId",
            "required" : true,
            "style" : "simple",
            "explode" : false,
            "schema" : {
              "type" : "string"
            }
          },
          {
            "name" : "deviceName",
            "in" : "path",
            "description" : "deviceName",
            "required" : true,
            "style" : "simple",
            "explode" : false,
            "schema" : {
              "type" : "string"
            }
          },
          {
            "name" : "fileName",
            "in" : "path",
            "description" : "fileName",
            "required" : true,
            "style" : "simple",
            "explode" : false,
            "schema" : {
              "type" : "string"
            }
          },
          {
            "name" : "snapshotId",
            "in" : "query",
            "description" : "An optional Snapshot id. If omitted, the network’s latest processed Snapshot is used.",
            "required" : false,
            "allowEmptyValue" : false,
            "style" : "form",
            "explode" : true,
            "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"
                }
              }
            }
          }
        },
        "deprecated" : false,
        "security" : [
          {
            "api_token" : [ ]
          }
        ]
      }
    },
    "/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",
            "description" : "networkId",
            "required" : true,
            "style" : "simple",
            "explode" : false,
            "schema" : {
              "type" : "string"
            }
          },
          {
            "name" : "snapshotId",
            "in" : "query",
            "description" : "An optional Snapshot id. If omitted, the network’s latest processed Snapshot is used.",
            "required" : false,
            "allowEmptyValue" : false,
            "style" : "form",
            "explode" : true,
            "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"
                }
              }
            }
          }
        },
        "deprecated" : false,
        "security" : [
          {
            "api_token" : [ ]
          }
        ]
      }
    }
  },
  "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" : {
            "type" : "string",
            "examples" : [
              "FIREWALL"
            ],
            "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"
            ]
          },
          "vendor" : {
            "type" : "string",
            "examples" : [
              "F5"
            ],
            "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"
            ]
          },
          "model" : {
            "type" : "string",
            "description" : "Absent if the device model name is unknown.",
            "examples" : [
              "BIG-IP Virtual Edition"
            ]
          },
          "platform" : {
            "type" : "string",
            "examples" : [
              "f5"
            ],
            "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"
            ]
          },
          "osVersion" : {
            "type" : "string",
            "description" : "Absent if the OS version is unknown.",
            "examples" : [
              "11.6.1"
            ]
          },
          "managementIps" : {
            "type" : "array",
            "description" : "Absent if no management IP addresses are known.",
            "examples" : [
              [
                "10.10.10.10"
              ]
            ],
            "items" : {
              "type" : "string"
            }
          },
          "collectionError" : {
            "type" : "string",
            "description" : "Absent if there was no collection error. \"NONE\" never occurs and will soon be removed from the value list.",
            "examples" : [
              "AUTHENTICATION_FAILED"
            ],
            "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",
              "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",
              "FILE_TRANSFER_FAILED"
            ]
          },
          "processingError" : {
            "type" : "string",
            "description" : "Absent if there was no processing error.",
            "examples" : [
              "LICENSE_EXHAUSTED"
            ],
            "enum" : [
              "LICENSE_EXHAUSTED",
              "MISSING_SIGNATURE",
              "DUPLICATE",
              "PARSER_EXCEPTION",
              "MODELING_EXCEPTION",
              "UNSUPPORTED_VENDOR"
            ]
          },
          "tags" : {
            "type" : "array",
            "description" : "Tags assigned to the device. Present only if specifically requested.",
            "examples" : [
              [
                "SEC"
              ]
            ],
            "items" : {
              "type" : "string"
            }
          }
        }
      },
      "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"
            }
          }
        }
      },
      "ErrorInfo" : {
        "required" : [
          "apiUrl",
          "httpMethod",
          "message"
        ],
        "type" : "object",
        "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",
            "examples" : [
              [
                "10.10.10.10"
              ]
            ],
            "items" : {
              "type" : "string"
            }
          },
          "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",
            "description" : "Possible device types if `type` wasn’t determined. Present if and only if `type` is absent. Never contains `\"unknown\"`.",
            "examples" : [
              [
                "cisco_ios_ssh",
                "cisco_ios_xr_ssh"
              ]
            ],
            "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_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"
              ]
            }
          },
          "neighbors" : {
            "type" : "array",
            "description" : "The names of the modeled devices from which this device was discovered.",
            "examples" : [
              [
                "nyc-dc01-tor01",
                "nyc-dc01-rtr01"
              ]
            ],
            "items" : {
              "type" : "string"
            }
          },
          "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"
            }
          }
        }
      }
    },
    "securitySchemes" : {
      "api_token" : {
        "type" : "http",
        "scheme" : "basic"
      }
    }
  }
}